freeline使用入门

来源:互联网 发布:日本人的气质 知乎 编辑:程序博客网 时间:2024/05/22 17:42

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’, 
如下:

buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:2.2.2'        classpath 'com.antfortune.freeline:gradle:0.8.1'    }}allprojects {    repositories {        jcenter()    }}
  • 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 {} 中添加, 如下:

freeline {hack true//如果你定义了productFlavor, 记得把下面的注释放开, 把{Your-productFlavor}替换成你相应的productFlavor//productFlavor '{Your-productFlavor}'}
  • 1
  • 2
  • 3
  • 4
  • 5
c. (**这一步可以和下面的"3"同时省略 --- [参考这里](https://github.com/alibaba/freeline/issues/280)**) 在dependencies块中添加对freeline的依赖, 如下:    ```dependencies {          // others       // ....      // dependencies for freeline      debugCompile 'com.antfortune.freeline:runtime:0.8.1'      //如果release包不想依赖freeline, 可以改成`releaseProvided com.antfortune.freeline:runtime-no-op:0.8.1'`, 后面会进行说明.       releaseCompile 'com.antfortune.freeline:runtime-no-op:0.8.1'       testCompile 'com.antfortune.freeline:runtime-no-op:0.8.1'}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

3.(这一步可以和上面的”c”同时省略 — 参考这里) 在代码中初始化freeline

三. 运行

1.由于freeline依赖于python, 所以你首先要安装python2.7+的运行环境

2.始化你freeline (仅第一次), 在项目根目录下执行下列命令:

gradlew initFreeline
  • 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 会有一些限制,以及兼容性可能也会有点问题,但是试用下来没遇到多大的问题,而且对于调试的效率提升简直太大了,值得推荐给大家!

原创粉丝点击