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引擎了。

本人不懂安卓,安卓的配置就不做介绍了。

上一篇下一篇

猜你喜欢

热点阅读