FlutterEngine源码编译之2025年版教程

我的设备:

  • macmini m4
  • macOS 15.3.2

1. macOS 端搭建源码编译环境

  1. 按照官方教程安装 depot_tools

depot_tools 是 Chromium 源码依赖管理工具集,内含 gclient 等工具;用于帮助 Chromium、Flutter Engine等项目同步代码和管理编译所需的依赖

  1. brew 安装 ant 和 ninja

    brew install ant
    brew install ninja

2. 下载 Flutter Engine 源码和安装所需依赖

  1. 下载 Flutter Engine 源码
bash 复制代码
git clone git@github.com:flutter/flutter.git
  1. 进入源码根目录,然后复制 engine/scripts 任意一个 xx.gclient 文件到 根目录中,并修改名称为 .gclient。我用的是standard.gclient
  1. 在源码根目录执行gclient sync同步代码和安装所需的依赖

3. 编译 Flutter Engine

  1. 生成构建工程:进入源码根目录,然后运行 gn 命令生成指定平台的构建工程,构建工程存放在 engine/src/out 目录下
scss 复制代码
#构建iOS设备使用的引擎
#真机debug版本
./engine/src/flutter/tools/gn  --ios --unoptimized --no-prebuilt-dart-sdk 

# 其他版本
#真机release版本
./engine/src/flutter/tools/gn  --ios -unoptimized --runtime-mode=release
#模拟器版本
./engine/src/flutter/tools/gn  --ios -simulator --unoptimized
#主机端(Mac)构建  --  热重载
./engine/src/flutter/tools/gn  --unoptimized --no-prebuilt-dart-sdk 
  1. m系列芯片的 macOS, 需要安装 Rosetta2,保证一些尚未适配m系列芯片的工具链可以经常运行:softwareupdate --install-rosetta --agree-to-license

在 m4 设备上,没安装 Rosetta2 前遇到的编译问题:OSError: [Errno 86] Bad CPU type in executable:

  1. 调用 ninjia 编译指定的构建工程,如:ninja -C ./engine/src/out/ios_debug_unopt
相关推荐
果壳~29 分钟前
【前端】【canvas】图片颜色填充工具实现详解
前端
Bigger30 分钟前
Tauri (23)——为什么每台电脑位置显示效果不一致?
前端·rust·app
¥懒大王¥31 分钟前
XSS-Game靶场教程
前端·安全·web安全·xss
ssshooter36 分钟前
为什么移动端 safari 用 translate 移动元素卡卡的
前端·css·性能优化
Zender Han41 分钟前
Flutter 中 AbsorbPointer 与 IgnorePointer 的区别与使用场景详解
android·flutter·ios
闲云一鹤42 分钟前
Claude Code 接入第三方AI模型(MiMo-V2-Flash)
前端·后端·claude
惜.己42 分钟前
前端笔记(四)
前端·笔记
renke33641 小时前
Flutter 2025 状态管理工程体系:从简单共享到复杂协同,构建可预测、可测试、可维护的状态流架构
flutter·架构
勤劳打代码1 小时前
循序渐进 —— Flutter GetX 状态管理
flutter·面试·前端框架
小北方城市网1 小时前
第 5 课:Vue 3 HTTP 请求与 UI 库实战 —— 从本地数据到前后端交互应用
大数据·前端·人工智能·ai·自然语言处理