概述
对于Flutter SDK相关的定制化,也就是两个地方,分别为Flutter Engine与Flutter SDK,对于定制化后的应用,则需要我们重新编译相关的代码产物,主要为Flutter Engine的编译和Flutter Tools的编译
Flutter Engine编译
编译配置
配置Depot_tools脚本工具集
获取Chromium的depot_tools
脚本工具集,depot_tools
是Google用来管理Chromium源码的工具集,它包含了一系列实用脚本,如:gclient、ninja、repo等。gclient和repo都是用来检出项目源码的脚本,主要区别是gclient主要依赖于.gclient
与DEPS
这两个配置文件进行多项目模块源码的依赖检出,而repo主要依赖于一个manifest.xml
配置文件来进行多项目模块源码检出,gclient定制性相对高些,也更复杂些
获取depot_tools
脚本工具集可以通过Git获取:
1 | $ git clone https://chromium.googlesource.com/chromium/tools/depot_tools.git |
并配置到环境变量中:
1 | $ export PATH=$PATH:/path/to/depot_tools |
构建Flutter Engine产物使用的构建系统是Ninja
,Chromium的构建也是使用它,它是一个专注于速度的小型构建系统,即它的输入文件是由更高级别的构建系统生成的产物,而GN
就是一个专门生成Ninja构建文件的元构建系统,所以构建Flutter Engine的步骤是先用GN构建Ninja的输入文件,再由Ninja构建最终产物,即:
1 | $ ./flutter/tools/gn |