鸿蒙Next开发--编译鸿蒙Flutter engine-Beta1(5.0.0(12))

1,509 阅读2分钟

由于之前编译的鸿蒙Flutter engine是在api11的版本上进行编译的,目前鸿蒙已经出了Beta1(5.0.0(12)),因此这儿记录一下,编译鸿蒙Flutter engine的过程以及遇到的问题。

鸿蒙Flutter引擎仓库地址

开发环境介绍

  • 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的东西。

image.png

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。

image.png

报错,如下。

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:

image.png 改为如下: image.png

改动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

image.png 将之前升级DevEco Studio NEXT Developer Beta1 版本时,需要的两个依赖给拷贝进去。 如下:

image.png

如果没有,可以私聊我。 最后将升级后项目中的这两个文件进行覆盖。

image.png

最后重新执行编译即可。

image.png