关闭

Freeline 让AndroidStudio快的飞起来

标签: FreelineGradle编译Freeline教程as加速as很慢
14218人阅读 评论(20) 收藏 举报
分类:

你的AndroidStudio编译时是否很卡?你的Gradle编译时是否很慢,运行一次要等10分钟?如果你还没有遇到,那可能说明你的电脑配置够好,或者项目还不够大。

版权声明:转载必须注明本文转自严振杰的博客: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.4'
    }
}

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

apply plugin: 'com.antfortune.freeline'

android {
    ...
}

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

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

gradlew initFreeline

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

gradlew initFreeline -Pmirror

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

图片

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

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

python freeline.py -f

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

python freeline.py

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

python freeline.py -d 

使用遇到问题?

有小伙伴反馈说编译时遇到问题了,先上一张图:

这里写图片描述

图要看看不清的话看这里,我复制出来了:

Your local freeline version 0.8.3 is lower than the lastest release version 0.8.4. Please update the freeline version in build.gradle. If you still want the specific version of freeline, you can execute the initial command with the extra parameter `-PfreelineVersion={your-wanted-version}`. eg: `gradlew initFreeline -PfreelineVersion=0.8.3`

就是说freeline的最新版本是0.8.4了,而你本地用的是0.8.3,所以要你升级一下,把项目的gradle文件中依赖的插件版本号改为0.8.4即可解决。

常用命令帮助

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

下面来一个图解:

安装Freeline插件图解

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

Freeline Run按钮

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


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

12
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

AndroidStudio 快速集成 秒级编译工具Freeline

Freeline (Android平台上的秒级编译平台)快速集成
  • u013132758
  • u013132758
  • 2016-12-01 15:09
  • 1353

雷军:只要站在风口 猪也能飞起来

“我现在很焦虑。”说这话时,雷军笑眯眯地,让人难以置信。但仔细看,他确实有些疲惫。   他的办公桌上堆满了资料和文件,而且还很奇怪地竖着一个天秤。平日里,雷军会用它来称手机和里面元器件的...
  • wangshfa
  • wangshfa
  • 2014-12-03 09:45
  • 17671

让Android模拟飞起来

Android模拟加速运行,不可思议
  • wisepragma
  • wisepragma
  • 2014-10-07 00:42
  • 1828

AndroidStudio——Freeline的使用

Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队在Android平台上的量身定做的一个基于动态替换的编译方案,稳定性方面:完善的基线对齐,进程级别异常隔离机制。 性能方面:内部采用了类似Fa...
  • liumeng920
  • liumeng920
  • 2017-01-06 09:25
  • 862

AndroidStudio快速部署插件JRebel&Freeline

/**  * 不得不说在AndroidStudio运行代码简直太慢了,虽然有很多Gradle配置加速但是效果不是很明显,这大大影响了我们的开发效率,根据自己的学习这里大家提供了两款工具JRebel和阿...
  • weiwozhiyi
  • weiwozhiyi
  • 2016-11-25 09:09
  • 1533

AndroidStudio下freeline秒级编译集成

这段时间,随着功能需求的增加,项目代码越来越庞大了,编译出来的apk差不多有50M了,所以这就带来了一个问题,每一次编译的时间都特别长,期间也在网上找了好些方法,不过效果都不怎么显著。不过突然发现Fr...
  • taiyang5946
  • taiyang5946
  • 2017-04-08 12:53
  • 200

freeline的Adnroid Studio插件

  • 2016-09-05 14:13
  • 6KB
  • 下载

freeline_gradle.zip

  • 2016-09-01 23:29
  • 373KB
  • 下载

freeline 阿里分包框架

  • 2016-11-06 16:51
  • 26.27MB
  • 下载

Freeline--Android平台上的秒级编译方案

Freeline技术揭秘Freeline是什么?Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,...
  • xiangzhihong8
  • xiangzhihong8
  • 2016-12-13 09:33
  • 1893
    个人资料
    • 访问:1609340次
    • 积分:6527
    • 等级:
    • 排名:第4283名
    • 原创:52篇
    • 转载:0篇
    • 译文:1篇
    • 评论:1274条
    我的微信公众号
    欢迎关注我的公众号,不定期为您推送优选博文,生活趣事!
    关注我的微信公众号

    关注我的微博
    友情链接


    我的Github

    QQ交流群 547839514

    博客专栏