Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队在Android平台上的量身定做的一个基于动态替换的编译方案,稳定性方面:完善的基线对齐,进程级别异常隔离机制。
性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想, 并对代码及资源编译流程做了深入的性能优化。
Freeline是什么?
Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,另外在class及dex,resources层面作了相应缓存策略,做到真正增量开发,另外引入并优化buck的部分加速组件dx,DexMerger,资源编译方面,深入改造了Aapt资源编译流程,当资源发生改变时候,秒级完成增量包编译,其中增量包仅含最小的变更集合(10Kb~数百Kb内),后期也被运用到线上进行资源/代码动态替换。相比目前instant-run,buck,layoutcast等方案快数倍速度。
简单的说:Freeline是一个能让你快速调试android程序的插件,速度有多快呢?官方的说法是可以让你的APP编译加速十倍,很吸引人吧,听说比jrebel还快,不过我没用过jrebel这个付费的产品。
Freeline源码
Freeline原理
如何使用Freeline
- 先介绍官方的说法。
- 爬坑之旅
配置build.gradle文件
配置project-level的build.gradle,加入freeline-gradle的依赖:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.antfortune.freeline:gradle:0.8.2'
}
}
然后,在你的主module的build.gradle中,应用freeline插件的依赖:
apply plugin: 'com.antfortune.freeline'
android {
...
}
执行运行代码
- Windows[CMD]: gradlew initFreeline
- Linux/Mac: ./gradlew initFreeline
对于国内的用户来说,如果你的下载的时候速度很慢,你也可以加上参数,执行gradlew initFreeline -Pmirror,这样就会从国内镜像地址来下载。
安装插件
Freeline最快捷的使用方法就是直接安装Android Studio插件。
在Android Studio中,通过以下路径Preferences → Plugins → Browse repositories,搜索“freeline”,并安装。
实例
git clone git@github.com:alibaba/freeline.git
cd freeline/sample
./gradlew initFreeline //mac
gradlew initFreeline -Pmirror //windows
python freeline.py
爬坑之旅
以上官方给出的介绍和使用,当你真正开始使用的时候,坑就来了,不要紧,勇敢的踏过去。
找不到gradlew命令
如果你是windows平台,你打开cmd你会发现,当你输入gradlew initFreeline的时候,你会发现根本没有gradlew命令,那么官方是说毛线。
'gradlew' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
解决:看看代码的意思,官方的意思是要你初始化Freeline,那么gradlew这个命令在哪呢?打开你的项目的根目录,你就会发现gradlew文件,所以其实打开cmd以后,你还必须找到根目录再去运行gradlew initFreeline,其实你会发现在studio的Terminal里面,已经默认找到根目录,因此只需要在里面键入gradlew initFreeline命令行即可
gradlew initFreeline命令执行的太慢
当你运行gradlew initFreeline的时候,有时候会卡住,要求你下载完整的gradle的包C:\Users\yourname\.gradle\wrapper\dists
问题的关键就是在于,你在下载gradle包的时候被防火墙墙了。
注意一下你的studio里面用到的gradle,使用本地的:
解决:去单独下载一个完整的gradle-2.14.1-all包
gradle-all 包下载地址
自备梯子,或者是其他途径,总之你需要一个完整的包。
扔进2.14.1-all的根目录里面
再次运行gradlew initFreeline -Pmirror命令,它自己首先会解压缩完整的gradle包,然后稍等一下,它会自己下载需要的所有插件,我在我的项目里面的OkHttp_Proj示范,结果如下:
Python 下载与配置
当我们的gradlew initFreeline 命令运行完毕以后,我们还需要下载python环境,因为脚本语言是用python写的。
同样是自备梯子,或者其他地方 下载
在这我建议直接装进C盘,然后添加环境变量。
打开你的cmd输入以下代码:
PATH=PATH;c:\python27 //根据你下载的版本判断
成功以后,cmd键入Python,会出现相关的版本信息。
如果你原来电脑上没有Python环境的话,Python安装配置以后,一定要重启studio,不然无法识别python关键字。
运行freeline.py文件
记住了:
- 安装了Python以后一定要重启studio。
- 同样是在项目的根目录以下运行 python freeline.py 代码。
建议
我建议最后再安装freeline插件,至少你先搞清楚,每一步的实现的机制,再使用freeline,会清晰很多。
最后这些环境都配置好了以后,下一次项目就不用那么麻烦了,直接点击freeline的那颗小按钮,它会自动给你添加各种配置并且自动运行的。
Enjoying it

