使用Freeline提高你的工作效率

来源:互联网 发布:域名购买哪家网站靠谱 编辑:程序博客网 时间:2024/06/05 03:48

现在做开发基本都在使用AndroidStudio了。很少有人使用adt了。因为as确实比adt好用多了,现在github上面也基本都是as项目了。as就是有一点编译速度赶不上adt快,虽然之后出来了快速编译,但是速度还是远远比不上adt的编译速度,编译大一点的项目之间这时间都能去喝杯咖啡了。这篇虽然不是技术干货,但是也算是个辅助吧。希望看完能让你的工作效率更高。

感觉绝不是主观自生的,而是外物作用于感官的结果。

——— 伏尔泰 《哲学书简


版权声明:转载必须注明本文转自严振杰的博客:http://blog.yanzhenjie.com

尤其像我这种公司电脑配置渣,还是机械硬盘的开发者肯定是忍不了的,太影响开发效率了,所以我们就想办法加快编译速度了,当然加快编译的手段有很多种,在Android官方Instant Run出来之前,很多开发者是使用第三方的一些库来提高开发效率,底层原理几乎都是apk热更新原理。在Instant Run出来之后,很多开发者都开始用这个被称为闪电编译的功能,但是它还是有很多不足的,具体大家可以看官网的说明:Instant Run。不过我相信Instant Run后来肯定会越来越好,我们就不用依赖什么第三方了,比如Jack和apt就不能一起用,导致使用了apt的开发者使用lambda就得用retrolambda,这些都是需要官方来优化和改进的。废话不多说下面正式开撸 。

Freeline介绍

今天向大家介绍一款Android平台的增量编译工具:Freeline。Freeline是由阿里巴巴蚂蚁聚宝Android团队开发的一款针对Android平台的增量编译工具,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时。

Freeline代码开源在Github: 
https://github.com/alibaba/freeline

Freeline在云栖社区的原理说明: 
https://yq.aliyun.com/articles/59122?spm=5176.8091938.0.0.1Bw3mU

介绍这款工具也是我本人使用了好几周以后觉得真心不错,所以来分享给大家,有什么使用上的问题欢迎来交流啊,自从使用了Freeline后真的省下了很多喝咖啡的时间,本人表示非常欢喜。

以下是从官网整理来的一些说明: 
Freeline内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,另外在class及dex,resources层面作了相应缓存策略,做到真正增量开发,另外引入并优化buck的部分加速组件dx,DexMerger,资源编译方面,深入改造了Aapt资源编译流程,当资源发生改变时候,秒级完成增量包编译,其中增量包仅含最小的变更集合(10Kb~数百Kb内),后期也被运用到线上进行资源/代码动态替换。

Freeline的特性:

  • 支持调试
  • 系统最低支持到api level 9
  • 支持标准的多模块Gradle工程的增量构建
  • 并发执行增量编译任务
  • 进程级别异常隔离机制
  • 支持so动态更新
  • 支持resource.arsc缓存
  • 支持retrolambda
  • 支持DataBinding
  • 支持各类主流注解库
  • 支持Windows,Linux,Mac平台

当然每个事物都有自己的不足,现在已经Freeline的一些不足:

  • 第一次增量资源编译的时候可能会有点慢
  • 不支持删除带id的资源,否则可能导致aapt编译出错
  • 暂不支持抽象类的增量编译
  • 不支持开启 Jack 编译
  • 不支持 Kotlin/Groovy/Scala

看了上面的这些介绍后不知道你有没有心动?什么,已经心动了?那么下面我们来看看它到底怎么用?

Freeline使用教程

1、在项目level的build.gradle中添加插件依赖

buildscript {    repositories {        jcenter()    }    dependencies {        ...        classpath 'com.antfortune.freeline:gradle:0.8.3'    }}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

2、在项目主module的build.gradle中应用freeline插件的依赖

apply plugin: 'com.antfortune.freeline'android {    ...}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

3、一些注意点 
修改了上面的gradle文件后,在你的编辑区域顶部会有一个黄色的警告条,警告条的右边有一个Sync Now的超链接,嗯没错你必须点一下,来同步编译项目。 
上面说过freeline最低支持到android level api 9,如果你在这里遇到提示minSdkVersion是14,你就得检查一下是否开启了Jack。

4、安装Python、并配置系统环境变量 
因为Freeline是用python写的,下面的的所有操作,包括编译等都要依赖python,所以我们要安装python,并且配置系统环境变量,因为每个同学的系统不一样,所以这里我给出python的下载页面,其它的自己去Google。

Python分2.x版本和3.x版本,但是Freeline目前只支持2.x版本的,以前学过一点点python,这里为大家推荐2.7.12版: 
https://www.python.org/downloads/release/python-2712/

5、一句命令为你的项目下载安装Freeline 
现在你必须已经安装好了python,然后在AndroidStudio中打开命令行,输入一下命令,将自动为我们下载freeline相关文件到项目下:

gradle initFreeline
  • 1
  • 1

如果你系统没有配置gradle的环境,将会提示你命令不存在,由于AndroidStudio已经为项目配置了默认的gredle,所以输入以下命名也是一样的:

gradlew initFreeline
  • 1
  • 1

先别急着输入:因为默认是从国外镜像地址下载,由于众所周知的原因,你很可能下载不到,所以我们可以使用国内镜像,所以如果上述命令没有通过,那么咱们在命令后面加一个-Pmirror

gradlew initFreeline -Pmirror
  • 1
  • 1

大概一分钟左右就下载好了,下载好之后你的项目结构大概是这样子:

图片

6、运行项目 
好了,一切准备就绪,下面就可以把你的手机连接运行项目了,当然这里就不是像以前一样点击那个绿色的Run按钮了,而是使用命令。

第一次运行是需要全量编译,所以第一次的时间相对较长,甚至比gradle编译还要长,但是后期的运行会很快。 
第一次全量编译,在命令行输入:

python freeline.py -f
  • 1
  • 1

如果我们后期修改了代码,秒秒钟就可以热更新到手机:

python freeline.py
  • 1
  • 1

如果你要调试应用,在命令行输入:

python freeline.py -d 
  • 1
  • 1

常用命令帮助

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初始化配置

Android Studio Freeline插件

一般我们开发的时候,想要运行项目时就点一下绿色的Run按钮,几乎不用命令运行项目,所以FreeLine也有这样简单的操作方式,我们需要为AndroidStudio安装一个插件:

Setting → Plugins → 输入freeline → 点击Browse repositories → 点击Install → 重启AndroidStudio
  • 1
  • 1

下面来一个图解:

安装Freeline插件图解

安装好之后根据提示重启AndroidStudio,然后会在绿色的Run按钮后面会多出来一个蓝色白心的Freeline Run按钮,如果要运行项目就点击下图中Freeline Run按钮即可,如下图:

Freeline Run按钮

好啦到这里就全部结束啦,快去试试吧。



0 0