注册

以往项目中的压缩apk经验

过往的开发中,由于项目中使用的图片、音乐文件、特殊字体文件,以及导入的第三包等导致了最后生成的apk往往体积过大。过大的apk对于用户来说体验会非常的差,下载慢、耗费流量多等。所以开发者需要适当的压缩自己的apk。

1.无需国际化时,去除额外的语言配置

在项目app module的build.gradle中的defaultConfig中配置 resConfigs,仅配置需要的语言选项。

26f4d47dc8ce4effbd366c2988b5e2e1~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?

2.去除不需要的so架构

在项目app module的build.gradle中的defautlConfig中配置 ndk,仅配置需要的so库。 armeabi-v7a,arm64-v8a基本满足需求,如果需要用虚拟机测试可以加上x86

f02fcc8960064ac685c626f6811b8481~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?

3.使用webg替代png或jpg

webp格式是谷歌推出的一种有损压缩格式,这种图片格式相比png或jpg格式的图片损失的质量几乎可以忽略不计,但是压缩后的图片体积却比png或jpg要小很多。

4.混淆配置

分为代码混淆和资源混淆

4.1代码混淆

proguard可以混淆以及优化代码,减小dex文件的大小,开启后需要需要配置proguard-rules.pro文件来保留不需要混淆的类,以及第三方包的类。 在项目app module的buildType中的release中设置minifyEnable为true,即可开启混淆, proguardFiles 是你制定的混淆规则文件。

b0ad853df20846f7a6a7c12ce3e81e24~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?

4.3资源混淆

关于资源混淆,我使用的是微信的AndResGuard,它会将资源路径变短。 项目github地址:github.com/shwenzhang/…

配置过程: 1.在项目级的build.gradle添加

515c529cf38343c9bea2ac8a15d25778~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?

2.在app module中的build.gralde中添加插件

3fd5048442ef4c43a156660dd19b078b~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?

3.在app module中的build.gradle中添加andResGuard,需要注意的是whiteList,该项目的github中有列了一些三方库需要添加的白名单,还有特别要注意的是项目中如果有使用getIdentifier来查找drawable资源或者mipmap资源,需要将资源名也加入到白名单。

bd58689edc8a4d8da4bca4bc2ada39d0~tplv-k3u1fbpfcp-zoom-in-crop-mark:3024:0:0:0.awebp?


作者:ChenYhong
来源:juejin.cn/post/7027480502193881101

0 个评论

要回复文章请先登录注册