本文处理方式以官方配置为主,会更多的注重一些细节。读者可以直接参考官方文档进行编译。
Setting up the Engine development environment
https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment
编译 Flutter Engine
1、准备工作
安装 depot_tools :
$ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
配置环境变量:建议在 ~/.bash_profile 文件中添加
export PATH=/flutter/depot_tools/:$PATH
然后执行
$ source ~/.bash_profile
当然,你也可以配置临时环境变量
$ export PATH=$PATH:/Users/***/flutter/depot_tools/
2、将 engine 项目 fork 到自己的github
3、创建项目目录
你可以创建一个目录,名称推荐为 engine,后面的步骤会自动执行 clone ,你也可以先将工程 clone 到本地。
$ mkdir engine
// 或者将项目 clone 到本地
$ git clone https://github.com/donald99/engine
4、创建 .gclient 文件
进入engine 目录,创建 .gclient 文件
$ cd engine
$ vim .gclient
写入如下内容:
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@github.com:<your_name_here>/engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
将
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@github.com:donald99/engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
:wq 保存退出。
5、执行 gclient sync 命令
这里的执行需要梯子,速度根据你的网络状况,同步下来的文件大小大概有 10G
$ cd /flutter/engine
$ gclient sync
需要注意的是,这里需要等待文件自动完成,并且尽量不要打断该命令,显示 100% 后仍有很多操作。
6、重新 fetch flutter/engine 仓库
$ cd src/flutter
$ git remote add upstream git@github.com:flutter/engine.git
7、安装辅助工具
安装 JDK 1.8 以上
ant 安装
$ brew install ant
8、编译 android 相关
确保本地 flutter/engine 仓库是最新的
$ git pull upstream master
$ cd /flutter/engine
$ gclient sync
执行以下命令编译
$ ./flutter/tools/gn --unoptimized
$ ./flutter/tools/gn --android --unoptimized
$ ninja -C out/android_debug_unopt && ninja -C out/host_debug_unopt
整个过程比较漫长,耐心等待。
9、编译 iOS 相关
确保本地 flutter/engine 仓库是最新的
$ git pull upstream master
$ cd /flutter/engine
$ gclient sync
执行以下命令编译
$ ./flutter/tools/gn --ios --unoptimized
$ ./flutter/tools/gn --unoptimized
$ ninja -C out/ios_debug_unopt && ninja -C out/host_debug_unopt
这样 flutter engine 的编译工作就基本完成了。生成的一些编译文件目录为 src/out 。
总结
flutter engine 就像一个小型的操作系统,若研究透彻,就可以纵横天地,心随我意。
参考资料:
https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md
Setting up your engine development environment
https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment
Compiling the engine
https://github.com/flutter/flutter/wiki/Setting-up-the-Engine-development-environment
Building cquery
https://github.com/cquery-project/cquery/wiki/Building-cquery
Contributing to Flutter
https://github.com/flutter/flutter/blob/master/CONTRIBUTING.md
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!