对于Android开发来说,关于减少APK体积的重要性,就不再多说了,直接进入正题吧。
首先对于APK瘦身,分为两种:压缩资源,压缩代码
1:移除无用资源和无用代码
移除无用资源分为两种:手动移除和自动移除
手动移除:
Android studio提供了相应的检测工具 Link : Analyze > Inspect Code
在控制台的Inspection Results中显示出需要更改或者删除的代码和资源。
关于Link, 在开发者网站可以看到更详细的信息:
自动移除:
关于移除,分为两种:移除代码,移除资源。
打包时自动移除无用资源:在app的build.gradle里添加:shrinkResources true
打包时自动移除无用代码:在app的build.gradle里添加:minifyEnabled true (也是开启混淆)
这样就可以在打包的时候自动删除无用资源和代码。
在build阶段,ProGuard会移除无用的代码但是会保留无用的资源。然后Gradle过后会移除无用的资源。 关于ProGuard ,这个就是 上图中的第三行配置。
当我们需要自定义一些不想让移除的资源或者代码的时候需要在proguard-android.txt文件中进行配置。
关于ProGuard 详细用法:
2:删除导入Library的一些无用资源和代码
经常导入第三方库,库里面可能还有一些我们用不到的资源或者资源,那么需要移除,其实,添加了ProGuard ,就可以自动删除第三方Library的无用资源和代码了。
3:重用资源
场景:项目需要用到好几张图片,这几张图片的差别就是颜色的差别,那么,可能我们需要放入好几张图片。
对于上述场景,我们可以仅仅添加一张图片,只不过使用代码更改图片的颜色即可。同理,图片旋转也使用,添加一张图片,旋转图片即可。
4:从代码中渲染(自定义)
在不考虑性能的情况下,假如需要一个图片,此时有两种实现方法:1:添加Icon,2:自定义View实现。
这种情况下,我们可以自定义View实现
5:压缩PNG和JPEG文件
关于压缩图片,网上有很多压缩图片的网址,确保添加的图片是无损且尽可能小的。
6:添加矢量图代替图片或者帧动画
关于矢量图没怎么用过,所以在此不再赘述,附上矢量图使用网址:
Android矢量图
还有就是尽量少使用枚举类型。
Android开发交流群: