鸿蒙版Flutter工程结构剖析

0 评论 100 浏览 0 收藏 6 分钟

在移动应用开发领域,跨平台框架Flutter凭借其高效和灵活的特性,赢得了众多开发者的青睐。当Flutter与新兴的操作系统OpenHarmony相遇,又会碰撞出怎样的火花?本文将深入剖析Flutter在OpenHarmony侧的工程结构,详细介绍纯OpenHarmony应用、多平台应用、为存量工程补充OpenHarmony模块以及插件的目录约定,为开发者们呈现一个清晰的开发架构蓝图。

本文说明 Flutter 在 OpenHarmony(OHOS) 侧的工程形态:纯 OHOS 应用、多平台应用、为存量工程补充 ohos/,以及 Plugin 的目录约定。

两类场景

类型说明应用lib/ 与 pubspec.yaml 多端共享;宿主与构建在仓库的 ohos/ 下(DevEco / hvigor)。插件Dart 在包根 lib/;平台实现在各平台子目录,OHOS 一般为包根下的 ohos/,example/ 可再带一套应用级 ohos/。

1. 新建仅支持 OHOS 的应用

减少无关平台目录、仓库更干净:

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 等)

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

在工程根目录执行:

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 平台

在插件根目录执行:

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)

flutter create –org com.example –template=plugin –platforms=android,ios,ohos hello

4.3 新建仅支持 OHOS 的插件

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/

本文由人人都是产品经理作者【null】,微信公众号:【nutpi】,原创/授权 发布于人人都是产品经理,未经许可,禁止转载。

题图来自Unsplash,基于 CC0 协议。

更多精彩内容,请关注人人都是产品经理微信公众号或下载App
评论
评论请登录
  1. 目前还没评论,等你发挥!