OpenHarmony 工程结构剖析

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/
相关推荐
网络豆5 小时前
开源鸿蒙平台 CMP 三方库「navigation-compose-extended」适配全流程
华为·开源·harmonyos
2601_949480066 小时前
开源鸿蒙平台 CMP 三方库「multiplatform-markdown-renderer」适配全流程
华为·开源·harmonyos
威哥爱编程9 小时前
HarmonyOS 7 Agent 开发实战 10:降级兜底与重试
agent·harmonyos
威哥爱编程9 小时前
HarmonyOS 7 Agent 开发实战 11:并发多会话隔离
agent·harmonyos
威哥爱编程9 小时前
HarmonyOS 7 Agent 开发实战 12:人机协同与人工接管
agent·harmonyos
鸿蒙开发9 小时前
鸿蒙动态表单实战:用 @hmkit/validator 处理条件必填与错误联动
harmonyos
行者-全栈开发10 小时前
【共创稿事节】HarmonyOS 三方库工程化集成:从 ohpm 引入到三方库鸿蒙化的完整闭环
harmonyos·鸿蒙·har·三方库·ohpm·框架适配
网络豆11 小时前
开源鸿蒙平台 CMP 三方库「tanstack-table-kmp」适配全流程
华为·开源·harmonyos
贾伟康12 小时前
【共创稿事节】食材百科页的懒加载改造:LazyForEach、IDataSource 与缓存窗口的三次迭代
性能优化·harmonyos·arkts·lazyforeach·列表加载
SZYSK12 小时前
一套人员主数据,三套事务:通行、消费、人证比对如何分事件类型
物联网·算法·harmonyos