深化学习Flutter,研讨Flutter Engine是有必要的。Flutter官方现已发Engine抽离出来,供开发者定制修改,也便利咱们学习,可是单纯的克隆The Flutter engine (github.com)的库房并不能构建出引擎,它还短少许多必要的第三方库。OK,话不多说,咱们依据官方教程,开搞!
前置条件
-
你的
git
现已设置好了大局署理,git config --global http.proxy xxx
-
你的
指令行
现已设置好了署理,Win下运用set https_proxy=xxx
进行临时设置署理 -
你的
git
现已配置好了ssh
1. 配置好Windows开发环境
-
Windows SDK
主张下载Visual Studio 2019,勾选该负载,主动装置SDK。
装置完成后,在Windows设置的使用和功能找到SDK,点击修改。
Change,然后点击Next,勾选第一个Windows Performance Toolkit
选项,最终使用更改。
- 环境变量设置
//供depot tools运用的参数
DEPOT_TOOLS_WIN_TOOLCHAIN=0
//VS2019装置地址
GYP_MSVS_OVERRIDE_PATH="C:\Program Files (x86)/Microsoft Visual Studio/2019/Community" (or your location for Visual Studio)
//VS版本
GYP_MSVS_VERSION = 2019
//Windows SDK地址
WINDOWSSDKDIR="C:\Program Files (x86)\Windows Kits\10" (or your location for Windows Kits)
- 启用长地址支撑 翻开PowerShell,输入下列指令。
Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\FileSystem" -Name "LongPathsEnabled" -Value 1 -Force
2. 下载部署工具depot_tools
depot_tools
主张设置环境变量,便利运用gclient指令。
3. 拉取引擎源码
-
fork一份flutter engine官方的库房
-
创立一个你想放置engine源码的文件夹,在文件夹内创立一个
.gclient
文件,文件内容如下,替换url为你刚刚fork的ssh对应的地址。
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@github.com:<your_name_here>/engine.git",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
-
cd src/flutter
,然后git pull upstream master
。 -
翻开终端,在该目录下履行
gclient sync
指令(该指令包含git clone
保证你的终端
以及git
现已设置好署理)。
-
如果你有版本号需求,请先设置
git reset --hard <token>
,尖括号替换成commit
标识符,一般在你下载的flutter SDK文件夹内,详细为flutter/bin/internal/engine.version
,再运用gclient sync --with_branch_heads --with_tags
进行拉取。 -
如果遇到
Python
的File
报错,一般是署理没设置好 -
成功拉取后的目录和终端应该是这样的
拉取速度取决于你的署理,文件大概15G左右。
4. 编译你的引擎
假定你现已对引擎进行了定制,或者添加文件并且配置了BUILD.gn
的内容
-
cd到
src
目录内 -
终端输入
python .\flutter\tools\gn --unoptimized
来预备build文件如果你好奇参数,
gn help
会告知你答案
- 终端输入
ninja -C .\out\<dir created by previous step>
,上一个指令会在out
目录生成一个新的文件夹,一般是host_debug_unopt
,把尖括号的内容替换为该目录即可,然后开始编译,6000+的文件,耗时比较久。
5. 发动你的引擎
简简单单,有手就行。
flutter run --local-engine-src-path <拉取引擎库房的src的文件夹的本地途径> --local-engine=<out生成的文件夹名称>
参考资料
Compiling the engine flutter/flutter Wiki (github.com)
Setting up the Engine development environment flutter/flutter Wiki (github.com)