Freeline简介
Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,另外在class及dex,resources层面作了相应缓存策略,做到真正增量开发,另外引入并优化buck的部分加速组件dx,DexMerger,资源编译方面,深入改造了Aapt资源编译流程,当资源发生改变时候,秒级完成增量包编译,其中增量包仅含最小的变更集合(10Kb~数百Kb内),后期也被运用到线上进行资源/代码动态替换。相比目前instant-run,buck,layoutcast等方案快数倍速度。
安装python环境
打开官网https://www.python.org/ 点击下载安装
注意:freeline只支持2.7.X版本
配置高级环境变量,PATH结尾加入:
;C:\Python27
运行python -v,如果出现版本号等信息,说明安装成功。
gradle 环境配置
1,打开gradle官网:https://gradle.org/,下载安装。
将下载以后得到的 gradle-2.14-all.zip 文件夹解压到我们电脑磁盘上固定存放软件的位置。
使用命令查看gradle是否安装成功。
gradle -v
Freeline配置
Freeline的特性:
- 支持调试
- 系统最低支持到api level 9
- 支持标准的多模块Gradle工程的增量构建
- 并发执行增量编译任务
- 进程级别异常隔离机制
- 支持so动态更新
- 支持resource.arsc缓存
- 支持retrolambda
- 支持DataBinding
- 支持各类主流注解库
- 支持Windows,Linux,Mac平台
当然每个事物都有自己的不足,现在已经Freeline的一些不足:
- 第一次增量资源编译的时候可能会有点慢
- 不支持删除带id的资源,否则可能导致aapt编译出错
- 暂不支持抽象类的增量编译
- 不支持开启 Jack 编译
- 不支持 Kotlin/Groovy/Scala
集成步骤
1,在项目level的build.gradle中添加插件依赖:
buildscript {
repositories {
jcenter()
}
dependencies {
...
classpath 'com.antfortune.freeline:gradle:0.8.6' //最新版本,请参考freeline
}
}
2,在项目主module的build.gradle中应用freeline插件的依赖:
apply plugin: 'com.antfortune.freeline'
android {
...
}
3,安装Python、并配置系统环境变量 。因为Freeline是用python写的,下面的的所有操作,包括编译等都要依赖python,所以我们要安装python,并且配置系统环境变量。
4,下载安装Freeline
安装好了python,然后在AndroidStudio中打开命令行,输入命令:
gradlew initFreeline
安装好后,项目文件结构如图。
5,运行项目
第一次全量编译,在命令行输入:
python freeline.py -f
如果我们后期修改了代码,秒秒钟就可以热更新到手机:
python freeline.py
python freeline.py -d
6,Android Studio Freeline插件
附:常用命令帮助
python freeline.py -f —— cleanBuild 强制执行一次 clean build
python freeline.py -d —— 调试 打开debug模式
python freeline.py -h —— 帮助 显示帮助信息并退出
python freeline.py -v —— 版本 显示版本信息
python freeline.py -w —— 等待 让应用程序等待 debugger
python freeline.py -a —— 全部 在所有工程上强制执行clean build 并执行-f全量编译
python freeline.py -c —— 清空 清空缓存目录和工作空间
python freeline.py -i —— 初始化 对工程进行进行freeline初始化配置