ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

如何用 depot_tools 和 gclient sync 完成 Flutter 引擎源码依赖的环境搭建

如何用 depot_tools 和 gclient sync 完成 Flutter 引擎源码依赖的环境搭建 如何用 depot_tools 和 gclient sync 完成 Flutter 引擎源码依赖的环境搭建【免费下载链接】flutterFlutter makes it easy and fast to build beautiful apps for mobile and beyond项目地址: https://gitcode.com/GitHub_Trending/flutter41/flutter要本地编译 Flutter 引擎而不是直接使用预编译产物第一步不是写构建脚本而是把引擎源码和它的全部依赖拉齐。Flutter 引擎用 Chromium 的depot_tools工具链中的gclient来管理依赖操作路径是把engine/scripts/下对应的.gclient模板复制为仓库根目录的.gclient然后在仓库根目录执行gclient sync。官方环境搭建文档给出了完整的准备条件与操作顺序适用主机为 Linux、macOS 或 Windows。完成后的状态是仓库根目录下存在.gclientgclient sync已跑完引擎源码与 Dart 工具链等依赖就位可以进入et构建步骤。安装 depot_tools 并补齐平台工具按 Setting-up-the-Engine-development-environment.md 的依赖清单逐项准备git源码版本控制ssh 客户端用于与 GitHub 认证python3gclient在内的多个工具依赖它Chromium 的 depot_tools它包含gclient。安装后要把depot_tools目录加到PATH的最前面文档强调 front避免与系统自带命令冲突macOS 与 Linux 额外需要curl和unzipgclient sync使用Linux 额外需要pkg-config包Windows非 Googler需要 Visual Studio 2017 或更新版本以及 Windows 10 SDK并确认安装了 Debugging Tools for Windows 组件macOS 需要安装最新 XcodeApple Siliconarm64机器还要先安装 Rosetta 翻译环境softwareupdate --install-rosetta两个容易误解的点文档明确说明不需要单独安装 Dart。Dart 工具链会在 Getting the source 阶段自动下载不需要单独安装 Android SDK它由下文gclient sync步骤下载。跨平台编译能力也有差异选择主机时注意Linux 可交叉编译 Android 与 Fuchsia 产物但不能交叉编译 iOSmacOS 可交叉编译 Android 与 iOSWindows 对 Android、Fuchsia、iOS 均不支持交叉编译。Windows 非 Googler 用户的环境变量文档要求 Windows 非 Googler 用户设置以下环境变量让depot_tools指向本机的 Visual Studio 安装目录DEPOT_TOOLS_WIN_TOOLCHAIN0GYP_MSVS_OVERRIDE_PATHC:\Program Files\Microsoft Visual Studio\2022\Community第二个值以文档示例为模板文档注明Use the path of your installation即替换为你自己的 VS 安装路径。克隆源码并放置 .gclient引擎源码自 2024 年末起位于主flutter/flutter仓库内本仓库的engine/src/flutter即是。文档约定的仓库布局是fork 主仓库origin指向你的 forkupstream指向flutter/flutterfork 与 remote 的具体设置见 Setting-up-the-Framework-development-environment.md 的 Set up your environment 一节。先克隆一份到本地git clone https://gitcode.com/GitHub_Trending/flutter41/flutter然后执行 gclient bootstrap分两步把engine/scripts/下的模板复制到仓库根目录并命名为.gclient一般用户复制 standard.gclientGoogle 内部用户复制 rbe.gclient 以启用 RBE 远端构建RBE 仅对 Googler 开放且需按 rbe.md 先执行cipd auth-login完成 CIPD 认证之后用gclient sync -D同步。在仓库根目录运行gclient sync见下一节。standard.gclient 的内容就是一个solutions配置deps_file指向仓库根目录的 DEPS 文件url为https://github.com/flutter/flutter.git。文件内注释说明如果你用 SSH 连接 GitHub把url改为gitgithub.com:flutter/flutter.git。运行 gclient sync在仓库根目录执行gclient sync两个条件注意Windows 上该命令必须以管理员身份运行文档标注这是 issue 94580 对应的已知问题若你的引擎代码已过期文档建议先合并到 HEAD 再执行gclient sync。同步失败时的网络问题处理gclient sync拉取的是大型仓库文档列出了典型的网络中断报错fatal: early EOF fatal: the remote end hung up unexpectedly error: RPC failed; curl 18 transfer closed with outstanding read data remaining出现这类错误时文档给出的替代命令是浅同步gclient sync --no-history该方式减小下载量、提高成功率但会省略完整的 Git 历史文档提醒这可能限制某些开发工作流因此只作为网络不稳定时的绕行方案不是默认首选。可选分支构建 Web 引擎如果目标包含 Web 引擎在运行gclient sync前先编辑根目录的.gclient取消文档指明的 Web 构建相关行的注释对应 standard.gclient 中custom_vars下被注释掉的download_emsdk: True再重新执行gclient syncdownload_emsdk控制是否下载 Emscripten SDK默认值为False见 DEPS 中的变量说明不构建 Web 引擎时保持默认即可。环境收尾与验证文档没有提供单独的同步成功检查命令它的收尾定义是把 Engine Toolet加入PATH然后进入构建阶段。et位于engine/src/flutter/bin目录对应本仓库的et、et.bat在 shell 配置文件文档示例为.rc文件中加入export PATH/path/to/flutter/engine/src/flutter/bin:$PATH其中/path/to/flutter需要替换为你本地仓库的实际路径。之后按 Compiling-the-engine.md 使用et进行引擎构建该文档推荐用et代替手工gnninja命令。后续需要更新引擎源码与依赖时Compiling-the-engine.md 给出的标准流程是git fetch upstream master git rebase upstream/master gclient sync -D文档同时提醒升级 Dart SDK例如合并到 HEAD 后执行gclient sync之后Android/iOS 场景需要重新编译 host 构建因为 host 构建产物必须与 Android/iOS 构建产物版本匹配。限制与边界本文路径覆盖到依赖同步完成、et可用为止具体构建命令、各平台的gn配置属于 Compiling-the-engine.md 的范围不在环境搭建步骤内展开。gclient sync --no-history会省略完整 Git 历史依赖完整历史的开发工作流不要用浅同步的结果长期开发。RBErbe.gclient分支仅限 Google 内部用户在 corp 主机上使用外部开发者应使用standard.gclient。【免费下载链接】flutterFlutter makes it easy and fast to build beautiful apps for mobile and beyond项目地址: https://gitcode.com/GitHub_Trending/flutter41/flutter创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表