Flutter OH Engine构建指导

Flutter OH Engine构建指导

欢迎大家 加入跨平台开发者社区

1. 环境准备

1.1 下载并安装DevEco Studio

1.1.1 官方下载地址

OpenHarmony开发套件官方下载地址

1.1.2 构建前注意事项
  1. 支持的操作系统
    • Linux:完整支持 Engine 构建
    • macOS:完整支持 Engine 构建
    • Windows:仅支持构建 gen_snapshot
  2. 网络要求 :确保构建环境可以访问 engine 源码里 DEPS_ohos 配置文件内 allowed_hosts 字段列出的所有 URL。
1.1.3 下载清单
  1. 下载DevEco Studio

    根据自身操作系统下载对应最新版 DevEco Studio

  2. 下载OpenHarmony版Flutter SDK

    shell 复制代码
    # 克隆仓库
    git clone https://gitcode.com/openharmony-tpc/flutter_flutter.git
    
    # 切换到对应版本分支(以 dev 分支为例)
    cd flutter_flutter
    git checkout -b dev origin/dev

    版本说明查看版本演进规划和分支策略

1.1.4 配置JDK环境

OpenHarmony SDK 依赖 Java 环境,请安装 JDK 17:

  1. Oracle官网OpenJDK 下载 JDK 17

  2. 配置环境变量后,验证安装:

    shell 复制代码
    java -version

1.2 前置条件检查清单

在开始构建前,请确认以下环境已就绪:

环境项 版本/要求 验证命令
操作系统 Linux 或 macOS uname -a
JDK 17 java -version
DevEco Studio 最新版 检查应用版本
网络 可访问外网及 allowed_hosts -
磁盘空间 建议预留 50GB+ df -h

1.3 配置环境变量

根据您的操作系统和使用的 Shell,编辑对应的配置文件:

  • macOS (zsh)~/.zshrc
  • Linux (bash)~/.bashrc
  • Linux (zsh)~/.zshrc
macOS 配置示例
shell 复制代码
# 打开配置文件
vim ~/.zshrc

在配置文件中添加:

shell 复制代码
# DevEco Studio 环境变量
export TOOL_HOME=/Applications/DevEco-Studio.app/Contents
export DEVECO_SDK_HOME=$TOOL_HOME/sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH
export PATH=$TOOL_HOME/tools/node/bin:$PATH

保存并生效:

shell 复制代码
# 保存文件(Esc → :wq → Enter)
source ~/.zshrc
Linux 配置示例
shell 复制代码
# 打开配置文件
vim ~/.bashrc

在配置文件中添加:

shell 复制代码
# 假设 DevEco Studio 安装在 ~/deveco-studio 目录
export TOOL_HOME=$HOME/deveco-studio
export DEVECO_SDK_HOME=$TOOL_HOME/sdk
export PATH=$TOOL_HOME/tools/ohpm/bin:$PATH
export PATH=$TOOL_HOME/tools/hvigor/bin:$PATH
export PATH=$TOOL_HOME/tools/node/bin:$PATH

保存并生效:

shell 复制代码
# 保存文件(Esc → :wq → Enter)
source ~/.bashrc

2. 搭建Engine构建环境

2.1 安装必要工具

根据操作系统选择对应的安装命令:

macOS(使用 Homebrew)
shell 复制代码
brew install git
brew install curl
brew install unzip
Linux
shell 复制代码
sudo apt install git
sudo apt install curl
sudo apt install unzip

2.2 配置构建工具

2.2.1 克隆 depot_tools
shell 复制代码
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
2.2.2 添加环境变量

编辑 Shell 配置文件(~/.zshrc~/.bashrc):

shell 复制代码
# 将 depot_tools 添加到 PATH(请替换为实际路径)
export PATH=$HOME/depot_tools:$PATH

生效配置:

shell 复制代码
source ~/.zshrc	# 或 source ~/.bashrc
2.2.3 安装基础依赖库

macOS:

shell 复制代码
brew install python3
brew install pkg-config
brew install ninja

Linux:

shell 复制代码
sudo apt install python3
sudo apt install pkg-config
sudo apt install ninja-build

2.3 配置 .gclient 文件

2.3.1 Flutter Engine 3.32 及以上版本
  • 打开 git clone 到本地的 flutter_flutter 源码

    shell 复制代码
    cd flutter_flutter
  • 在本地 flutter_flutter 源码目录下,新建 .gclient 文件

    shell 复制代码
    touch .gclient

    提示 :macOS 下查看隐藏文件可按 Command (⌘) + Shift (⇧) + .(句号)

  • 复制 flutter_flutter/engine/scripts/ohos.gclient 里的配置内容到 flutter_flutter/.gclient 文件里

