Freeline 是什么?
Freeline 是一款 Android 平台上的秒级编译方案,能够显著地提高 Android 工程的编译速度
为什么使用FreeLine
随着Android app 工程越来越大,module越来越多,构建越来越慢有时能有十几min;FreeLine除了首次比较慢外,以后基本都是10s以内,能极大提高开发者效率,有效解决开发者的痛点
FreeLine支持的特性
- 支持标准的多模块 Gradle 工程的增量构建
- 并发执行增量编译任务
- 进程级别异常隔离机制
- 支持 so 动态更新
- 支持 resource.arsc 缓存
- 支持 retrolambda
- 支持 DataBinding
- 支持各类主流注解库(APT)
- 支持 Windows,Linux,Mac 平台
以下列表为 Freeline 支持的热更新情况:
` | Java | drawable, layout, etc. | res/values | native so |
---|---|---|---|---|
add | √ | √ | √ | √ |
change | √ | √ | √ | √ |
remove | √ | √ | x | - |
Freeline 已经分别在 API 17,19,22,23的 Android 模拟器、Android 6.0 Nexus 6P 以及 Android 4.4 锤子手机上经过测试。如果想要充分体验 Freeline 增量编译的速度的话,最好使用 Android 5.0+ 的设备
接入
方法一:AndroidStudio插件
首先按照freeLine插件 进入Preferences → Plugins → Browse repositories 输入freeline关键字 安装插件,安装完毕重启AS;在工具栏会出现
点击freeline插件按钮,就可以享受freeline的便捷了,注意首次会执行耗时的全量编译过程。
首次使用freeline时,freeline插件会检测你的app是否配置了freeline,如果没有配置会弹窗提示,直接点击”确定”,此时插件会自动修改app 配置文件,并自动安装 Freeline 的依赖文件
方法二:手动配置
进入project 根 build.gradle文件 添加freeline依赖
buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:2.2.2' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files classpath 'com.antfortune.freeline:gradle:0.8.6'//add freeline dependencies } }
进入主工程module 编辑build.gradle
apply plugin: 'com.antfortune.freeline' android{ ... }
在命令行执行以下命令来下载 freeline 的 python 和二进制依赖
gradlew initFreeline //for Windows[CMD] /gradlew initFreeline // for Linux/Mac
对于国内的用户来说,如果你的下载的时候速度很慢,你也可以加上参数,执行
gradlew initFreeline -Pmirror
这样就会从国内镜像地址来下载
配置成功后以后每次调试就可以使用下面命令或者点击AS工具栏”freeline”按钮
python freeline.py
FreeLine缺陷
- 第一次增量资源编译的时候可能会有点慢,因为需要额外传递一个完整的资源包
- 不支持删除带id的资源,否则可能导致aapt编译出错
- 暂不支持抽象类的增量编译
- 部分 APT 插件可能需要单独适配
- 不支持开启 Jack 编译
- 不支持 Kotlin / Groovy / Scala
更多详情