相信用过studio的人都有一个体会,小项目还好,但是碰到编译完成30-40M的APK项目的时候,那个慢和卡真是不能用言语表达,我可以描述一下我的现状:

1.项目由6个module和几十个sdk组成(这里的sdk不包括开源第三方,都是公司自己的)

2.编译完成debug包40M左右

3.更新一次代码,重头编译一次快则30分钟,慢40分钟很常见

4.编译的时候真是卡,8G内存,用了7G多,编译时啥也干不了,一天编译几次就over了,太浪费时间

基于以上问题,开始寻找出路,FreeLine进入我的法眼,然而真实体验也并不能解决以上问题,就我的使用体验来说,有以下几个问题:

1.初次编译卡,占内存依旧

2.初次编译时长并不比用studio好多少

3.初次使用配置还有些坑要踩,比如关闭混淆等

虽然有以上几个问题,但是我还是在使用,为什么?因为增量编译确实强大,改一个sdk的一个文件,十几秒基本部署到手机上,这对于以前编译一次要很长时间的我来说简直是福音。下面开始介绍FreeLine的使用过程。

FreeLine是蚂蚁聚宝团队开发的,github地址:https://github.com/alibaba/freeline, FreeLine的原理说明地址:https://yq.aliyun.com/articles/59122

FreeLine集成过程如下(注意windows要按照python2.7):

1.在Android studio上安装FreeLine插件。

File-》settings-》plugin 搜索安装

2.配置项目的build.gradle文件,增加如下内容,最新版本0.7.3.1

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.antfortune.freeline:gradle:0.6.3'

}

}

3.主module的build.gradle文件引入freeline的依赖

apply plugin: 'com.antfortune.freeline'

dependencies {

debugCompile 'com.antfortune.freeline:runtime:0.6.3'

releaseCompile 'com.antfortune.freeline:runtime-no-op:0.6.3'

testCompile 'com.antfortune.freeline:runtime-no-op:0.6.3'

}

4.主module的build.gradle文件配置渠道

android {

freeline {

hack true

productFlavor “haha”

}

productFlavors {

haha{

}

}

}

5.主module的build.gradle文件关闭混淆

// multiDexKeepProguard file('multidex.keep') // 如果有,要注掉

minifyEnabled false                           // 关闭混淆

6.在application文件中初始化FreeLine

import com.antfortune.freeline.FreelineCore;

public void onCreate() {

super.onCreate();

FreelineCore.init(this);

}

FreeLine的编译过程:

1.在studio的freeline窗口中输入:gradlew clean,清理项目(freeline增量编译快的前提是手机中的apk是完全用freeline编译的,不可以和studio混合编译)

2.在studio的freeline窗口中输入:gradlew initFreeline -Pmirror,初始化配置

3.在studio的freeline窗口中输入:python freeline.py,开始进行编译

4.编译时间会随项目大小而有所不同,此时需要静静,耐心,静静,耐心,静静,耐心等待

5.编译成功后,会自动装到手机上并启动

6.首次全量编译完成后,修改项目源代码需要增量编译时,插上装有全量编译apk的手机,执行命令:python freeline.py

7.首次全量编译完成后,需要重新全量编译时,执行命令:python freeline.py -f,也可以将1-3步重新执行一遍

FreeLine使用过程中遇到的坑:

1.全量编译完成,首次启动app崩溃,log显示can not find ***class,此时可能是由于混淆打开了,需要关闭混淆,如果build.gradle中有下面这句,要注掉

multiDexKeepProguard file('multidex.keep')

2.全量编译启动正常,开始增量编译时提示找不到手机,尝试十几次后失败,此时建议你重新配置一遍,网上的其他方法尝试过,并没有解决问题

3.编译过程提示没有productFlavor,此时用你默认的渠道即可,如果没有,可以在主module的build.gradle中加入:

android {

freeline {

hack true

productFlavor “haha”

}

productFlavors {

haha{

}

}

}

以上就是我使用FreeLine的总结,以后有时间看一下原理,再来分享

