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

freeline使用入门相关推荐

  1. 博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客

    博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客 发Chat 登录注册 常见8种算法总结 转载 2017年03月16日 22:23:43 目录 冒泡排序 鸡尾酒 ...

  2. android怎么增量编译,阿里秒级android增量编译工具freeLine的使用入门

    阿里发力了,吸取了Instant Run,Buck,LayoutCast 三者的经验,freeLine的表现确实不错,经过笔者这些天的试毒,有一些体会,分享给大家. 具体介绍,一篇更好的介绍文章:ht ...

  3. 用Construct 2制作入门小游戏~

    今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...

  4. Docker入门六部曲——Swarm

    原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...

  5. Docker入门六部曲——Stack

    原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...

  6. Docker入门六部曲——服务

    原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...

  7. 【springboot】入门

    简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...

  8. SpringBoot (一) :入门篇 Hello World

    什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...

  9. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

最新文章

  1. 贾扬清出任阿里巴巴开源技术委员会负责人
  2. iOS应用数据持久化(一)
  3. ASP.NET - 演练:创建网页以显示 XML 数据
  4. python遇到一个问题_新手学习python遇到的问题
  5. Spring详解(四)------注解配置IOC、DI
  6. WinForm中日期控件开窗
  7. KubeSphere对于已经部署的服务进行修改后重新进行部署
  8. Flutter进阶第14篇:支付宝支付【下】
  9. 压力测试 Monkey 应用程序无响应ANR Application No Response(转)
  10. 云计算项目实战——系统API模块
  11. 第三季-第11课-进程控制理论
  12. 【最新首发】创维电视安装第三方软件教程
  13. 在CSDN开通博客专栏后如何发布文章及改进建议(图文)
  14. 卷积神经网络原理简述
  15. 为串的模式匹配。模式匹
  16. 使用python PIL 模块合成图片
  17. VS2017调用Matlab2016b进行绘图
  18. 我在国企外包一年的经历和感受
  19. 自编码器,变分自编码器和生成对抗网络异同
  20. java web QQ(三)

热门文章

  1. DevOps中的质量内建实践
  2. Beyond Compare(bcompare.exe)报错误“应用程序发生错误”解决方案
  3. 解决idea 搜狗输入法 光标不跟随问题
  4. 探讨:在Mac新系统下安装新版XAMPP过程中遇到到的坑以及解决办法
  5. 你需要启用steam社区界面功能以进行购买_GTA5OL:名钻赌场豪劫新手如何购买与安装图文教程...
  6. 数据湖加速器GooseFS,加速湖上数据分析性能
  7. 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--12864(ST7565P)液晶驱动(十三)
  8. glade java_如何在Java Gnome / GTK程序中使用Glade UI(.glade文件)?
  9. KK(凯文·凯利)给年轻人的建议
  10. Java项目:SSM药品进货销售管理系统