尽可能减少APK体积,是我们发布应用时应该遵守的准则之一,一是可以帮用户节省下载时的流量,二是可以减少所占用的内存。如何做呢?当然,最简单的就是移除发布构建中未使用的代码和资源!
Android的代码压缩通过Proguard提供,Proguard会检测和移除封装应用中未使用的类、字段、方法和属性,包括自带代码库中未使用的项。Proguard还可以优化字节码,移除未使用的代码指令,以及用短名称混淆其余的类、字段和方法。混淆过的代码还可以防止我们发布的apk被逆向工程,即反编译。
压缩代码
要通过Proguard启用代码压缩,需要在build.gradle文件内相应的构建类型中添加:
minifyEnabled true
1
但是请注意,代码压缩会使我们的构建速度变慢,因此我们应该尽可能的避免在调试构建中使用代码压缩。更重要的一点是我们一定要为最终测试的apk启用代码压缩,因为如果我们不能充分的自定义要保留的代码(混淆规则中定义的不被混淆的代码),可能会引发错误。
下面这段来自 build.gradle 文件的代码用于为发布构建启用代码压缩,调试构建时不启用代码压缩
debug {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard- android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
注:AndroidStudio会在InstantRun时停用Proguard