freeline使用入门
一. freeline简介
Freeline的GitHub地址: https://github.com/alibaba/freeline
下面是其原理说明
Freeline原理 (https://yq.aliyun.com/articles/59122?spm=5176.8091938.0.0.1Bw3mU)
从中可以看出freeline加速的三驾马车是: 缓存、并行、Hot Swap (Instant Run原理)
二. 配置
安装phyton 2.7 环境
目前只支持 python 2.7
freeline 和 instant run 可能会出现不兼容[我就出现了],如果集成了 freeline 后用 instant run 编译后运行到手机上出现问题或报错,移除 freeline 的集成,即可。或者使用 freeline 命令编译部署就不会出现问题
1.配置根目录下的build.gradle文件
在项目根目录下的build.gradle文件中添加freeline插件:
classpath ‘com.antfortune.freeline:gradle:0.8.1’,
如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
1.配置主module下的build.gradle文件
a. 应用插件 (放在android插件之后)
apply plugin: ‘com.antfortune.freeline’
b. 添加freeline配置
在android {} 中添加, 如下:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
3.(这一步可以和上面的”c”同时省略 — 参考这里) 在代码中初始化freeline
三. 运行
1.由于freeline依赖于python, 所以你首先要安装python2.7+的运行环境
2.始化你freeline (仅第一次), 在项目根目录下执行下列命令:
- 1
这一步会下载freeline的相关依赖, 会在项目根目录下生成freeline.py文件和freeline目录
3.现在可以开始运行你的程序了, 执行命令
python freeline.py , 首次运行 可以加上-f选项 (python freeline.py -f) ,
-f选项会强制执行clean任务, 然后再执行build任务
当然你也可以查看freeline的帮助, 执行命令: python freeline.py -h
首次运行会比较慢, 因为需要读取项目信息, 生成文件, 计算依赖
当然如果你觉得每次都输入命名来构建项目不方便, 你也可以安装freeline的插件, Preferences -> Plugin -> Browse repositories … -> 输入freeline -> 安装插件, 操作如下图:
宁波整形医院http://www.lyxcl.org/
宁波整形美容医院http://www.iyestar.com/
安装之后会在AS的工具栏多了个freeline的按钮, 如下, 以后运行点击这个按钮就可以了
第一次运行项目, 45秒, 输出如下:
四. release与debug区分 (不将freeline代码打包进release包中)
1.如果省略了上面”c”和”3”步骤, 那么代码对freeline就没有依赖了, 因此打debug可以使用freeline, 而release则用常规方法打包 (用常规的gradlew打包就行./gradlew :app:assembleRelease). 目前官方的使用教程里是没有”c”和”3”步骤的, 只有你在build.gradle里面设置了applicationProxy false, 才需要”c”和”3”步骤, 参考:
https://link.jianshu.com/?t=https://github.com/alibaba/freeline/issues/280
2.如果用了”c”和”3”步骤那么, 那么可以将release依赖改成下面这样:
releaseProvided ‘com.antfortune.freeline:runtime-no-op:0.8.1’
这样打包的时候, freeline的库代码不会被打包进apk中.
.
代码初始化的地方改成这样:
if(BuildConfig.DEBUG) FreelineCore.init(this);
这这样打releae包时, BuildConfig.DEBUG是false, 编译器会优化掉这段代码, 因此去掉了代码中对freeline的依赖.
这样打出来的apk包也不会包含freeline相关的代码 !!
注意:
自己在项目上亲自体验了,综合使用下来确实很爽,真正实现了秒级编译,不管你是更改了代码文件还是资源文件,直接编译运行真正是秒级的,而在之前可能得等上个一两分钟。但是使用下来有以下注意事项:
第一次增量资源编译的时候有点慢,不过也就在第一次的时候慢,后面速度蹭蹭的;
如果设备上之前有安装不是用 Freeline 编译打包的 apk,请先卸载,之后再用 Freeline 编译打包;
第一次 Freeline 编译安装之后不会自动启动 App,这点请大家注意下,因为第一次我一直在等待,等了好久以为没成功,后来才发现其实安装成功了的,只是没有打开而已;
不支持多设备同时连接,也就是说不管是模拟器还是真机,只允许同时一台设备连接,否则会失败;
不支持删除带 id 的资源,否则可能导致 aapt 编译出错;
如果你的项目有使用 Kotlin 语言,那么 Freeline 不支持;
如果你的项目又想用 Freeline,又想使用 Gradle,记得执行 Gradle 脚本之前先执行 ./gradlew clean,否则会编译失败;
总体而已 Freeline 会有一些限制,以及兼容性可能也会有点问题,但是试用下来没遇到多大的问题,而且对于调试的效率提升简直太大了,值得推荐给大家!