一、概述
这几天要打包APK给测试,但是一打包发现APK包有23M,经理那边自然过不了,所以就开始琢磨怎么减小APK的大小。分析原因:
1. 由于UI是按照模块给的切图,所以部分模块的切图可能存在重复,不过这种情况不多,所以对apk的大小影响不大。如果想通过减少图片来减小apk的大小,那么建议只做一套切图,单独适应xhdpi的。
2. 如果不需要做国际化,建议指定只支持中文的
defaultConfig {
resConfigs "zh"
}
3. 我们的app中部分用到了h5,而h5的代码是存放到assets目录下,这个目录下的文件打包的时候是不会被压缩的,所以这个目录下的文件有多大,打包之后apk就会增加多大。目前关于h5的资源代码等还不知道怎么压缩处理,各位大神有什么好的方法请教一下。
4. 这个就是重点了,android studio默认build.gradle里面配置的 minifyEnable false,这表示是不混淆,起不到防反编译的作用。
二、配置 build.gradle 文件
1. 修改配置:
buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } debug{ minifyEnabled false shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }其中release{}指的是发布版本,也就是通过android studio工具栏中Build生成的apk;debug{}指的是调试版本,也就是通过adb连接设备直接运行生成的apk。minifyEnabled表示是否启动代码混淆,shrinkResources表示是否删除代码中无用的resource文件。
注意:想要让 shrinkResources true 生效,就必须设置 minityEnabled true。否则就算shrinkResources true,而minifyEnabled fale,那么还是不会起到作用。
proguardFiles指定的是混淆的配置文件。
三、修改混淆配置文件 proguard-rules.pro
-optimizationpasses 5 # 指定代码的压缩级别0-7