Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,由蚂蚁聚宝Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时,为Android开发者节省很多喝杯咖啡的时间 : )
最近看到不少有关Freeline的文章呀~今天终于决定要实践一下啦,过程当然要记录下来。
Github上面有中英文文档都有,介绍、原理说明以及使用步骤什么的都有写清楚,现在就按照文档来开始使用吧。
首先,配置build.gradle文件
![](http://upload-images.jianshu.io/upload_images/2012498-5f0ade3c818bb46a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/516)
我的project下的build.gradle,截个图看看,我还当初还有引用butterknife
![](http://upload-images.jianshu.io/upload_images/2012498-9b289d4be2896fb7.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
我的app下的build.gradle
![](http://upload-images.jianshu.io/upload_images/2012498-2191a962712eae73.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/488)
命令行执行以下命令来下载 freeline 的 python 和二进制依赖
- Windows[CMD]: gradlew initFreeline
- Linux/Mac: ./gradlew initFreeline
对于国内的用户来说,如果你的下载的时候速度很慢,你也可以加上参数,执行gradlew initFreeline -Pmirror,这样就会从国内镜像地址来下载。
也可以使用参数-PfreelineVersion={your-specific-version}来下载特定版本的 freeline 依赖。
如果你的工程结构较为复杂,在第一次使用 freeline 编译的时候报错了的话,你可以添加一些 freeline 提供的配置项,来适配你的工程。具体可以看 Freeline DSL References。
我用的Windows,没办法,真买不起mac啊,还需努力提升自己,提高技术,努力赚钱才行呐,于是,我按了下cmd,按下gradlew initFreeline -Pmirror,得到这结果
![](http://upload-images.jianshu.io/upload_images/2012498-dc7a16e2a2ff4117.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/455)
咦,不对,突然又机制一把,找到AS中Terminal页面,继续输入gradlew initFreeline -Pmirror
![](http://upload-images.jianshu.io/upload_images/2012498-e603e9eae0764618.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
然后一直打点点。应该就在下载了吧~
![](http://upload-images.jianshu.io/upload_images/2012498-3d5b254c82b13bfe.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/574)
等待了二十分钟后,中途也一直在打印东西,点点加其他,最终出现这结果,下载还挺久哈!
Usage
Freeline 最快捷的使用方法就是直接安装 Android Studio 插件。
在 Android Studio 中,通过以下路径 Preferences → Plugins → Browse repositories,搜索“freeline”,并安装。
我没找到Preferences 可能是Setting的其他叫法吗~我点到File -> Settings -> Plugins ->Browse repositories,搜索下载安装
![](http://upload-images.jianshu.io/upload_images/2012498-e8b69ed6d202c416.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
然后重启AS,出现了Run Freeline的按钮
![](http://upload-images.jianshu.io/upload_images/2012498-dff416d0666f0d4a.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/303)
![](http://upload-images.jianshu.io/upload_images/2012498-4e27622f2d6397d6.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
于是,我点击了一下蓝色按钮,旁边出现
![](http://upload-images.jianshu.io/upload_images/2012498-1339b83a74c1639e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/526)
哈哈~我的Windows环境没有python,去下载一个
Python官网:https://www.python.org/
![](http://upload-images.jianshu.io/upload_images/2012498-92ea167930e6593c.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
![](http://upload-images.jianshu.io/upload_images/2012498-08cacb8c92398f36.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/478)
只是个环境,我选择了这个下载安装了,安装到F盘一个文件夹中,然后在系统的环境变量中的path加上python的安装路径。打开cmd,输入python。
![](http://upload-images.jianshu.io/upload_images/2012498-3c299ec7d8585c5e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/647)
应该可以哒!重启AS,再次点击蓝色按钮。
![](http://upload-images.jianshu.io/upload_images/2012498-e693a7a2adbd9efb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
no why,不知道原因,在github的issues看到
![](http://upload-images.jianshu.io/upload_images/2012498-e8a291d23bd2daf9.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
好吧,重新去下载一个python2.7.x 吧~再尝试下。
![](http://upload-images.jianshu.io/upload_images/2012498-928d934b8e59be8e.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/643)
好了,重启AS,点击蓝色按钮
![](http://upload-images.jianshu.io/upload_images/2012498-9cf6009778b5a7f5.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/700)
![](http://upload-images.jianshu.io/upload_images/2012498-a1f11574d94644c4.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/626)
打印了一堆东西,还有running time,编译是不是快了点啊,好像是吧,哈哈哈~总之尝鲜成功了。
后来发现Log中报Freeline没有初始化的错误,还需要在Applincation中的oncreate添加FreelineCore.init(this)
还有有时候项目中原来的简单封装ToastMaker跳不出来吐司,需要clean一下项目.