由于之前编译的鸿蒙Flutter engine是在api11的版本上进行编译的,目前鸿蒙已经出了Beta1(5.0.0(12)),因此这儿记录一下,编译鸿蒙Flutter engine的过程以及遇到的问题。
开发环境介绍
- Mac M2, macos Sonoma 14.2.1
- DevEco Studio NEXT Developer Beta1
- HarmonyOS next Developer Beta1(5.0.0(12))
- java version "11.0.18" 2023-01-17 LTS
- Python 3.11.6 (www.python.org/downloads/r…)
- 手机:Mate 60 (HarmonyOS NEXT Developer Beta1)
1、基本软件安装配置
brew reinstall python@3.11
brew install pkg-config
brew install ninja
备注:python不能使用Python 3.12。否则会报如下错误:
ModuleNotFoundError: No module named 'imp'
2、配置node环境变量
# nodejs
export NODE_HOME=/opt/homebrew/Cellar/node/21.7.1
export PATH=$NODE_HOME/bin:$PATH
3、配置gclient环境变量
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
然后编辑~/.bashrc or ~/.zshrc文件。配置如下:
export PATH=/path/to/depot_tools:$PATH
4、创建仓库配置文件
配置文件:创建空文件夹engine,engine内新建.gclient文件,编辑文件:
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@gitee.com:openharmony-sig/flutter_engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
5、同步代码
在engine目录,执行gclient sync;这里会同步engine源码、官方packages仓,还有执行ohos_setup任务;
大概有20G的东西。
6、配置鸿蒙SDK环境变量
# HarmonyOS SDK,解压开发套件包中 sdk/xxSDK.zip 之后的目录
export HOS_SDK_HOME=/home/<user>/ohos/sdk
# 解压开发套件包中 commandline/commandline-tools-xxxx.zip 之后 bin 子目录
export PATH=$PATH:/home/<user>/ohos/command-line-tools/bin
7、编译引擎
在engine目录,执行./ohos,即可开始构建支持ohos设备的flutter engine。
报错,如下。
clang++: warning: argument unused during compilation: '-static-libstdc++' [-Wunused-command-line-argument]
[10266/10277] ACTION //flutter/shell/platform/ohos:ohos_har(//build/toolchain/custom:custom)
FAILED: flutter.har
vpython3 ../../build/ohos/ohos_create_flutter_har.py --embedding_src ../../flutter/shell/platform/ohos/flutter_embedding --build_dir ./obj/ohos/flutter_embedding --build_type debug --output flutter.har --native_lib libflutter.so --ohos_abi arm64-v8a --ohos_api_int 11
> hvigor ERROR: HosSdkInfoHandler execution failed
> hvigor ERROR: BUILD FAILED in 1 s 845 ms
ERROR:root:runCommand error, code = 255, command = cd ./obj/ohos/flutter_embedding && ./hvigorw clean --mode module -p module=flutter@default -p product=default -p buildMode=debug assembleHar --no-daemon
[10267/10277] ACTION //flutter/shell/platform/ohos:ohos_symbols(//build/toolchain/custom:custom)
ninja: build stopped: subcommand failed.
ERROR:2024-17-05 14:34:52: runCommand error, code = 1, command = ninja -C src/out/ohos_debug_unopt_arm64
改动1:
改为如下:
改动2
修改:/engine/src/flutter/shell/platform/ohos/flutter_embedding/build-profile.json5文件内容
修改为如下:
"products": [
{
"name": "default",
"signingConfig": "default",
"compileSdkVersion": "5.0.0(12)",
"compatibleSdkVersion": "5.0.0(12)",
"runtimeOS": "HarmonyOS",
}
],
改动3
将之前升级DevEco Studio NEXT Developer Beta1 版本时,需要的两个依赖给拷贝进去。
如下:
如果没有,可以私聊我。 最后将升级后项目中的这两个文件进行覆盖。
最后重新执行编译即可。