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 的依赖文件

方法二:手动配置

  1. 进入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}
    }
  2. 进入主工程module 编辑build.gradle

    apply plugin: 'com.antfortune.freeline'android{...
    }
  3. 在命令行执行以下命令来下载 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相关推荐

  1. 浅谈蚂蚁聚宝Android秒级编译

    本文PPT来自蚂蚁金服高级技术专家栾砚强于10月14日在2016年杭州云栖上发表的演讲,分享主题为<蚂蚁聚宝Android秒级编译介绍--Freeline>. 传统的Android应用构建 ...

  2. 今日头条 Android '秒' 级编译速度优化

    背景介绍 Android 项目一般使用 gradle 作为构建打包工具,而其执行速度慢也一直为人所诟病,对于今日头条 Android 项目这种千万行级别的大型工程来说,全量编译一次的时间可能高达六七分 ...

  3. Freeline - Android平台上的秒级编译方案

    Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...

  4. Android 秒级编译FreeLine

    项目地址:FreeLine FreeLine官网: FreeLine 1. 安装FreeLine插件 File->Settings->Plugins, 搜索输入FreeLine Plugi ...

  5. ClickHouse留存分析工具十亿数据秒级查询方案

    作者:陈璐,腾讯 CSIG 高级数据分析师 本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可 ...

  6. java按秒查询数据_ClickHouse留存分析工具十亿数据秒级查询方案

    作者:陈璐,腾讯 CSIG 高级数据分析师本文实践了对于千万级别的用户,操作总数达万级别,每日几十亿操作流水的留存分析工具秒级别查询的数据构建方案.同时,除了留存分析,对于用户群分析,事件分析等也可以 ...

  7. Android系统级保活方案

    一.防止应用在系统低内存的时候被回收 代码路径:./frameworks/base/services/java/com/android/server/am/ActivityManagerService ...

  8. 最好用的Java热部署工具,无需重启项目秒级编译class代码

    目录 1.部署插件 2.安装插件 3.激活使用 1.部署插件 通过Jrebel插件实现,代码的实时更新,不需要重启项目就可以更新执行代码,Jrebel插件分为客户端和服务端,服务端为License验证 ...

  9. DDM实践:数据库秒级平滑扩容方案

    2019独角兽企业重金招聘Python工程师标准>>> 本文部分内容节选自华为云帮助中心的分布式数据库中间件(DDM)服务的产品介绍 背景 随着业务增长,逻辑库存储空间不足,并发压力 ...

最新文章

  1. Django框架之第二篇
  2. VC中基于 Windows 的精确定时
  3. R语言Kolmogorov-Smirnov假设检验(正态性检验):检验数据的正态性
  4. 影响Python运行效率的因素有哪些?
  5. loadClass和forName 的区别
  6. IDEA 系列安装资料及教程
  7. 各种 分页存储过程整理
  8. android 单个模块编译的方法
  9. [GXYCTF2019]CommonModulusAttack
  10. 30例 | 一文搞懂python日期时间处理
  11. Windows Phone 开发环境的搭建
  12. json文件转为excel_2分钟上手、3小时学会无代码软件开发---XML、Json处理
  13. javafx应用启动自动执行函数_JavaFx:Application start方法中的异常
  14. Vue.js组件的重要选项
  15. TIOBE 2 月编程语言排行榜:VB 又有人要了,Go 一直在跌!
  16. rm如何在Linux中删除一个大文件
  17. Unity 计算包围盒
  18. 关于在CSDN中写博客时如何插入图片
  19. 黄家驹的《光辉岁月》永远流传,但IT人的光辉岁月已渐远去
  20. idea设置java运行内存,IntelliJ IDEA 修改内存大小,使得idea运行更流畅(二)

热门文章

  1. 计算机技术+智能化水电站,水电工程BIM用太少?水电工程BIM案例全解读
  2. 十四、Java练习:一个猜数游戏
  3. kafka监控linux脚本,zabbix监控kafka
  4. 深圳内推 | ​IDEA数字经济研究院招聘NLP算法工程师/算法实习生
  5. 一文读懂文本处理中的对抗训练
  6. 鸿蒙 体验,华为鸿蒙OS全面上线,实际体验更胜EMUI11,安卓迎来“对手”
  7. uniCloud云函数——微信小程序登录凭证校验[code2Session](即:使用 code 换取 openid 和 session_key 等信息)解决方案
  8. TensorFlow——[基本图像分类]fashion-mnist及mnist_reader.py运行错误[TypeError: Invalid dimensions for image data]
  9. JAVA——改变观感
  10. HTML/CSS——@font-face 规则