如果您有基于不同 build 变体的不同应用版本, 请为每个变体创建自定义 保留规则。例如,如果您的应用有免费层级和付费层级,并且这两个层级具有不同的功能和依赖项,则每个层级都应有自己的保留规则。
创建保留规则
对于 AGP 9.3 及更高版本:
如需为应用的不同变种维护特定的保留规则,请将每个变种的保留规则放在相关的源代码集内。例如,
对于 flavor1,请在
app/src/flavor1/keepRules/flavor1-rules.keep 中编写保留规则。
AGP 9.3 及更高版本 (Kotlin)
android {
buildTypes {
release {
optimization {
enable = true // Enables code and resource optimizations.
}
}
}
flavorDimensions.add("version")
productFlavors {
create("flavor1") {
...
// Place your keep rules in app/src/flavor1/keepRules/ with the file suffix .keep
}
create("flavor2") {
...
// Place your keep rules in app/src/flavor2/keepRules/ with the file suffix .keep
}
}
}
AGP 9.3 及更高版本 (Groovy)
android {
buildTypes {
release {
optimization {
enable = true // Enables code and resource optimizations.
}
}
}
flavorDimensions "version"
productFlavors {
flavor1 {
...
}
flavor2 {
...
// Place your keep rules in app/src/flavor2/keepRules/ with the file suffix .keep
}
}
}
对于低于 9.3 的 AGP 版本:
如需创建特定于 build 变体的保留规则,请在 productFlavors 下的相应 变种块中添加 proguardFiles 属性。
请考虑以下 build 脚本,该脚本会将规则文件
flavor2‑rules.pro 添加到 flavor2 产品变种:
旧版 DSL (Kotlin)
android {
...
buildTypes {
getByName("release") {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
flavorDimensions.add("version")
productFlavors {
create("flavor1") {
...
}
create("flavor2") {
proguardFile("flavor2-rules.pro")
}
}
}
旧版 DSL (Groovy)
android {
...
buildTypes {
release {
minifyEnabled = true
shrinkResources = true
proguardFiles(
getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro'
)
}
}
flavorDimensions "version"
productFlavors {
flavor1 {
...
}
flavor2 {
proguardFile 'flavor2-rules.pro'
}
}
}
其他资源
- 自定义要保留的资源 - 了解如何为资源添加保留规则 。