以 build 变体为目标

如果您有基于不同 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'
        }
    }
}

其他资源