0%

使用秒级编译方案-Freeline

转载请注明出处
http://blog.csdn.net/guodongandroid/article/details/54174776
本文来自【孫小逗的博客】

使用秒级编译方案-Freeline

一、关于Freeline

Freeline是蚂蚁金服旗下开发的一个基于动态替换的编译方案,运用到项目后可以极大的提高项目编译速度。相比较现在的instant-run,buck,layoutcast等方案快数倍。
GitHub地址
官网

二、集成Freeline

这里只说Windows下的集成,Linux/Mac 请自行百度/Google。(屌丝没有MacBook)

1、集成前的准备

你需要提前安装 Python 2.7+(Freeline 暂时还不支持 Python 3+),安装完之后需要重启一下 Android Studio。
Python 2.7.13下载地址

2、如何集成

提供了两种方式集成Freeline,最简单的方法是通过 Android Studio 的插件来集成(实际上是对命令行的方式做了封装,提供自动化的解决方案),另一种则是手工通过修改配置与执行命令的方式来集成。
建议使用方法二,自己先捣鼓一遍,最后使用插件。
方法一:Android Studio 插件
在最新版本的 Freeline 插件中,提供了自动化一键接入的方式,不需要像以前一样手动修改 build.gradle 配置文件了.

在Android Studio中,通过以下路径 Preferences → Plugins → Browse repositories ,搜索“freeline”,并安装,安装完成重启AS。

Freeline

直接点击 Run Freeline 的按钮,就可以享受Freeline带来的开发效率的提升啦(会先需要一个较为耗时的全量编译过程)。

第一次使用的时候,插件会自动检测是否安装了 Freeline,如果没有安装的话会弹出提示,按照提示点击“确定”,插件就会自动为你修改配置文件,并自动安装 Freeline 的依赖文件。

方法二:命令行方式
配置 project-level 的 build.gradle,加入 freeline-gradle 的依赖:

1
classpath 'com.antfortune.freeline:gradle:x.x.x'

这里写图片描述

然后,在你的主 module 的 build.gradle 中,应用 freeline 插件的依赖:

1
apply plugin: 'com.antfortune.freeline'

这里写图片描述

最后,在命令行执行以下命令来下载 freeline 的 python 和二进制依赖。

1
Windows[CMD]: gradlew initFreeline

注意!注意!注意!

  • 在CMD下执行命令需要CD到项目根目录,在AS下的Terminal可以直接执行。
  • 对于国内的同学,如果你在下载的时候速度很慢,你也可以加上参数,执行 gradlew initFreeline -Pmirror,这样就会从国内镜像地址来下载。(推荐使用)
  • 在执行的过程中,freeline可能会下载一些东西,有时候因为网络的样子会下载很慢,比如这样子的:

这里写图片描述

这时候可以提前下载对应版本的gradle,然后将下载好的zip文件放入这个目录下,freeline会自动解压:

这里写图片描述

再次执行 gradlew initFreeline -Pmirror,Freeline会再下载相应的依赖包,一般不会出错了,直到出现这步时,耐心等待一会儿。这个时候已经开始了对Freeline的初始化。

这里写图片描述

初始化成功:

这里写图片描述

接下来就是第一次的全量编译,耐心等待编译完成(只有第一次全量编译时间较长,以后的增量编译都是10s之内的):

执行一条 python freeline.py 命令即可。

这里写图片描述

这是第一次编译的时间是40秒。然后我修改了一个数值进行第二次编译。

这里写图片描述

0.7秒即编译完成,不到一眨眼的功夫,484想说“卧槽”。

注意又来了!

  • freeline的limitation,目前还不支持连接多台设备。目前方案参考 Issues233

  • 在自己的Application类中加入以下代码:

    FreelineCore.init(this);

  • 有时增量编译完成后并不会自动launch activity,但这时已经把更新部署到设备上了。

  • 有其他问题多去看看Issues

这里写图片描述

至此,Freeline已经成功的集成到了我们的项目中,如果觉得每次执行命令行比较繁琐,可以根据方法一在AS中安装Freeline的插件。

欢迎关注我的其它发布渠道