5.3.3 Freeline 秒级编译浅析及接入
Freeline 是蚂蚁聚宝团队在 Android 平台上量身定制的一个基于动态替换的编译方案。稳定性方面:完善的基线对齐、进程级别的异常隔离机制。性能方面:内部采用了类似Facebook 开源工具 buck 的多工程多任务并发思想,并对代码及资源编译流程做了深入的性能优化。
官方团队在云栖社区对 Freeline 的具体原理进行了详细说明, Freeline 具备以下特性。
支持标准的多模块 Gradle 工程的增量构建。
并发执行增量编译任务,二次编译达到秒级。
编译时热重载。
进程级别的异常隔离机制。
支持 so 动态更新。
支持 resources.arsc 缓存。
支持 Windows、 Linux 和 Mac 平台。
当然,作为一个高速增量编译工具,同样有一定的局限性,分别如下。
全量编译较慢。
不支持删除带 ID 的资源,否则可能导致 AAPT 编译出错。
暂不支持抽象类的增量编译。
不支持开启 Jack 编译。
不支持 Kotlin、 Groovy、 Scala。
接入 Freeline 的核心步骤如下。
1.安装 Python 环境
由于 Freeline 是运行在 Python 环境中的,因此要求开发设备具备 Python 运行环境。不过, Freeline 暂时只支持 Python 2.x 版本,安装 Python 环境时不要安装不合适的版本。
2.集成 Freeline 编译环境
第一步,配置项目根目录的 build.gradle,加入 freeline-gradle 的依赖:
1. buildscript {
2. repositories {
3. jcenter()
4. }
5. dependencies {
6. classpath 'com.antfortune.freeline:gradle:0.8.8'
7. }
8. }
第二步,在主 Module 的 build.gradle 中,应用 Freeline 插件的依赖:
1. apply plugin: 'com.antfortune.freeline'
2. android {
3. ...
4. }
第三步,初始化 Freeline 编译环境: Windows: gradlew initFreeline Linux/Mac: ./gradlew initFreeline
3.安装 Android Studio 插件
进入 Android Studio 配置项 Plugins 的页面搜索插件,如图 5-15 所示。
重启 Android Studio 之后,可以发现 Freeline 快捷按钮,如图 5-17 所示。
4.运行
运行 Freeline 编译有如下两种方式。