Android studio集成FreeLine加速编译

相信用过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编译)