Flutter-鸿蒙化 flutter运行在鸿蒙next上操作文档
一、前言
各位同学好久没有更新Flutter的相关文章了。因为最近都在学习和研究鸿蒙next 相关的知识。最近也是成功的讲Flutter项目运行在鸿蒙next上面
所以就准备写一个正常流程的一个完整的教程。
准备工作
环境依赖
这边是win系统的环境配置
1 下载的能够支持到我们的鸿蒙next版本的 flutter sdk :
https://gitee.com/openharmony-sig/flutter_flutter
如图
2 配置环境变量
-
配置HarmonyOS SDK和环境变量
-
API12, deveco-studio-5.0.0.300 或 command-line-tools-5.0.0.300
-
配置环境变量 (SDK, node, ohpm, hvigor)
我们这边主要是是实用 API12, deveco-studio-5.0.0.300 来配置
打开我们的环境变量配置
找到我们的环境变量
找到我们的系统环境变量
需要配置环境变量如下
D:\fluttertonextsdk\flutter_flutter\bin
D:\DevEco Studio5.0\sdk
D:\DevEco Studio5.0\tools\hvigor\bin
D:\DevEco Studio5.0\tools\ohpm\bin
D:\DevEco Studio5.0\tools\node\node_modules\npm\bin
D:\DevEco Studio5.0\bin
PUB_HOSTED_URL=https://pub.flutter-io.cn
FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
配置好环境变量后我们打开终端 输入Flutter doctor
执行 flutter create --platforms ohos 创建fluttertonext工程
我们可以再磁盘上面看到我们构建好的Fluttertonext的项目
然后我们用我们的DevEco studio 打开我们的项目里面的ohos的项目
我们在终端执行 flutter build hap 编译一下我们的项目
然后我们Build hap 包
编译成功
我们再build目录下面看到编译后的hap 包
通过观察我们发现通过Flutter构建打包出来的hap 包和我们纯原生的ArkTS 编写的打包后的hap 包 内存占用多出很多包体很大 主要是因为Flutter构建出来的包里面libs 目录下面有Flutter的运行时的libflutter.so 文件占用很大。
运行模拟器
在windows 上面的模拟器运行报错 因为这个Flutter构建出来鸿蒙项目只能编译运行在arm架构上面 所以这边使用真机运行。
真机运行
我们连接已经升级到鸿蒙next系统的华为手机 然后直接点击 三角标运行即可
真机运行效果图
如果是openhamrony 设备
我们也可以可以实用命令编译包 然后 使用命令安装
1 运行 flutter doctor -v
检查环境变量配置是否正确,Futter与OpenHarmony应都为ok标识,若两处提示缺少环境,按提示补上相应环境即可。
2创建工程与编译命令,编译产物在
# 创建工程
flutter create --platforms ohos <projectName>
# 进入工程根目录编译
# 示例:flutter build hap [--target-platform ohos-arm64] [--local-engine=<DIR>/src/out/ohos_release_arm64] --release
flutter build hap --release
是你自己创建Flutter工程的名称的
flutter build hap [--target-platform ohos-arm64] [--local-engine=<DIR>/src/out/ohos_release_arm64] --release
flutter build hap --release
3通过flutter devices
指令发现ohos设备之后,使用 hdc -t <deviceId> install <hap file path>
进行安装。
flutter run [--local-engine=<DIR>/src/out/ohos_debug_unopt_arm64] -d <device-id>
flutter run --debug -d <device-id>
4通过flutter devices
指令发现ohos设备之后,使用 hdc -t <deviceId> install <hap file path>
进行安装。
# 示例:flutter run [--local-engine=<DIR>/src/out/ohos_debug_unopt_arm64] -d <device-id>
flutter run --debug -d <device-id>
已兼容OpenHarmony开发的指令列表
指令名称 | 指令描述 | 使用说明 |
---|---|---|
doctor | 环境检测 | flutter doctor |
config | 环境配置 | flutter config -- |
create | 创建新项目 | flutter create --platforms ohos,android,ios --org |
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 <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 |
常见问题
-
切换FLUTTER_STORAGE_BASE_URL后需删除/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环境配置指导.docx》中的‘6 创建工程和运行Hello World’【配置插件】章节修改 hvigor/hvigor-config.json5文件。
-
若提示安装报错:
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 ,清除缓存后重新运行。
- 报错信息:
- 0回答
- 1粉丝
- 0关注
- Flutter 鸿蒙化 flutter和鸿蒙next混和渲染
- Flutter鸿蒙化 在鸿蒙应用中添加Flutter页面
- Flutter 鸿蒙化 使用 Flutter Channel实现和Flutter和HarmonyOS交互
- Flutter鸿蒙入门
- Flutter鸿蒙实战
- 鸿蒙Flutter实战:09-现有Flutter项目支持鸿蒙
- 鸿蒙Flutter实战:03-鸿蒙Flutter开发中集成Webview
- 鸿蒙Flutter实战:06-使用ArkTs开发Flutter鸿蒙插件
- 【HarmonyOS Next开发】端云一体化初始化项目
- Flutter鸿蒙项目创建
- 鸿蒙Flutter实战:14-现有Flutter 项目支持鸿蒙 II
- 鸿蒙Flutter实战:11-使用 Flutter SDK 3.22.0
- 鸿蒙版Flutter环境搭建
- 鸿蒙接入Flutter3.22
- 《探索 HarmonyOS NEXT(5.0):开启构建模块化项目架构奇幻之旅 —— 模块化基础篇》