Android秒级编译方案-FreeLine
Freeline 是什么?
Freeline 是一款 Android 平台上的秒级编译方案,能够显著地提高 Android 工程的编译速度
为什么使用FreeLine
随着Android app 工程越来越大,module越来越多,构建越来越慢有时能有十几min;FreeLine除了首次比较慢外,以后基本都是10s以内,能极大提高开发者效率,有效解决开发者的痛点
FreeLine支持的特性
- 支持标准的多模块 Gradle 工程的增量构建
- 并发执行增量编译任务
- 进程级别异常隔离机制
- 支持 so 动态更新
- 支持 resource.arsc 缓存
- 支持 retrolambda
- 支持 DataBinding
- 支持各类主流注解库(APT)
- 支持 Windows,Linux,Mac 平台
以下列表为 Freeline 支持的热更新情况:
` | Java | drawable, layout, etc. | res/values | native so |
---|---|---|---|---|
add | √ | √ | √ | √ |
change | √ | √ | √ | √ |
remove | √ | √ | x | - |
Freeline 已经分别在 API 17,19,22,23的 Android 模拟器、Android 6.0 Nexus 6P 以及 Android 4.4 锤子手机上经过测试。如果想要充分体验 Freeline 增量编译的速度的话,最好使用 Android 5.0+ 的设备
接入
方法一:AndroidStudio插件
首先按照freeLine插件 进入Preferences → Plugins → Browse repositories 输入freeline关键字 安装插件,安装完毕重启AS;在工具栏会出现
点击freeline插件按钮,就可以享受freeline的便捷了,注意首次会执行耗时的全量编译过程。
首次使用freeline时,freeline插件会检测你的app是否配置了freeline,如果没有配置会弹窗提示,直接点击”确定”,此时插件会自动修改app 配置文件,并自动安装 Freeline 的依赖文件
方法二:手动配置
进入project 根 build.gradle文件 添加freeline依赖
buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.2.2'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle filesclasspath 'com.antfortune.freeline:gradle:0.8.6'//add freeline dependencies} }
进入主工程module 编辑build.gradle
apply plugin: 'com.antfortune.freeline'android{... }
在命令行执行以下命令来下载 freeline 的 python 和二进制依赖
gradlew initFreeline //for Windows[CMD] /gradlew initFreeline // for Linux/Mac
对于国内的用户来说,如果你的下载的时候速度很慢,你也可以加上参数,执行
gradlew initFreeline -Pmirror
这样就会从国内镜像地址来下载
配置成功后以后每次调试就可以使用下面命令或者点击AS工具栏”freeline”按钮
python freeline.py
FreeLine缺陷
- 第一次增量资源编译的时候可能会有点慢,因为需要额外传递一个完整的资源包
- 不支持删除带id的资源,否则可能导致aapt编译出错
- 暂不支持抽象类的增量编译
- 部分 APT 插件可能需要单独适配
- 不支持开启 Jack 编译
- 不支持 Kotlin / Groovy / Scala
更多详情
FreeLine-GitHub
FreeLine-详情
Android秒级编译方案-FreeLine相关推荐
- 浅谈蚂蚁聚宝Android秒级编译
本文PPT来自蚂蚁金服高级技术专家栾砚强于10月14日在2016年杭州云栖上发表的演讲,分享主题为<蚂蚁聚宝Android秒级编译介绍--Freeline>. 传统的Android应用构建 ...
- 今日头条 Android '秒' 级编译速度优化
背景介绍 Android 项目一般使用 gradle 作为构建打包工具,而其执行速度慢也一直为人所诟病,对于今日头条 Android 项目这种千万行级别的大型工程来说,全量编译一次的时间可能高达六七分 ...
- Freeline - Android平台上的秒级编译方案
Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...
- Android 秒级编译FreeLine
项目地址:FreeLine FreeLine官网: FreeLine 1. 安装FreeLine插件 File->Settings->Plugins, 搜索输入FreeLine Plugi ...
- ClickHouse留存分析工具十亿数据秒级查询方案
作者:陈璐,腾讯 CSIG 高级数据分析师 本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可 ...
- java按秒查询数据_ClickHouse留存分析工具十亿数据秒级查询方案
作者:陈璐,腾讯 CSIG 高级数据分析师本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以 ...
- Android系统级保活方案
一.防止应用在系统低内存的时候被回收 代码路径:./frameworks/base/services/java/com/android/server/am/ActivityManagerService ...
- 最好用的Java热部署工具,无需重启项目秒级编译class代码
目录 1.部署插件 2.安装插件 3.激活使用 1.部署插件 通过Jrebel插件实现,代码的实时更新,不需要重启项目就可以更新执行代码,Jrebel插件分为客户端和服务端,服务端为License验证 ...
- DDM实践:数据库秒级平滑扩容方案
2019独角兽企业重金招聘Python工程师标准>>> 本文部分内容节选自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍 背景 随着业务增长,逻辑库存储空间不足,并发压力 ...
最新文章
- Django框架之第二篇
- VC中基于 Windows 的精确定时
- R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
- 影响Python运行效率的因素有哪些?
- loadClass和forName 的区别
- IDEA 系列安装资料及教程
- 各种 分页存储过程整理
- android 单个模块编译的方法
- [GXYCTF2019]CommonModulusAttack
- 30例 | 一文搞懂python日期时间处理
- Windows Phone 开发环境的搭建
- json文件转为excel_2分钟上手、3小时学会无代码软件开发---XML、Json处理
- javafx应用启动自动执行函数_JavaFx:Application start方法中的异常
- Vue.js组件的重要选项
- TIOBE 2 月编程语言排行榜:VB 又有人要了,Go 一直在跌!
- rm如何在Linux中删除一个大文件
- Unity 计算包围盒
- 关于在CSDN中写博客时如何插入图片
- 黄家驹的《光辉岁月》永远流传,但IT人的光辉岁月已渐远去
- idea设置java运行内存,IntelliJ IDEA 修改内存大小,使得idea运行更流畅(二)
热门文章
- 计算机技术+智能化水电站,水电工程BIM用太少?水电工程BIM案例全解读
- 十四、Java练习:一个猜数游戏
- kafka监控linux脚本,zabbix监控kafka
- 深圳内推 | ​IDEA数字经济研究院招聘NLP算法工程师/算法实习生
- 一文读懂文本处理中的对抗训练
- 鸿蒙 体验,华为鸿蒙OS全面上线,实际体验更胜EMUI11,安卓迎来“对手”
- uniCloud云函数——微信小程序登录凭证校验[code2Session](即:使用 code 换取 openid 和 session_key 等信息)解决方案
- TensorFlow——[基本图像分类]fashion-mnist及mnist_reader.py运行错误[TypeError: Invalid dimensions for image data]
- JAVA——改变观感
- HTML/CSS——@font-face 规则