开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,复用现有 Flutter 生态资源。该项目是 Flutter SDK 的 OpenHarmony 适配版本,基于 Flutter 官方 3.27.4 版本构建,支持创建、构建、运行等多种开发指令。【此简介由AI生成】
Flutter SDK 仓库
仓库说明
本仓库是 Flutter SDK 的 OpenHarmony 适配版本,由 OpenHarmony-Flutter 团队维护。开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,复用现有 Flutter 生态资源。
该版本分支基于 Flutter 官方社区 3.27.4 版本构建。
版本规划与分支策略请参见:Flutter OH 版本规划与分支策略
开发指南
升级指导
支持指令
已适配 OpenHarmony 开发的指令列表:
| 指令名称 | 指令描述 | 使用说明 |
|---|---|---|
| doctor | 环境检测 | flutter doctor |
| config | 环境配置 | flutter config --<key> <value> |
| create | 创建新项目 | flutter create --platforms [ohos,android,ios] --org <org> <appName> |
| create | 创建module模板 | flutter create -t module <module_name> |
| create | 创建plugin模板 | flutter create -t plugin --platforms [ohos,android,ios] <plugin_name> |
| create | 创建plugin_ffi模板 | flutter create -t plugin_ffi --platforms [ohos,android,ios] <plugin_name> |
| devices | 已连接设备查找 | flutter devices |
| install | 应用安装 | flutter install -t <deviceId> <hap文件路径> |
| assemble | 资源打包 | flutter assemble |
| build | 测试应用构建 | flutter build hap --debug [--target-platform ohos-arm64] [--local-engine=<兼容ohos的debug engine产物路径>] |
| build | 正式应用构建 | flutter build hap --release [--target-platform ohos-arm64] [--local-engine=<兼容ohos的release engine产物路径>] |
| run | 应用运行 | flutter run [--local-engine=<兼容ohos的engine产物路径>] |
| attach | 调试模式 | flutter attach |
| screenshot | 截屏 | flutter screenshot |
| pub | 获取依赖 | flutter pub get |
| clean | 清除项目依赖 | flutter clean |
| cache | 清除全局缓存数据 | flutter pub cache clean |
常见问题
-
切换FLUTTER_STORAGE_BASE_URL后需删除<flutter>/bin/cache 目录,并在项目中执行flutter clean后再运行
-
若出现报错:
The SDK license agreement is not accepted,参考执行以下命令后再次编译:./ohsdkmgr install ets:9 js:9 native:9 previewer:9 toolchains:9 --sdk-directory='/home/xc/code/sdk/ohos-sdk/' --accept-license -
如果你使用的是DevEco Studio的Beta版本,编译工程时遇到"must have required property 'compatibleSdkVersion', location: demo/ohos/build-profile.json5:17:11"错误,请参考**《DevEco Studio配置文件》**中的 工程级build-profile.json5文件 → products 配置
compatibleSdkVersion。 -
若提示安装报错:
fail to verify pkcs7 file请执行指令hdc shell param set persist.bms.ohCert.verify true -
linux虚拟机通过hdc无法直接发现OpenHarmony设备
解决方案:在windows宿主机中,开启hdc server,具体指令如下:
hdc kill hdc -s serverIP:8710 -m在linux中配置环境变量:
HDC_SERVER=<serverIP> HDC_SERVER_PORT=8710配置完成后flutter sdk可以通过hdc server完成设备连接,也可参考官方指导。
-
构建Hap任务时报错:Error: The hvigor depends on the npmrc file. Configure the npmrc file first.
请在用户目录
~下创建文件.npmrc,该配置也可参考DevEco Studio官方文档,编辑内容如下:registry=https://repo.huaweicloud.com/repository/npm/ @ohos:registry=https://repo.harmonyos.com/npm/ -
查日志时,存在日志丢失现象。 解决方案:关闭全局日志,只打开自己领域的日志
# 步骤一:关闭所有领域的日志打印(部分特殊日志无法关闭) hdc shell hilog -b X # 步骤二:只打开自己领域的日志 hdc shell hilog <level> -D <domain> # 其中<level>为日志打印的级别:D/I/W/E/F,<domain>为Tag前面的数字 # 举例: # 打印A00000/XComFlutterOHOS_Native的日志,需要设置hdc shell hilog -b D -D A00000 # 注:上面的设置在机器重启后会失效,如果要继续使用,需要重新设置。 -
若Api11 Beta1版本的机器上无法启动debug签名的应用,可以通过将签名换成正式签名,或在手机端打开开发者模式解决(步骤:设置->通用->开发者模式)
-
如果报
Invalid CEN header (invalid zip64 extra data field size)异常,请更换Jdk版本,参见JDK-8313765 -
运行debug版本的flutter应用用到鸿蒙设备后报错(release和profile版本正常)
- 报错信息:
Error while initializing the Dart VM: Wrong full snapshot version, expected '8af474944053df1f0a3be6e6165fa7cf' found 'adb4292f3ec25074ca70abcd2d5c7251' - 解决方案: 依次执行以下操作
- 设置环境变量
export FLUTTER_STORAGE_BASE_URL=https://flutter-ohos.obs.cn-south-1.myhuaweicloud.com - 删除 /bin/cache 目录下的缓存
- 执行
flutter clean,清除项目编译缓存 - 运行
flutter run -d $DEVICE --debug
- 设置环境变量
- 补充信息: 运行android或ios出现类似错误,也可以尝试还原环境变量 FLUTTER_STORAGE_BASE_URL ,清除缓存后重新运行。
- 报错信息:
-
Beta2版本的ROM更新后,不再支持申请有执行权限的匿名内存,导致debug运行闪退。
-
解决方案:更新 flutter_flutter 到 a44b8a6d (2024-07-25) 之后的版本。
-
关键日志:
#20 at attachToNative (oh_modules/.ohpm/@ohos+flutter_ohos@g8zhdaqwu8gotysbmqcstpfpcpy=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterNapi.ets:78:32) #21 at attachToNapi (oh_modules/.ohpm/@ohos+flutter_ohos@g8zhdaqwu8gotysbmqcstpfpcpy=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterEngine.ets:144:5) #22 at init (oh_modules/.ohpm/@ohos+flutter_ohos@g8zhdaqwu8gotysbmqcstpfpcpy=/oh_modules/@ohos/flutter_ohos/src/main/ets/embedding/engine/FlutterEngine.ets:133:7)
-
-
构建Hap命令直接执行
flutter build hap即可,不再需要--local-engine参数,直接从云端获取编译产物。 -
配置环境完成后执行 flutter 命令 出现闪退。
-
解决方案:windows环境中添加git环境变量配置。
export PATH=<git path>/cmd:$PATH
-
-
执行
flutter pub cache clean正常 执行flutter clean报错,按照报错信息执行 update 命令也没有效果。-
解决方案:通过注释掉 build.json5 文件中的配置规避。
-
报错信息:
#Parse ohos module. json5 error: Exception: Can not found module.json5 at #D:\pub_cache\git\flutter_packages-b00939bb44d018f0710d1b080d91dcf4c34ed06\packages\video_player\video_player_ohos\ohossrc\main\module.json5. #You need to update the Flutter plugin project structure. #See #https://gitcode.com/openharmony-tpc/flutter_samples/blob/master/ohos/docs/09_specifications/update-flutter-plugin-structure.md
-
-
执行
flutter build hap时遇到路径校验报错。-
解决方案: ·打开 deveco 安装路径 D:\DevEco Studio\tools\hvigor\hvigor-ohos-plugin\res\schemas 下的 ohos-project-build-profile-schema.json文件。 ·在该文件中找到包含:"pattern": "^(\./|\.\./)[\s\S]+$"的行,并删除此行。
-
报错信息:
#hvigor ERROR: Schema validate failed. # Detail: Please check the following fields. #instancePath: 'modules[1].scrPath', #keyword: 'pattern' #params: { pattern:'^(\\./|\\.\\./)[\\s\\S]+$' }, #message: 'must match pattern "^(\\./|\\.\\./)[\\s\\S]+$"', #location: 'D:/work/videoplayerdemo/video_cannot_stop_at_background/ohos/build-profile.json:42:146'
-
-
执行
flutter build hap报错。-
解决方案:打开 deveco 安装路径 D:\DevEco Studio\tools\hvigor\hvigor-ohos-plugin\src\model\module 下的 core-module-model-impl.js, 修改 findBelongProjectPath 方法(需要管理员权限,可另存为后替换)
findBelongProjectPath(e) { if (e === path_1.default.dirname(e)) { return this.parentProject.getProjectDir() } } -
报错信息:
# hvigor ERROR: Cannot find belonging project path for module at D:\. # hvigor ERROR: BUILD FAILED in 2s 556ms. #Running Hvigor task assembleHap... #Oops; flutter has exited unexpectedly: "ProcessException: The command failed # <Command: hvigorw --mode module -p module=video_player_ohos@default -p product=default assmbleHar --no-daemon" #A crash report has been written to D:\work\videoplayerdemo\video_cannot_stop_at_background\flutter_03.log.
-
-
DevEco-Studio(5.0.3.600 Beta3),windows版本编译flutter应用报错
-
解决方案:更新 flutter_flutter 到 c6fbac2b (2024-08-09) 之后的版本。
-
关键日志:
hvigor ERROR: Schema validate failed. Detail: Please check the following fields. { instancePath: 'modules[2].srcPath', keyword: 'pattern', params: { pattern: '^(\\./|\\.\\./)[\\s\\S]+$' }, message: 'must match pattern "^(\\./|\\.\\./)[\\s\\S]+$"', }
-
-
在.ohos的项目执行
flutter clean报错,然后再执行flutter pub get也报错。-
解决方案:删除.ohos文件夹,重新flutter pub get 即可
-
报错信息:
Oops; flutter has exited unexpectedly: "PathNotFoundException: Cannot open file, path = 'D:\code\.ohos\build-profile.json5' (OS Error: 系统找不到指定的文件。,error = 2)". A crash report has been written to D:\code\flutter_01.log.
-
-
模拟器执行时发生白屏、崩溃等现象。
- 模拟器只支持Mac(arm64), 还不支持Mac(x86)和Windows
- 模拟器暂不支持vulkan,请尝试构建步骤2.1,关闭impeller后重试
-
flutter profile模式下编译或运行失败
-
请在ohos项目build_profile.json5中添加buildModeSet字段,可参考complex_layout
-
报错信息:
hvigor ERROR: Build mode 'profile' used in command line is not declared in buildModeSet in /xxx/example/ohos/build-profile.json5.
-
贡献指南
如果您想为 Flutter-OH 贡献代码,请参考 Flutter-OH 代码合入流程 了解详细的贡献步骤和规范。
问题交流
- 问题反馈:欢迎在 Flutter框架仓库 以及各个Flutter三方库提交 issue。
项目介绍
开发者可使用熟悉的 Flutter 技术栈开发 OpenHarmony 应用,复用现有 Flutter 生态资源。该项目是 Flutter SDK 的 OpenHarmony 适配版本,基于 Flutter 官方 3.27.4 版本构建,支持创建、构建、运行等多种开发指令。【此简介由AI生成】
定制我的领域下载使用量
项目总下载次数(含Clone、Pull、 zip 包及 release 下载),每日凌晨更新