ai-generate-template-mobile-shell
v0.1.0
Published
移动端原生壳模板(H5 + 原生套壳,iOS / Android / HarmonyOS 三端,统一 JSBridge / HeBridge)
Maintainers
Readme
ai-generate-template-mobile-shell
移动端原生壳模板脚手架:H5 + 原生套壳(WebView),一次拉起 iOS / Android / HarmonyOS 三端壳工程,内置统一 JSBridge(HeBridge,IDL 驱动、三端协议一致)。
快速开始
npx ai-generate-template-mobile-shell my-app \
--platforms ios,android,harmony \
--appId com.your.app \
--appName 我的应用不带参数会交互式询问:项目名 / 平台 / appId / 显示名。
生成后:
my-app/
├── ios/ # WKWebView 壳(Xcode,含 .xcodeproj)
├── android/ # 系统 WebView 壳(Android Studio / Gradle)
├── harmony/ # ArkWeb 壳(DevEco Studio)
├── bridge-protocol/ # IDL + codegen(改协议/能力后重生成三端桥)
└── shell.config.json # 本应用配置(appId/能力/加载方式…)各端打开运行
- iOS:
cd my-app/ios && open HeShell.xcodeproj→ Run。新增源码文件后重跑xcodegen generate --spec project.yml(需brew install xcodegen)。 - Android:Android Studio 打开
my-app/android→ Sync → Run。 - HarmonyOS:DevEco Studio 打开
my-app/harmony→ Sync → Run。⚠️ 套壳页只能 Run,不能 Preview(Previewer 不支持 Web 组件/@ohos 原生能力,报00402015属正常)。
壳里已内置(三端一致)
- 统一 JSBridge:
window.__heBridge+ 生成的 Router(信封/版本/origin 白名单/权限/派发/回发)。 - 能力模块:core / app / device / ui / navigation / storage / session(必内置)+ media(scanCode、chooseImage 已实现)等可选。
- 配置驱动:
shell.config.json→GeneratedShell(appId、能力、origin 白名单、按能力推导的最小权限)。 - H5 demo 页(
www/index.html)自检 handshake + device.getInfo,并有各能力按钮。
改协议 / 加能力
编辑 shell.config.json(选装能力 → 自动推导权限)或 bridge-protocol/idl(改 JSBridge 协议),然后:
cd my-app/bridge-protocol/codegen && npm i
npm run gen # IDL → 三端桥 + H5 SDK
npm run scaffold # shell.config.json → 三端配置 + 最小权限清单
# 再把 generated/ 下的桥与配置同步回各端壳(见 bridge-protocol/codegen/README.md)说明(诚实边界)
- 三端壳源码均已对各自真实 SDK 编译验证;iOS/Android 已在模拟器实跑(handshake / device.getInfo / storage / chooseImage 截图为证),Harmony 已用 DevEco hvigor 构建出 HAP。
media里scanCode/chooseImage为完整实现,takePhoto/chooseFile/saveImage/previewImage为扩展点(返回UNAVAILABLE,按需补充)。- 交互式能力(扫码/选图等)在 H5 侧需用长超时调用(默认 15s 太短);demo 已用
{ timeout: 120000 }。 - 内部工程名保持
HeShell/ 包名com.hehe.hebridge.shell(不影响 App 身份,App 身份由 appId + 显示名决定);如需改内部包名请自行全局替换。
