OpenHarmony 工程结构剖析
欢迎大家 加入跨平台开发者社区。
本文说明 Flutter 在 OpenHarmony(OHOS) 侧的工程形态:纯 OHOS 应用 、多平台应用 、为存量工程补充 ohos/ ,以及 Plugin 的目录约定。
两类场景
| 类型 | 说明 |
|---|---|
| 应用 | lib/ 与 pubspec.yaml 多端共享;宿主与构建在仓库的 ohos/ 下(DevEco / hvigor)。 |
| 插件 | Dart 在包根 lib/;平台实现在各平台子目录,OHOS 一般为包根下的 ohos/ ,example/ 可再带一套应用级 ohos/。 |
1. 新建仅支持 OHOS 的应用
减少无关平台目录、仓库更干净:
bash
flutter create --platforms ohos my_ohos_app
cd my_ohos_app
目录要点
my_ohos_app/
├── lib/ # Dart 入口(如 main.dart)
├── pubspec.yaml
├── test/
└── ohos/ # OpenHarmony 工程根
├── AppScope/ # app.json5、应用级资源
├── entry/ # 主模块:Ability、页面、module.json5
├── oh-package.json5 # OHOS 侧依赖
├── build-profile.json5
├── hvigorfile.ts
├── hvigorconfig.ts
├── package.json # 常配合 flutter-hvigor-plugin
└── node_modules/ # 本地路径因 SDK 安装位置而异,不必与文档逐字一致
2. 新建多平台应用(含 Android、iOS、OHOS 等)
bash
flutter create my_app
cd my_app
除 lib/、pubspec.yaml、test/ 外,顶层常见 android/、ios/、web/、windows/、linux/、macos/、ohos/ 。其中 ohos/ 内部布局与上一节「仅 OHOS」工程中的 ohos/ 一致(AppScope、entry、hvigor、oh-package 等)。
3. 为现有 Flutter 工程添加 OHOS
在工程根目录执行:
bash
flutter create --platforms ohos .
成功后新增 ohos/,典型结构如下(与新建模板一致,便于对照 DevEco):
your_flutter_project/
├── lib/ # 原有 Dart,多端复用
├── android/ # 若曾创建
├── ios/
├── ohos/ # 本次新增
│ ├── AppScope/
│ │ ├── app.json5
│ │ └── resources/
│ ├── build-profile.json5
│ ├── entry/
│ │ ├── build-profile.json5
│ │ ├── hvigorfile.ts
│ │ ├── oh-package.json5
│ │ └── src/main/
│ │ ├── ets/ # EntryAbility、pages/Index 等
│ │ ├── module.json5
│ │ └── resources/
│ ├── hvigorfile.ts
│ ├── local.properties
│ ├── oh-package.json5
│ └── package.json
├── pubspec.yaml
└── ...
引擎与嵌入相关 HAR、原生库等多通过 oh-package.json5 / overrides 等 引入。
4. 插件(Plugin)与 OHOS
4.1 为已有插件增加 OHOS 平台
在插件根目录执行:
bash
flutter create . --template=plugin --platforms=ohos
常见新增内容:
- 插件根目录
ohos/:oh-package.json5、build-profile.json5、hvigorfile.ts、index.ets、src/main/...(ArkTS 实现以模板为准)。 example/:若生成示例应用,其下的example/ohos/与独立应用的ohos/结构同类,用于调试插件。
4.2 新建多平台插件(含 Android、iOS、OHOS)
bash
flutter create --org com.example --template=plugin --platforms=android,ios,ohos hello
4.3 新建仅支持 OHOS 的插件
bash
flutter create --org com.example --template=plugin --platforms=ohos hello
插件仓库层次(示意)
hello/
├── lib/ # Dart:对外 API、MethodChannel 等
├── ohos/ # OpenHarmony 平台实现
├── example/
│ ├── lib/
│ └── ohos/ # 示例 App 的 OHOS 工程
├── pubspec.yaml
└── test/