指定建構變化版本

如果您根據不同的建構變數製作不同版本的應用程式,請為每個變數建立自訂保留規則。舉例來說,如果應用程式有免費和付費方案,且兩者具備不同功能和依附元件,則每個方案都應有自己的保留規則。

建立保留規則

適用於 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'
        }
    }
}

其他資源