freeline使用入门

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.配置主module下的build.gradle文件

a. 应用插件 (放在android插件之后)
apply plugin: ‘com.antfortune.freeline’
b. 添加freeline配置
在android {} 中添加, 如下:

freeline {
hack true
//如果你定义了productFlavor, 记得把下面的注释放开, 把{Your-productFlavor}替换成你相应的productFlavor
//productFlavor '{Your-productFlavor}'
}
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'
}

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

三. 运行

1.由于freeline依赖于python, 所以你首先要安装python2.7+的运行环境
2.始化你freeline (仅第一次), 在项目根目录下执行下列命令:
gradlew initFreeline

这一步会下载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 -> 安装插件, 操作如下图:
这里写图片描述

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值