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 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使用入门相关推荐
- 博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客
博客 学院 下载 GitChat 论坛 问答 商城 头条 活动 码云 ITeye 写博客 发Chat 登录注册 常见8种算法总结 转载 2017年03月16日 22:23:43 目录 冒泡排序 鸡尾酒 ...
- android怎么增量编译,阿里秒级android增量编译工具freeLine的使用入门
阿里发力了,吸取了Instant Run,Buck,LayoutCast 三者的经验,freeLine的表现确实不错,经过笔者这些天的试毒,有一些体会,分享给大家. 具体介绍,一篇更好的介绍文章:ht ...
- 用Construct 2制作入门小游戏~
今天在软导课上了解到了Construct 2这个神器,本零基础菜鸟决定尝试做一个简单的小游戏(实际上是入门的教程啊= = 首先呢,肯定是到官网下载软件啊,点击我下载~ 等安装完毕后我便按照新手教程开始 ...
- Docker入门六部曲——Swarm
原文链接:http://www.dubby.cn/detail.html?id=8738 准备工作 安装Docker(版本最低1.13). 安装好Docker Compose,上一篇文章介绍过的. 安 ...
- Docker入门六部曲——Stack
原文链接:http://www.dubby.cn/detail.html?id=8739 准备知识 安装Docker(版本最低1.13). 阅读完Docker入门六部曲--Swarm,并且完成其中介绍 ...
- Docker入门六部曲——服务
原文链接:http://www.dubby.cn/detail.html?id=8735 准备 已经安装好Docker 1.13或者以上的版本. 安装好Docker Compose.如果你是用的是Do ...
- 【springboot】入门
简介: springBoot是spring团队为了整合spring全家桶中的系列框架做研究出来的一个轻量级框架.随着spring4.0推出而推出,springBoot可以説是J2SEE的一站式解决方案 ...
- SpringBoot (一) :入门篇 Hello World
什么是SpringBoot Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不 ...
- 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题
入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...
最新文章
- 贾扬清出任阿里巴巴开源技术委员会负责人
- iOS应用数据持久化(一)
- ASP.NET - 演练:创建网页以显示 XML 数据
- python遇到一个问题_新手学习python遇到的问题
- Spring详解(四)------注解配置IOC、DI
- WinForm中日期控件开窗
- KubeSphere对于已经部署的服务进行修改后重新进行部署
- Flutter进阶第14篇:支付宝支付【下】
- 压力测试 Monkey 应用程序无响应ANR Application No Response(转)
- 云计算项目实战——系统API模块
- 第三季-第11课-进程控制理论
- 【最新首发】创维电视安装第三方软件教程
- 在CSDN开通博客专栏后如何发布文章及改进建议(图文)
- 卷积神经网络原理简述
- 为串的模式匹配。模式匹
- 使用python PIL 模块合成图片
- VS2017调用Matlab2016b进行绘图
- 我在国企外包一年的经历和感受
- 自编码器,变分自编码器和生成对抗网络异同
- java web QQ(三)
热门文章
- DevOps中的质量内建实践
- Beyond Compare(bcompare.exe)报错误“应用程序发生错误”解决方案
- 解决idea 搜狗输入法 光标不跟随问题
- 探讨:在Mac新系统下安装新版XAMPP过程中遇到到的坑以及解决办法
- 你需要启用steam社区界面功能以进行购买_GTA5OL:名钻赌场豪劫新手如何购买与安装图文教程...
- 数据湖加速器GooseFS,加速湖上数据分析性能
- 【连载】【FPGA黑金开发板】Verilog HDL那些事儿--12864(ST7565P)液晶驱动(十三)
- glade java_如何在Java Gnome / GTK程序中使用Glade UI(.glade文件)?
- KK(凯文·凯利)给年轻人的建议
- Java项目:SSM药品进货销售管理系统