Flutter引擎源码的下载与编译
2020-07-02 本文已影响0人
iOSer_jia
工具准备
1.下载Ghromium提供的部署工具depot_tools
git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git
2.安装brew
brew install ant
下载引擎代码
1.新建目录(路径不能有中文)
mkdir engine
2.创建gclient文件(通过gclient下载源码)
touch .gclient
3.配置文件
solutions = [
{
"managed": False,
"name": "src/flutter",
"url": "git@github.com:flutter/engine.git@6bc433c6b6b5b98dcf4cc11aff31cdee90849f32",
"custom_deps": {},
"deps_file": "DEPS",
"safesync_url": "",
},
]
需要注意的是,url的后面凭借的Flutter引擎commitID需要你当前所要使用的Flutter版本保持一致
可以通过cat $FLUTTER/internal/engine.version
命令查看当前Flutter对应的Flutter引擎commitID
4.执行gclient sync(这个操作将会fetch Flutter 所有的依赖。这里有10G文件,需要点时间,请保持网络!该操作需要科学上网)
gclient sync
构建
我们要先用GN生成一个Ninja构成文件的元构建系统,最后再用Ninja编译
cd engine/src/flutter/tools
#构建iOS设备使用的引擎
#真机debug版本
./gn --ios --unoptimized
#真机release版本(日常开发使用,如果我们要自定义引擎)
./gn --ios --unoptimized --runtime-mode=release
#模拟器版本
./gn --ios --simulator --unoptimized
#主机端(Mac)构建
./gn --unoptimized
构建完成后会有4个Xcode工程,存放在out/目录下
编译
这个过程相当耗时且消耗电脑性能,记得给你的电脑散热!!!
ninja -C host_debug_unopt && ninja -C ios_debug_sim_unopt && ninja -C ios_debug_unopt && ninja -C ios_release_unopt
配置
iOS中配置项目代码
在Flutter项目的iOS工程中,找到Generated.xcconfig,在里面添加两个环境变量
FLUTTER_ENGINE=存放引擎代码的路径/engine/src
#使用的引擎对应版本(这里是iOS-debug模式下-模拟器的版本)
LOCAL_ENGINE=ios_debug_sim_unopt
此时改Flutter项目的iOS工程使用的就是我们下载编译的Flutter引擎了。
本人不懂安卓,安卓的配置就不做介绍了。