2.3.2 Flutter Engine 3.32 以下版本
  • 创建 engine 目录:

    shell 复制代码
    mkdir engine
    cd engine
  • 创建 .gclient 文件:

    复制代码
    touch .gclient

    提示 :macOS 下查看隐藏文件可按 Command (⌘) + Shift (⇧) + .(句号)

  • 配置 .gclient 文件:

    请选择 engine 版本进行配置

    json 复制代码
    solutions = [
      {
        "managed": False,
        "name": "src/flutter",
        "url": "git@gitcode.com:openharmony-tpc/flutter_engine.git@oh-3.27.4-dev",
        "custom_deps": {},
        "deps_file": "DEPS_ohos",
        "safesync_url": "",
        "custom_vars": {"download_emsdk": True},
      },
    ]
    json 复制代码
     solutions = [
       {
         "managed": False,
         "name": "src/flutter",
         "url": "git@gitcode.com:openharmony-sig/flutter_engine.git@oh-3.22.0",
         "custom_deps": {},
         "deps_file": "DEPS_ohos",
         "safesync_url": "",
       },
     ]
    json 复制代码
    solutions = [
      {
        "managed": False,
        "name": "src/flutter",
        "url": "git@gitcode.com:openharmony-tpc/flutter_engine.git",
        "custom_deps": {},
        "deps_file": "DEPS",
        "safesync_url": "",
      },
    ]

2.4 同步代码

.gclient 同级目录中执行以下命令同步代码:

shell 复制代码
gclient sync

这里会同步 engine 源码、官方 packages仓、执行 ohos_setup任务

注意事项:

此过程需要网络代理(科学上网)

同步时间较长(约 30-60 分钟,视网络情况而定)

如遇超时错误,请重新执行 gclient sync

同步成功完成后,终端会自动退出


3. 开始构建

代码同步完成后,执行构建命令:

shell 复制代码
# 进入 engine 目录
cd engine

# 执行构建(选择以下一种模式)
./ohos -t debug      # 调试模式
./ohos -t profile    # 性能分析模式
./ohos -t release    # 发布模式

构建产物路径:

复制代码
<engine目录>/src/out/ohos_<mode>_arm64/
# 例如:
# /Users/yourname/engine/src/out/ohos_debug_arm64
# /Users/yourname/engine/src/out/ohos_release_arm64

验证构建产物:

shell 复制代码
ls -la out/ohos_debug_arm64/
# 应包含 flutter.har、libflutter.so 等文件

4. 使用构建产物编译应用

从 3.22.0 版本开始,Engine 编译会同时生成 local-enginelocal-host-engine

使用本地 Engine 构建应用时,需要同时指定这两个参数:

shell 复制代码
flutter build hap \
  --target-platform ohos-arm64 \
  --release \
  --local-engine=<ENGINE_PATH>/src/out/ohos_release_arm64/ \
  --local-engine-host=<ENGINE_PATH>/src/out/host_release/

参数说明:

参数 说明
--target-platform 目标平台:ohos-arm64
--release 构建模式:debugprofilerelease
--local-engine OpenHarmony Engine 产物路径
--local-engine-host Host Engine 产物路径

示例:

shell 复制代码
# 假设 engine 目录在 ~/engine
flutter build hap \
  --target-platform ohos-arm64 \
  --release \
  --local-engine=$HOME/engine/src/out/ohos_release_arm64/ \
  --local-engine-host=$HOME/engine/src/out/host_release/

5. 常见问题排查

5.1 gclient sync 失败

现象 解决方案
连接超时 检查网络代理是否正常,重新执行 gclient sync
权限错误 确保对 engine 目录有读写权限
依赖下载失败 检查是否能访问 allowed_hosts 中的 URL
相关推荐
空中海1 分钟前
2.1 Widget 基础
flutter·dart
亚历克斯神2 分钟前
Flutter 组件 genkit 的适配 鸿蒙Harmony 深度进阶 - 驾驭模型幻觉审计、实现鸿蒙端多维 RAG 向量对齐与端云协同 AI 指挥中心方案
flutter·harmonyos·鸿蒙·openharmony
浮芷.4 分钟前
开源鸿蒙跨平台Flutter开发:考试资料共享平台应用
科技·flutter·华为·开源·harmonyos·鸿蒙
AI_零食9 分钟前
开源鸿蒙跨平台Flutter开发:快递单号批量查询应用
学习·flutter·华为·开源·harmonyos·鸿蒙
旺仔大牛13 分钟前
Flutter中StatefulWidget的生命周期
flutter·statefulwidget
浮芷.15 分钟前
开源鸿蒙跨平台Flutter开发:校园兼职信息发布应用
科技·flutter·华为·开源·harmonyos·鸿蒙
AI_零食20 分钟前
开源鸿蒙跨平台Flutter开发:密码生成器应用
网络·学习·flutter·华为·开源·harmonyos·鸿蒙
AI_零食34 分钟前
开源鸿蒙跨平台Flutter开发:生日纪念日提醒应用
运维·flutter·开源·harmonyos·鸿蒙
世人万千丶34 分钟前
Flutter 框架跨平台鸿蒙开发 - AR寻宝探险游戏应用
学习·flutter·游戏·华为·开源·ar·harmonyos
李李李勃谦35 分钟前
Flutter 框架跨平台鸿蒙开发 - 天气生活指数应用
flutter·华为·harmonyos