如果您根據不同的建構變數製作不同版本的應用程式,請為每個變數建立自訂保留規則。舉例來說,如果應用程式有免費和付費方案,且兩者具備不同功能和依附元件,則每個方案都應有自己的保留規則。
建立保留規則
適用於 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
}
}
}
如果 AGP 版本低於 9.3:
如要建立建構變化版本專屬的保留規則,請在 productFlavors 下的對應樣式區塊中新增 proguardFiles 屬性。
請參考下列建構指令碼,將規則檔案 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'
}
}
}
其他資源
- 自訂要保留的資源:瞭解如何為資源新增保留規則。