首页 > 其他分享 >Freeline - Android平台上的秒级编译方案

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

时间:2022-12-08 21:00:53浏览次数:67  
标签:插件 编译 freeline 版本 Freeline Android 下载


FreeLine是什么?

Freeline是蚂蚁金服旗下一站式理财平台​​蚂蚁聚宝​​团队15年10月在Android平台上的量身定做的一个基于动态替换的编译方案,5月阿里集团内部开源,稳定性方面:完善的基线对齐,进程级别异常隔离机制。性能方面:内部采用了类似Facebook的开源工具buck的多工程多任务并发思想:端口扫描,代码扫描,并发编译,并发dx,并发merge dex等策略,在多核机器上有明显加速效果,另外在class及dex,resources层面作了相应缓存策略,做到真正增量开发,另外引入并优化buck的部分加速组件dx,DexMerger,资源编译方面,深入改造了Aapt资源编译流程,当资源发生改变时候,秒级完成增量包编译,其中增量包仅含最小的变更集合(10Kb~数百Kb内),后期也被运用到线上进行资源/代码动态替换。相比目前instant-run,buck,layoutcast等方案快数倍速度。

项目地址:​​https://github.com/alibaba/freeline​

使用教程

1.安装Python环境

从​​python官网​​下载Python 2.7.13版本(注意,一定要下载这个版本,具体原因下面会提到),安装成功并配置好环境变量。

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

2.配置

project build.gradle

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

module build.gradle

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

最后,执行以下命令来下载Freeline的Python的二进制依赖

  • Windows[CMD]: gradlew initFreeline
  • Linux/Mac: ./gradlew initFreeline

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

Freeline - Android平台上的秒级编译方案_Android Freeline_04

插件

File → Settings... → Plugins → Browse repositories... → Freeline

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

该插件暂时不支持Python3.0以后的版本,否则会出现下面的错误:

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

3.代码植入

在Application中添加下面的代码:

public void onCreate() {
FreelineCore.init(this);
super.onCreate();

}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 1
  • 2
  • 3
  • 4
  • 5

之后,点击工具栏上的那个蓝色按钮,就可以运行项目了。 
首次编译时间较长,因要生成python相关文件,后期编译时间只需要几秒钟…

写在最后:

1.遇到问题请去freeline提issue,开发者还是很用心的,回复评论的速度都很快,这个必须赞

2.freeline版本发生升级,务必需要执行gradle initFreeline -Pmirror下载新版本资源,runtime文件夹也要随更新一起更新

3.建议使用freeline的插件直接编译,免去手动敲命令的劳累,路径为Preferences → Plugins → Browse repositories

4.gradle的任何改变都会触发全量更新

5.freeline目前只支持debug buildType,并且不支持混淆

这个必须要说说,看看我们项目的配置,注意Build Variant必须选debug,选择其他的,无法集成Freeline,这也导致我们的项目中无法使用Freeline。

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

6.freeline的编译与as的编译应该是不兼容的,至少我这里会报错,所以两者如果发生切换必须先Clean Project

7.不支持多设备,所以你一旦换上新设备,可能会提示找不到设备。这时候,你就Clean Project或者Sync Project或者插拔手机,肯定会成功的,这点其实相当让人苦恼

参考资料: 
Freeline - Android平台上的秒级编译方案 —— ​​​https://yq.aliyun.com/articles/59122​



标签:插件,编译,freeline,版本,Freeline,Android,下载
From: https://blog.51cto.com/u_11407799/5923475

相关文章

  • Android自定义View和Canvas绘图解析
    自定义view的流程分为measure、layout、draw三个主要步骤,今天我们通过源码来分下下measure的过程我们从顶级view开始,顶级view即DecorView,view的事件都是先经过这个DecorVi......
  • android中使用heap分析工具导出到MAT
    android中可以使用heap分析工具导出到MAT,方法为1)在ECLIPSE工具栏中,选择如下图2要将dalvik的导出到java格式的MAT,可以这样 hprof-convdump.......
  • 编译arm_qt-4.5_build出错与Linux vi的使用
     ​​Linux(vi基本用法)​​ 在Linux下,可以键入vimtutor命令,有一个包含实操的vim教程。1.VI的三种命令模式 1)Command(命令)模式,用于输入命令; 2)......
  • ubuntu 10.04下编译linux内核make menuconfig报 'make menuconfig' requires the ncur
    在ubuntu11.10下编译linux内核出现如下错误:​​echo@echo-desktop:~/freescale/kernel/src/linux-2.6.35-sitek20091229$​​ makemenuconfig ***Unabletofindth......
  • 百度 Android 直播秒开体验优化
    作者|任雪龙导读网络直播功能作为一项互联网基本能力已经越来越重要,手机中的直播功能也越来越完善,电商直播、新闻直播、娱乐直播等多种直播类型为用户提供了丰富的直播内......
  • 您上传的 APK 或 Android App Bundle 内含活动、活动别名、服务或广播接收器,这些项目
    您上传的APK或AndroidAppBundle内含活动、活动别名、服务或广播接收器,这些项目有intent过滤器,但没有“android:exported”属性设置。此文件无法在Android12或更......
  • linux 下编译与发布jar包 ---主要用在本地开发环境
    我们的代码在git上,然后通过如下命令进行下载与编译。编译后,运行我们执行的jar包build-demo.sh ---git下载代码到本地、maven发布包restart-demo-mock.sh ---在本机......
  • android 服务
      1.创建服务 Exported:是否允许除了当前程序之外的其他程序访问这个服务Enable:是否启用这个服务 点击完成后自动生成importandroid.app.Service;importandroid.conte......
  • android build.gradle
    现在android开发SDK一般选择用最新的SDK版本,这是Google官方强烈建议的。app能运行的Android版本不是由SDK决定的,是由每一个项目的minSDK决定的。SDK都是向下兼容的。SDK......
  • android studio AndroidManifest
     一、目录结构 1.AndroidManifest.xml它是一个清单文件,提供应用的基本信息<?xmlversion="1.0"encoding="utf-8"?><!--package是android应用程序的包名,相当工程的id--......