Android秒级编译工具Freeline
Freeline 是 Android 平台上的秒级编译方案,Instant Run 的替代品,由蚂蚁聚宝Android 团队开发,它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并部署到设备上,有效地减少了日常开发中的大量重新编译与安装的耗时,为Android开发者节省很多喝杯咖啡的时间 : )
最近看到不少有关Freeline的文章呀~今天终于决定要实践一下啦,过程当然要记录下来。
Github上面有中英文文档都有,介绍、原理说明以及使用步骤什么的都有写清楚,现在就按照文档来开始使用吧。
首先,配置build.gradle文件

我的project下的build.gradle,截个图看看,我还当初还有引用butterknife

我的app下的build.gradle

命令行执行以下命令来下载 freeline 的 python 和二进制依赖
- Windows[CMD]: gradlew initFreeline
- Linux/Mac: ./gradlew initFreeline
对于国内的用户来说,如果你的下载的时候速度很慢,你也可以加上参数,执行gradlew initFreeline -Pmirror,这样就会从国内镜像地址来下载。
也可以使用参数-PfreelineVersion={your-specific-version}来下载特定版本的 freeline 依赖。
如果你的工程结构较为复杂,在第一次使用 freeline 编译的时候报错了的话,你可以添加一些 freeline 提供的配置项,来适配你的工程。具体可以看 Freeline DSL References。
我用的Windows,没办法,真买不起mac啊,还需努力提升自己,提高技术,努力赚钱才行呐,于是,我按了下cmd,按下gradlew initFreeline -Pmirror,得到这结果

咦,不对,突然又机制一把,找到AS中Terminal页面,继续输入gradlew initFreeline -Pmirror

然后一直打点点。应该就在下载了吧~

等待了二十分钟后,中途也一直在打印东西,点点加其他,最终出现这结果,下载还挺久哈!
Usage
Freeline 最快捷的使用方法就是直接安装 Android Studio 插件。
在 Android Studio 中,通过以下路径 Preferences → Plugins → Browse repositories,搜索“freeline”,并安装。
我没找到Preferences 可能是Setting的其他叫法吗~我点到File -> Settings -> Plugins ->Browse repositories,搜索下载安装

然后重启AS,出现了Run Freeline的按钮


于是,我点击了一下蓝色按钮,旁边出现

哈哈~我的Windows环境没有python,去下载一个
Python官网:https://www.python.org/


只是个环境,我选择了这个下载安装了,安装到F盘一个文件夹中,然后在系统的环境变量中的path加上python的安装路径。打开cmd,输入python。

应该可以哒!重启AS,再次点击蓝色按钮。

no why,不知道原因,在github的issues看到

好吧,重新去下载一个python2.7.x 吧~再尝试下。

好了,重启AS,点击蓝色按钮


打印了一堆东西,还有running time,编译是不是快了点啊,好像是吧,哈哈哈~总之尝鲜成功了。
后来发现Log中报Freeline没有初始化的错误,还需要在Applincation中的oncreate添加FreelineCore.init(this)
还有有时候项目中原来的简单封装ToastMaker跳不出来吐司,需要clean一下项目.
Android秒级编译工具Freeline的更多相关文章
- Android 秒级编译 Freeline
http://mp.weixin.qq.com/s?__biz=MzA4NTQwNDcyMA==&mid=2650662410&idx=1&sn=c654fa7b0cc8c91 ...
- Freeline--Android平台上的秒级编译方案
Freeline 技术揭秘 Freeline是什么? Freeline是蚂蚁金服旗下一站式理财平台蚂蚁聚宝团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部 ...
- Android studio 加速编译方法
JRebel for Android 是一个Android Studio的插件,可以大大加速Android Studio的编译速度,对于小项目来说或许不明显:但是当项目达到一定的规模时,它对于Andr ...
- android开发环境与工具使用相关备忘录
一.名称简介 1.ADT(Android Development Tools) 可以简单理解为在eclipse下开发安卓的插件或工具包. 查看当前ADT版本方法:help-> about ecl ...
- 《Android逆向反编译代码注入》 - 逆向安全入门必看视频教程
适合人群: Android开发人员.逆向反编译开发人员.以及对Android逆向安全感兴趣的朋友. 视频地址: 51CTO学院:https://edu.51cto.com/course/24485 ...
- Android工程运用阿里freeline10秒快速编译分享
git地址:https://github.com/alibaba/freeline 目前已经更新到0.6.0版本. 原来编译一次需要几分钟甚至几十分钟的android工程,运用freeline,1分钟 ...
- Android反编译工具的使用-Android Killer
今天百度搜索“Android反编译”搜索出来的结果大多数都是比较传统的教程.刚接触反编译的时候,我也是从这些教程慢慢学起的.在后来的学习过程中,我接触到比较方便操作的Android反编译.在这,我将使 ...
- ApkDec android反编译工具
转自:http://www.newasp.net/soft/70498.html 下载 ApkDec是一款免费的绿色APK反编译工具 forandroid ,由android开发者社区开发. ApkD ...
- Android 反编译工具简介
Android 反编译工具: 所需工具:1 apktool : 用于获取资源文件 2 dex2Jar : 用于将classes.dex转化成jar文件 2 jd-gui: 将jar文件转化成java文 ...
随机推荐
- zookeeper,hadoop安装部署其实与防火墙无关
网上查看了很多人关于hadoop,zookeeper的文章,大多都把关闭防火墙作为首要前提,个人觉得这大可不必. 首先你需要知道你部署的是什么东西,它需要哪些端口即可.把相关端口打开就可以了啊.然后把 ...
- sed 插入和替换
sed -i '/参考行/i\插入内容' *.ksh sed -i 's,原内容,替换后内容,g' *.ksh
- 使用phonegap开发安卓HLS播放软件解决方案
目前使用phonegap开发的手机应用,很少涉及视频播放的功能,究其原因,主要是phonegap提供的API里面对视频播放功能支持度不够,当然播放音频一般情况下还是能够实现的,由于工作需要,自己研究了 ...
- [BZOJ4013][HNOI2015]实验比较(树形DP)
4013: [HNOI2015]实验比较 Time Limit: 5 Sec Memory Limit: 512 MBSubmit: 756 Solved: 394[Submit][Status] ...
- BZOJ 2157 旅游(动态树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2157 [题目大意] 支持修改边,链上查询最大值最小值总和,以及链上求相反数 [题解] ...
- BZOJ 3083 遥远的国度(树链剖分+线段树)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3083 [题目大意] 链修改,子树最小值查询和换根操作 [题解] 树链剖分练习题. [代 ...
- 【矩阵乘法】Gym - 101412C - One-Dimensional Cellular Automaton
给你一个一维细胞自动机,第i个格子在时刻t的状态是这样获得的,问你t时刻的状态. 把0时刻的状态视作一个列向量,发现状态转移其实是一个n*n的矩阵(以n=5为例), B C A B C ...
- [JSOI2018]军训列队
[JSOI2018]军训列队 题目大意: \(n(n\le5\times10^5)\)个学生排成一排,第\(i\)个学生的位置为\(a_i\).\(m(m\le5\times10^5)\)次命令,每次 ...
- Linux PHP 编译参数详解(二)
对于喜欢玩开源软件的童鞋么,都喜欢自己编译安装程序,本文说明下如何编译安装php的详细参数. 示例: ./configure \ --prefix=/usr/local/php --with-zlib ...
- java锁对象
在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口 ...