目录
介绍
一、flutter_flutter项目
由于Flutter官方并没有支持HarmonyOS,所以鸿蒙团队从Flutter的官方分支,分叉出一个分支进行HarmonyOS系统支持
该仓库是基于Flutter SDK对于OpenHarmony平台的兼容拓展,可支持IDE或者终端使用Flutter Tools指令编译和构建OpenHarmony应用程序。
现在工程使用的flutter_flutter项目的分支是:origin/flutter-3.7.12-ohos.candidate.3
在这个分支上下面的问题已经解决
提示:flutter_flutter项目一直在更新,最新的代码有可能已经解决了这个问题,就不在需要下面的操作了
目前在arm架构的电脑上使用时遇到了问题,处理方法是:
提交重置到:
2024年3月21日
!179 更新flutter.har
Merge pull request !179 from hazy/feature-har
然后对下面这次提交进行revert
2024年3月13日
GeneratedPluginRegistrant 对齐 Android 和 iOS
二、物料
1、flutter sdk
由flutter_flutter项目就是flutter的sdk
flutter sdk 提供接口、提供命令行工具(调试器、编译器等)
2、flutter engine
需要搜索相关资料编译出产物
flutter engine 是一个底层的渲染引擎,使用 Skia 进行图形渲染,并与平台进行通信,实现跨平台的用户界面。
3、鸿蒙开发套件:IDE/模拟器/命令行工具等
(1) 关于开发套件
鸿蒙套件列表
IDE按照flutter_flutter项目下的介绍,只能使用推荐的鸿蒙套件,但通过实践:去官网下载最新的IDE和命令行,也是支持flutter混合项目的有可能文档更新较慢
(2) flutter相关的配置如下
#Dart配置
export PATH=$PATH:/Users/lxy/ohos/flutter_flutter/bin/cache/dart-sdk/bin
# Flutter 国内镜像
export PUB_HOSTED_URL=https://pub.flutter-io.cn
export FLUTTER_STORAGE_BASE_URL=https://storage.flutter-io.cn
# Flutter 拉取下来的flutter_flutter/bin目录
#export FLUTTER=/opt/flutter/bin
export FLUTTER=/Users/lxy/ohos/flutter_flutter/bin
export PATH=$FLUTTER:$PATH
# Flutter 相关Url配置
#export FLUTTER_GIT_URL=https://github.com/flutter/flutter.git
export FLUTTER_GIT_URL=https://gitee.com/openharmony-sig/flutter_flutter.git
(3)鸿蒙相关配置
之前使用的配置
# Open Harmony 配置
export OHPM_HOME=/Users/lxy/ohos/tools/oh-command-line-tools/ohpm
export PATH=$PATH:$OHPM_HOME/bin
export PATH=$PATH:/Users/lxy/ohos/tools/oh-command-line-tools/sdkmanager/bin
export OHOS_SDK_HOME=/Users/lxy/Library/OpenHarmony/Sdk
export OHOS_NDK_HOME=$OHOS_SDK_HOME/native
export PATH=$PATH:$OHOS_NDK_HOME
# Harmony配置
export HOS_SDK_HOME=/Users/lxy/Library/Huawei/Sdk
export PATH=$PATH:$HOS_SDK_HOME
export HPM_HOME=/Users/lxy/ohos/tools/command-line-tools/ohpm
export PATH=$PATH:$HPM_HOME/bin
export PATH=$PATH:/Users/lxy/ohos/tools/command-line-tools/bin
#HDC工具环境变量
#export HDC_HOME=/Users/lxy/Library/Huawei/Sdk/HarmonyOS-NEXT-DB3/hms/toolchains
export HDC_HOME=/Users/lxy/Library/OpenHarmony/Sdk/12/toolchains
export PATH=$PATH:$HDC_HOME
#签名工具
export SIGN_TOOL_HOME=/Users/lxy/ohos/tools/developtools_hapsigner/hapsigntool/hap_sign_tool/target
使用上面的配置,经常不知道什么原因就会报错:
No Hmos SDK found. Try setting the HOS_SDK_HOME environment variable.
现在使用flutter_flutter项目介绍中推荐的配置,暂时还未遇到上面的问题
# 配置环境变量 (SDK, node, ohpm, hvigor)
export TOOL_HOME=/Applications/DevEco-Studio.app/Contents # mac环境
export DEVECO_SDK_HOME=$TOOL_HOME/sdk # command-line-tools/sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH # command-line-tools/ohpm/bin
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH # command-line-tools/hvigor/bin
export PATH=$TOOL_HOME/tools/node/bin:$PATH # command-line-tools/tool/node/bin
# 配置 HOS_SDK_HOME
#export HOS_SDK_HOME=/Applications/DevEco-Studio.app/Contents/sdk
我们看到上面的配置,并未涉及到 OpenHarmony 的SDK和命令行
OpenHarmony 的 sdk 和命令行工具 通过实践删除之后也是可以run起来的,证明Harmony OS Next 不依赖 OpenHarmony
注:将OpenHarmony - sdk 目录移除之后,可以正常flutter run起来,但是再次放回去之后 flutter run 起来后app闪退,删除之后就又正常了,不知道为什么?
4、其它
Node
https://www.freecodecamp.org/chinese/news/node-version-manager-nvm-install-guide/
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
nvm install v18.19.1
Node环境变量配置
export NODEPATH="/Users/lxy/.nvm/versions/node/v18.19.1/bin"
export PATH=$NODEPATH:$PATH
export NODE_HOME="/Users/lxy/.nvm/versions/node/v18.19.1"
Python
brew install python@3.8
brew list 查看brew安装的包的路径或者 brew list oclint
Python 环境变量配置
#export PATH=/usr/local/bin:$PATH
export PATH=$PATH:/usr/local/Cellar/python@3.8/3.8.18_2/bin
alias python="/usr/local/Cellar/python@3.8/3.8.18_2/bin/python3.8"
Java 环境配置
jdk安装
jenv安装
gradle安装
编译运行
一、release包
// 编译鸿蒙flutter
flutter build hap --target-platform ohos-arm64 --local-engine-src-path=/Users/lixiaoyi/ohos/engine/src --local-engine=ohos_release_arm64
// 安装鸿蒙flutter
flutter devices
hdc -t <deviceId> install <hap file path>
hdc -t 127.0.0.1:5555 install /Users/lixiaoyi/Desktop/flutter_demo/ohos/entry/build/default/outputs/default
// 运行鸿蒙flutter
flutter run --local-engine=ohos_release_arm64 -d FMR0223926041765
// 如果启动了一个默认设备,可以不指定设备
flutter run --local-engine=ohos_release_arm64
二、debug包
// 编译鸿蒙flutter
flutter build hap --target-platform ohos-arm64 --local-engine-src-path=/Users/lxy/ohos/engine/src --local-engine=ohos_debug_unopt_arm64
// 安装鸿蒙flutter
flutter devices
hdc -t <deviceId> install <hap file path>
hdc -t 127.0.0.1:5555 install /Users/lixiaoyi/Desktop/flutter_demo/ohos/entry/build/default/outputs/default
hdc -t FMR0223926041765 install /Users/lixiaoyi/Desktop/flutter_demo/ohos/entry/build/default/outputs/default
// 运行鸿蒙flutter
flutter run --local-engine=ohos_debug_unopt_arm64 -d 127.0.0.1:5555
flutter run --local-engine-src-path=/Users/lixiaoyi/ohos/engine/src --local-engine=ohos_debug_unopt_arm64 -d FMR0223926041765
flutter run --local-engine=/Users/lxy/ohos/engine/src/out/ohos_debug_unopt_arm64 -d FMR0223926041765
// 如果启动了一个默认设备,可以不指定设备
flutter run --local-engine=/Users/lxy/ohos/engine/src/out/ohos_debug_unopt_arm64
已经解决报错
遇到问题之后可以先尝试下面的操作
清空flutter缓存
flutter clean
flutter pub cache clean
重新 flutter run ... 或者 flutter build...
一、No Hmos SDK found
执行 flutter run命令时报错:No Hmos SDK found. Try setting the HOS_SDK_HOME environment variable.
参考鸿蒙相关配置的说明
下面是之前的处理方式并不能彻底解决这个问题
参考文章:No Hmos SDK found. Try setting the HOS_SDK_HOME environment variable.
https://developer.huawei.com/consumer/cn/forum/topic/0201145649405032097
1、通过 flutter config 命令 查看 ohos-sdk 的配置路径是否正确
2、设置正确的sdk路径
flutter config --ohos-sdk /Users/lixiaoyi/Library/Huawei/Sdk
二、找不到sdk的问题
移动了Huawei/Sdk 和 OpenHarmony/Sdk 的位置,结果flutter doctor -v 命令执行失败报错:unable to locate an harmonyos sdk.
Huawei/Sdk 和 OpenHarmony/Sdk 的位置不能随便移动,怀疑跟安装devecho-Studio时的配置有关
有可能跟问题一是相同的问题
三、模拟器启动报错
Error waiting for a debug connection: The log reader stopped unexpectedly
Error launching application on 127.0.0.1:5555.
关掉模拟器重新启动
四、App Launch: To run and debug the Harmony device, configure the HarmonyOS runtime.
随着IDE的更新,下面问题已经不存在了(当使用新的Harmony SDK,IDE也配置了一键自动迁移)
之前的处理方案如下:
第一步:
找到工程级:build-profile.json5 添加 HarmonyOS 并 配置SDK版本
{
"name": "default",
"signingConfig": "default",
"compileSdkVersion": "4.1.0(11)",
"compatibleSdkVersion": "4.1.0(11)",
"runtimeOS": "HarmonyOS"
}
第二步:
修改 /Path/to/YourProject/StateManagement/local.properties 文件,大致内容如下
hwsdk.dir=/Path/to/YourHomeDirectory/Library/Huawei/sdk
第三步:
菜单栏的 “文件(File)” -> “项目结构(Project Structure…)” -> “项目页签(Project)” -> “签名配置(Signing Configs)” -> “钩选上 支持鸿蒙系统(Support HarmonyOS) 与 自动签名(Automatically generate signature)” ,
如果需要真机调试,还需要在工具中登录并在手机上打开调试
五、创建工程时遇到问题
随着IDE的更新,下面问题已经不存在了(当使用新的Harmony SDK,IDE也配置了一键自动迁移)
之前的处理方案如下:
plugin拷贝
创建工程时少了一个GeneratedPluginRegistrant.ets,
拷贝到目录下:/Users/lixiaoyi/Desktop/flutter_demo/ohos/entry/src/main/ets/plugins
{
"hvigorVersion": "file:../dependencies/hvigor-4.1.1.tgz",
"dependencies": {
"@ohos/hvigor-ohos-plugin": "file:../dependencies/hvigor-ohos-plugin-4.1.1.tgz",
"@ohos/hvigor": "file:../dependencies/hvigor-4.1.1.tgz"
}
}
相关文件:
/Users/lxy/WorkFile/Founder/SourceCode/df-flutter/ohos/commons/router/src/main/ets/components/DfRouterModule.ets
/Users/lxy/WorkFile/Founder/SourceCode/df-flutter/ohos/features/home/Index.ets
未解决报错
DF鸿蒙项目:现在flutter run 可以正常启动app,但flutter build后,在IDE中启动app会闪退,不知道什么原因。
只是猜测:IDE在编译flutter混合项目有bug,flutter的引擎该更新了
行者常至,为者常成!