业务功能开发完之后,就需要对App打包了。
有时候明明功能不多,但是包体很大,一是影响上架,二是就几个功能但是很大心里会膈应,于是包体有时候也需要进行优化。同类型的竞品只要40m,你要200M,那我肯定愿意先试试40M的。
Android应用程序包(英语:Android application package,APK)是Android操作系统使用的一种应用程序包文件格式,用于分发和安装移动应用及中间件。一个Android应用程序的代码想要在Android设备上运行,必须先进行编译,然后被打包成为一个被Android系统所能识别的文件才可以被运行,而这种能被Android系统识别并运行的文件格式便是“APK”。 一个APK文件内包含被编译的代码文件(.dex 文件),文件资源(resources), assets,证书(certificates),和清单文件(manifest file)。、
在Android Studio工具栏里,打开build–>Analyze APK, 选择要分析的APK包。
1.干掉不需要的文件
有些图片或者资源、代码在实际运用中其实可能并没有用到,这时候可以把他给删除掉,IDE会把未使用到的区块灰色展示,也可以通过lint工具来帮助我们识别到。这个功能在menu中的Analyze的`Run inpection by name`输入`unused xx`。甚至是在编译过程中,我们也可以通过混淆配置来做到,比方说常见的Log删除。(tips:删除代码记得有些代码通过反射获取的,不要删除)
2.此外一些没用到的依赖库也可以给干掉
3.资源优化
图片在App应用中会大量的使用到,尤其一些图片还特别的大。
android {
defaultConfig {
resConfigs "zh"
}
}
4.SO文件优化
在使用了SO库的时候优先保留v7版本的SO库,删掉其他版本的SO库。原因是在2018年,v7版本的SO库可以满足市面上绝大多数的要求,可能八九年前的手机满足不了,但我们也没必要去适配老掉牙的手机。实际开发中减少apk体积的效果是十分显著的,如果你使用了很多SO库,比方说一个版本的SO库一共10M,那么只保留v7版本,删掉armeabi和v8版本的SO库,一共可以减少20M的体积。当然,测试的时候,记得使用不同的手机进行测试仪检测是否能正常使用。
5.assets资源优化
(1)音频文件最好使用有损压缩的格式,比如采用opus、mp3等格式,但是最好不要使用无损压缩的音乐格式
(2)对ttf字体文件压缩,可以采用FontCreator工具只提取出你需要的文字。比如在做日期显示时,其实只需要数字字体,但是使用原有的字体库可能需要10MB大小,如果只是把你需要的字体提取出来生成的字体文件只有10KB
6.其余常见优化
使用proGuard 代码混淆器工具,它包括压缩、优化、混淆等功能。
android {
buildTypes {
release {
minifyEnabled true
shrinkResources true
}
}
}
tips:
为什么代码混淆可以让apk变小?
1)可以删除注释和不用的代码。
2)将java文件名改成短名
3)将方法名改成短名
插件化开发
热更新等等,可将功能模块放服务器,需要用时再加载。