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.yamltest/ 外,顶层常见 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.json5build-profile.json5hvigorfile.tsindex.etssrc/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/
相关推荐
Latte Moments开发1 小时前
Harmony鸿蒙实战开发-浏览器app【源码在文末】
华为·harmonyos
柒儿吖1 小时前
SSCom 重构全记录:用 Rust 把串口调试助手送上鸿蒙 PC、macOS、Windows和Linux
测试工具·rust·harmonyos
李游Leo1 小时前
HarmonyOS 7 端侧 AI 视觉能力实战 06:把识别、增强与搜索串成完整处理链
harmonyos
大雷神1 小时前
【共创稿事节】ArkGraphics 3D开发环境安装实战:从官网下载编辑器,到 DevEco Studio 离线装插件
harmonyos
李游Leo1 小时前
HarmonyOS 7 实战开发 02:用状态驱动复杂页面交互
harmonyos
大雷神1 小时前
【共创稿事节】HarmonyOS ArkGraphics 3D 实操——给智能音箱做一台结构探索台
harmonyos
李游Leo2 小时前
HarmonyOS 7 性能优化:List 长列表懒加载与缓存实践
harmonyos
威哥爱编程3 小时前
HarmonyOS 碰一碰与隔空传送实战:真正的坑在 3 秒铁律和生命周期
harmonyos
威哥爱编程3 小时前
HarmonyOS 扫码直达接入实战:系统扫、应用落,三步送用户进履约页
华为·harmonyos·arkts
威哥爱编程3 小时前
HarmonyOS 6.0 智感握姿实战:一道安检门、五态分诊、一静一响两个坑
华为·harmonyos·arkts