Android studio集成FreeLine加速编译相关推荐

  1. android studio crashlytics,完美解决Android Studio集成crashlytics后无法编译的问题

    问题描述: 在用fabric集成后编译出现如下错误, Error:Cause: hostname in certificate didn't match: != OR OR build.gradle部 ...

  2. 【Android RTMP】Android Studio 集成 x264 开源库 ( Ubuntu 交叉编译 | Android Studio 导入函数库 )

    文章目录 安卓直播推流专栏博客总结 一. x264 简介 二. x264 交叉编译 三. Android Studio 导入函数库 四. 交叉编译版本 五. GitHub 项目地址 安卓直播推流专栏博 ...

  3. Android Studio集成NDK开发环境

    这几天需要使用C语言在底层编译,所以就打算在Android studio中打造可以编译C的环境,毕竟使用Android studio久了,就不怎么想用Eclipse开发了 废话不多说,直接来看一波集成 ...

  4. android 集成ijkplayer,android studio集成ijkplayer的示例代码

    介绍 ijkplayer是一款非常火的开源视频播放器,android和IOS通用.关于怎么编译怎么导入android Studio中自己的项目,其中坑很多,本篇记录下自己的操作记录.ijkplayer ...

  5. 【CMake】Android Studio 中使用 CMake 编译单个 C++ 源文件 ( 常用的 CMake 命令解析 )

    文章目录 一.Android Studio 中使用 CMake 编译单个 C++ 源文件 二.cmake_minimum_required 命令设置最小 CMake 版本 三.project 命令设置 ...

  6. 集成android studio,Android Studio集成

    Android Studio集成 1.依赖方法,在Module下的Gradle文件中添加 compile 'com.chosen.kf5sdk:kf5sdklibrary:1.6.0' 2.全局初始化 ...

  7. Android Studio 4.2Previw版本编译错误提示Disable offline mode and rerun the build

    编译出现的问题 项目在Android Studio 4.2Previw版本编译错误提示Disable offline mode and rerun the build No cached versio ...

  8. Android 项目集成 Freeline

    1.什么是FreeLine? (官网描述) Freeline是由蚂蚁聚宝Android团队开发的一款针对Android平台的增量编译工具.它可以充分利用缓存文件,在几秒钟内迅速地对代码的改动进行编译并 ...

  9. android studio freeline,Android Studio配置freeline遇到的问题

    大家都知道,在开发android应用时编译耗时是个很头疼的问题.Android官方有Instant run增量更新方案,能快速编译安装apk到设备,提高开发效率.原理就是安装包只更新改动的部分.后来阿 ...

最新文章

  1. mysql更改数据库数据存储目录_MySQL更改数据库数据存储目录
  2. 菜鸟学习之linux用户行为日志审计方案
  3. East Central North America Region 2015
  4. mysql router安装教程_MySQL Router 安装与配置
  5. platform设备驱动全透析
  6. B类产品的科学化设计与分析流程
  7. PyQt5初级——2
  8. 【干货】求之不得的 Java 文档教程大汇总!
  9. python二维数组去重_PHP二维数组去重
  10. 原来信用卡肉这么肥,怪不得银行天天给你发短信叫你办理
  11. web开发 学习_是否想学习Web开发但不知道从哪里开始?
  12. CVPR 2020丨基于范例的精细可控图像翻译CoCosNet,一键生成你心目中的图像
  13. Android学习之-TextView的滑动效果
  14. 多任务学习Multi-Task Learning
  15. 软件及其公司篇--项目管理(七)
  16. 大漠插件最新版本7.2031
  17. 读书笔记5.1——《让数字说话:审计,就这么简单》:孙含晖
  18. mysql用户域账户登录_使用本地系统帐户和域用户帐户两者区别(microsoft SQLServer2000...
  19. 【20220318】执行脚本提示killed
  20. seaborn做图技巧

热门文章

  1. word简历里如何添加新的一页
  2. DataX学习笔记-Reader插件开发
  3. elasticsearch算法之推荐系统的相似度算法(一)
  4. ISD1820c语言程序,DIY制作ISD1820语音录放/喊话器,附原理图/PCB/BOM/程序
  5. 还不习惯Office 2007
  6. 好奇怪的游戏(洛谷)
  7. 圆形英文在html中,圆形元素在网页设计中的巧妙运用
  8. 高校人员信息管理系统(Java课程设计,带图形界面版)
  9. 超声波风速风向仪换能器 能够在大风速下稳定工作
  10. Linux/macOS 安装 Kaldi