1、手动删除不需要的代码,资源,依赖
2、选择合适的 ABI
在项目级 build.gradle 文件中添加如下代码。
android {
defaultConfig {
ndk {
// 设置支持的SO库架构
abiFilters 'armeabi', 'armeabi-v7a', 'arm64-v8a'
}
}
}
上面的配置适用于所有 arm 架构的 CPU,如果需要支持其他架构 CPU,请自行修改。
3、启用缩减、混淆处理和优化功能
在项目级 build.gradle 文件中添加以下代码。
android {
buildTypes {
release {
// 启用代码缩减
minifyEnabled true
// 启用资源缩减
shrinkResources true
// 配置代码混淆规则
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
}
}
}
配置上述代码后,会带来以下影响。
代码缩减(即摇树优化):从应用及其库依赖项中检测并安全地移除未使用的类、字段、方法和属性(这使其成为了一个对于规避 64k 引用限制非常有用的工具)。例如,如果您仅使用某个库依赖项的少数几个 API,缩减功能可以识别应用“未”使用的库代码并仅从应用中移除这部分代码。启用代码缩减将会自动启用混淆处理。
资源缩减:从封装应用中移除不使用的资源,包括应用库依赖项中的不使用的资源。此功能可与代码缩减功能结合使用,这样一来,移除不使用的代码后,也可以安全地移除不再引用的所有资源。
混淆处理:缩短类和成员的名称,从而减小 DEX 文件的大小。
代码优化:检查并重写代码,以进一步减小应用的 DEX 文件的大小。例如,如果 R8 检测到从未采用过给定 if/else 语句的 else {} 分支,则会移除 else {} 分支的代码。