登录

去注册

登录

注册

去登录

注册

每日一问 如果项目要开始做编译速度优化,你会考虑从哪些地方入手?

xiaoyang   2019-07-16   收藏

除了明显的disable一些可选性task,还有什么思路吗?  


本周/3

5

暂时想到的:

1.编译操作一般放在远程机上编译,部署一台超强的pc

2.as和gralde plugin采用最新的release版本

3.gradle参数设置,那些并行,最大内存都调高

4.增量编译,目前kapt对于增量编译不是很支持

5.只指定编译自己关心的task,其他无用的task跳过或者忽略

6.不使用动态版本号这种东西,容易更新到不稳定,并且需要下载时间

7.可以将部分png资源转为webp资源,aapt编译res时候,会用内置算法优化res/drawable目录下的png文件,会耗时比较久


目测apk的编译流程如下:

1.编译aidl为java文件

2.aapt处理res文件,生成R文件

3.将java,kotlin代码编译成class

4.假如有注解处理器,会调用多次注解处理器来执行apt,生成新的代码,编译生成apt的代码

5.假如自定义transform的话,会执行自定义transform用于方法增强或者asm操作

6.执行ProguardTransform,混淆

7.执行DexTransform,生成dex文件

8.执行package,将dex,asset,res,manifest合并进一个zip

9.签名并对齐


回复
0

他们说的都很全了,但是还有几个点


1 不要在项目中放全部的源码,抽成library放maven

2  搭建一私有仓库服务,将谷歌的,阿里的都配置上代理,并把自己的都放进来,最好能翻个墙,舒服

3. 不要使用动态版本号

4. 自己开发transform之类的,最好支持增量编译

5. 组件化


以上,除了第1 第2 比较明显,其他提速都不怎么明显


最明显的应该是 :  花钱搞台超强的PC

回复
0

@axx123 说的很全面啦,补充一点是,组件化实际上就是有这方面的功能的。通过组件化我们可以用 grovvy 语言编写 gradle 编译多样化处理。

此外,在远程编译上其实也有很多的优化,当然本地也是可以的。
可以从缓存命中、--offline、减少一些打包资源处理多方面考虑

回复
0

换新电脑,快到飞起

回复
0

除了AS本身的设置,剩下的就是把依赖库都搞成aar,能飞起来

回复
CastleDrv : @CastleDrv 

我说的是源码依赖的库

2019-07-15 回复
0

想要加快编译速度,首先电脑的配置不能低。

以下是我百度找来的:

修改项目根目录中的gradle.properties文件,加入下面几句:

#开启守护进程
org.gradle.damen=true

##开启并行编译
org.gradle.parallel=true

##启用新的孵化模式
org.gradle.configureondemand=true

编辑AndroidStudio安装目录下的bin文件夹里面 .vmoptions后缀的文件:

-Xms256m
-Xmx1280m

根据电脑实际配置修改后面的数值,并在下面加入这个:

-XX:MaxPermSize=2048m
-XX:+HeapDumpOnOutOfMemoryError
-Dfile.encoding=UTF-8

如果所有依赖的库都已下载过,在编译时可开启离线模式。

(抄自:https://blog.csdn.net/cj5785/article/details/78817686)


回复

删除留言

确认删除留言,会导致相关评论丢失?

取消 确定