如何编译Flutter Engine的android-arm64-release/linux-arm64/gen_snapshot?
编译Flutter Engine的android-arm64-release/linux-arm64/gen_snapshot解决Termux Proot Ubuntu构建问题
前置依赖安装
- 在Proot Ubuntu环境中安装编译必需工具:
sudo apt update && sudo apt install git curl clang ninja-build pkg-config libssl-dev python3 - 克隆depot_tools并配置环境变量:
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git export PATH=$PATH:$PWD/depot_tools
拉取匹配版本的Flutter Engine源码
- 先执行
flutter doctor -v,查看本地Flutter SDK对应的Engine commit哈希值 - 克隆Engine仓库并切换到对应commit:
git clone https://github.com/flutter/engine.git cd engine git checkout <你的Flutter版本对应的Engine commit> gclient sync
生成Android ARM64 Release的构建配置
- 运行gn命令生成构建目录:
gn gen out/android_arm64_release --args='target_os="android" target_cpu="arm64" is_debug=false is_official_build=true flutter_runtime_mode="release"' - 若需要编译android-arm-release版本,将上述命令中的
target_cpu="arm64"改为target_cpu="arm"即可
编译gen_snapshot
- 执行ninja编译指定目标:
ninja -C out/android_arm64_release gen_snapshot - 编译完成后,产物路径为
out/android_arm64_release/gen_snapshot
替换到Flutter SDK对应路径
- 找到Flutter SDK中缺失文件的路径,示例路径:
flutter/bin/cache/artifacts/engine/android-arm64-release/linux-arm64/ - 复制编译好的gen_snapshot到该路径:
cp out/android_arm64_release/gen_snapshot /path/to/your/flutter/bin/cache/artifacts/engine/android-arm64-release/linux-arm64/ - 同理处理android-arm-release的路径,使用编译arm版本得到的gen_snapshot替换
关键注意点
- 版本匹配是核心:Engine的commit必须和本地Flutter SDK版本完全对应,否则替换后可能出现运行错误
- Termux Proot环境资源有限,编译过程耗时较长,尽量保留足够后台资源
- 若编译时出现依赖报错,直接按提示安装对应包即可
内容的提问来源于stack exchange,提问作者Anil Beniwal
相关产品推荐
相关产品推荐

