Freeline

Freeline是什么

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

稳定性方面:完善的基线对齐,进程级别异常隔离机制。

性能方面:内部采用了类似Facebook的开源工具 buck 的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,另外在class及dex,resources层面作了相应缓存策略,做到真正增量开发,另外引入并优化 buck 的部分加速组件dx,DexMerger,资源编译方面,深入改造了aapt 资源编译流程,当资源发生改变时候,秒级完成增量包编译,其中增量包仅含最小的变更集合(10Kb~数百Kb内),后期也被运用到线上进行资源/代码动态替换。相比目前 instant-runbucklayoutcast 等方案快数倍速度。

简单的说:Freeline 是一个能让你快速调试Android程序的插件,速度有多快呢?官方的说法是可以让你的APP编译加速十倍,很吸引人吧,听说比 jrebel 还快,不过我没用过 jrebel 这个付费的产品。

官方介绍

Freeline源码

https://github.com/alibaba/freeline

Freeline原理

https://yq.aliyun.com/articles/59122

如何使用Freeline

配置build.gradle文件

配置 project-level 的 build.gradle,加入 freeline-gradle 的依赖:(注意以最新版本为准)


然后,在你的 主module 的 build.gradle 中,应用 freeline插件 的依赖:

apply plugin: 'com.antfortune.freeline'
android {
   ...
}

执行运行代码

  • Windows[CMD]: gradlew initFreeline -Pmirror

  • Linux/Mac: ./gradlew initFreeline

对于国内的用户来说,如果你的下载的时候速度很慢,你也可以加上参数,执行 gradlew initFreeline -Pmirror,这样就会从国内镜像地址来下载。

安装插件

Freeline 最快捷的使用方法就是直接安装Android Studio插件。

在Android Studio中,通过以下路径 Preferences → Plugins → Browse repositories,搜索“freeline”,并安装。


实例

git clone git@github.com:alibaba/freeline.git
cd freeline/sample
./gradlew initFreeline //mac
gradlew initFreeline -Pmirror //windows
python freeline.py

爬坑之旅

以上官方给出的介绍和使用,当你真正开始使用的时候,坑就来了,不要紧,勇敢的踏过去。

找不到gradlew命令

如果你是 windows平台,你打开cmd你会发现,当你输入 gradlew initFreeline 的时候,你会发现根本没有 gradlew命令,那么官方是说毛线。

'gradlew' 不是内部或外部命令,也不是可运行的程序或批处理文件。

解决:看看代码的意思,官方的意思是要你初始化 Freeline,那么 gradlew 这个命令在哪呢?打开你的项目的根目录,你就会发现 gradlew文件,所以其实打开 cmd 以后,你还必须找到根目录再去运行 gradlew initFreeline,其实你会发现在 studio 的 Terminal 里面,已经默认找到根目录,因此只需要在里面键入 gradlew initFreeline 命令行即可

gradlew initFreeline命令执行的太慢

当你运行 gradlew initFreeline 的时候,有时候会卡住,要求你下载完整的gradle的包

C:\Users\yourname\.gradle\wrapper\dists


问题的关键就是在于,你在下载gradle包的时候被防火墙墙了。

注意一下你的studio里面用到的gradle,使用本地的:


解决:去单独下载一个完整的gradle-2.14.1-all包:

gradle-all 包下载地址

https://services.gradle.org/distributions

自备梯子,或者是其他途径,总之你需要一个完整的包。扔进 2.14.1-all 的根目录里面:


再次运行 gradlew initFreeline -Pmirror 命令,它自己首先会解压缩完整的gradle包,然后稍等一下,它会自己下载需要的所有插件,我在我的项目里面的 OkHttp_Proj 示范,结果如下:


Python下载与配置

当我们的 gradlew initFreeline 命令运行完毕以后,我们还需要下载 python环境,因为脚本语言是用 python 写的。

Python下载

https://www.python.org/downloads

同样是自备梯子,或者其他地方下载。在这我建议直接装进C盘,然后添加环境变量。打开你的 cmd 输入以下代码:

//根据你下载的版本判断
PATH=PATH;c:\python27

成功以后,cmd 键入 Python,会出现相关的版本信息。如果你原来电脑上没有 Python环境 的话,Python 安装配置以后,一定要重启 studio,不然无法识别 python 关键字。

运行freeline.py文件

记住了:

  • 安装了 Python 以后一定要重启studio。

  • 同样是在项目的根目录以下运行 python freeline.py 代码。


建议

我建议最后再安装 freeline插件,至少你先搞清楚,每一步的实现的机制,再使用 freeline,会清晰很多。

最后这些环境都配置好了以后,下一次项目就不用那么麻烦了,直接点击 freeline 的那颗小按钮,它会自动给你添加各种配置并且自动运行的。

补充

下载freeline.zip太慢

当我们配置好studio以后,打开 cmd 找到对应项目的根目录以后,执行:

gradlew initFreeline -Pmirror

会发现 一直卡在build构建的那里,看一眼提示,显示的 正在下载freeline.zip,到根目录下,分析原因就是因为网络的问题,无法下载 freeline.zip。我们通过dos下面,想做的无非就是下载这个 freeline.zip 的压缩包,然后解压进根目录完成快速编译。

解决之路:

打开浏览器,推荐使用chrome,打开

http://static.freelinebuild.com/freeline/0.8.4/all/freeline.zip

最新版本号为准,下载该文件,再到对应根目录下解压。

1. 如果再次执行 gradlew initFreeline 命令,还是会重新下载一个新的 freeline.zip包,但是我们已经得到的是已经下载完毕并且解压完毕的了,因此我们一看根目录,已经有了我们想要执行的 freeline.py 的 python文件,所以直接执行第二步: python freeline.py

2. 却以外发现失败了,看一眼错误提示:

没有发现一个叫作 freeline_project_description.json 的文件,freeline 很温馨的给出了解决的办法。

解决:执行下面的命令

  • Windows[CMD]: gradlew checkBeforeCleanBuild

  • Linux/Mac: ./gradlew checkBeforeCleanBuild

执行完毕以后,你们发现最后出现一个,

之前缺失的那个json文件保存进了根目录,而且已经构建成功了,也就是说,我们自己下载解压进根目录的 freeline.zip 包生效了

BUILD SUCCESSFUL 这行命令就是initFreeling最后成功的命令。

接下来再次执行 python freeline.py 构建就成功了。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值