AndroidStudio提升打包的效率

前言:

AndroidStudio的代码结构和eclipse不同,它可以提供单工程多module的形式。虽然这种方式对于一些场景来说很方便编码,但多建立一个module就需要多维护一个module。所以如果仅仅是为了方便写代码而建立一个module是会降低应用打包速度的,一些简单的结构就没比较建立一个module。


这个项目中的module有很多,所以gradle在编译的时候会去检测module的依赖链,gradle会帮助我们层层梳理module之间的关系,避免因为module之间相互引用而来带的问题。这些梳理工作和module的合并工作都会带来build的时间,如果你的项目build十分缓慢,我强烈建议你去梳理下module的关系,合并部分module。将稳定的底层module打包为aar,上传到公司的maven仓库,借此来加快build速度。

1.删除无用的文件
当你新建项目时默认在建立module的同时会建立test目录:
如果你根本没有编写测试代码的打算,你完全可以删除test目录。
当然,如果你的module就是纯代码,根本没用到资源文件,也请一并把res目录删除掉。


2.删除主项目中无用的资源文件
项目开发中多少都会存留一些无用的代码和资源,资源越多打包合并资源的时间就越长。然而删除无用的代码对于提升打包速度的作用微乎其微,我们可以利用混淆这一利器在打release包的时候将无用代码一次性剔除掉。对于资源文件,as提供了自动检测失效文件和删除的功能,这个绝对值得一试。

在弹出的对话框中,建议不要勾选删除无用的id,因为databinding会用到一些id,但这在代码中没有体现,所以as会认为这些id是无用的。如果你删除了这些id,那么就等着编译失败吧。别问我是怎么知道的T_T。顺便说一下,每次做这种操作前记得commit一下,方便做diff。

3.其他

1)减少方法数,不使用multidex

2)对第三方库进行优化(利用debugCompile来依赖debug时才用到的库、利用更小的库替代现有的库、利用exclude来排出某些不需要的依赖)
比如:在我们的项目中,我利用了自己编写的网络请求模块进行网络请求,所以我就想要剔除掉rn引入的okhttp,我又发现它还引入了support包,而我项目中也肯定有support包,所以我也想要排出掉它(不排除support包也没事,gradle会仅包含最新的库版本,我这里仅仅是举个例子)

3)放弃lambda表达式,谨慎使用AspectJ:目前android不支持lambda,所以很多人都引入了 retrolambda。一旦你引入了这个库,你就必须面临着字节码转换而带来的build慢的问题。你用的越多,代码看起来越简单,但build时间也会越来越长。所以,我不推荐在目前的阶段使用它,还是等等看看谷歌jack的表现吧。

4)dev包中设置minSdkVersion为21:android5.0对于mulitdex做了优化,具体可以参考官方的文章,我就直接说怎么做就好。先在gradle的配置中添加一个flavors,比如叫做dev,在dev中配置最小支持的android版本为21.

5)开启offline:这个是最简单直接的加速方案了,效果极其明显!

6)优化gradle

7)优化crashlytics的upload


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值