Cibler une variante de compilation

Si vous disposez de différentes versions de votre application en fonction de différentes variantes de compilation, créez des règles de conservation personnalisées pour chaque variante. Par exemple, si vous disposez d'un niveau sans frais et d'un niveau payant de votre application avec des fonctionnalités et des dépendances différentes, chaque niveau doit avoir ses propres règles de conservation.

Créer des règles de conservation

Pour AGP 9.3 ou version ultérieure :

Pour conserver des règles de conservation spécifiques pour différentes versions de votre application, placez les règles de conservation de chaque version dans l'ensemble de sources de règles de conservation approprié . Par exemple, pour flavor1, écrivez des règles de conservation dans app/src/flavor1/keepRules/flavor1-rules.keep.

AGP 9.3 ou version ultérieure (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 ou version ultérieure (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
        }
    }
}

Pour les versions d'AGP antérieures à 9.3 :

Pour créer des règles de conservation spécifiques à une variante de compilation, ajoutez la propriété proguardFiles dans le bloc flavor correspondant sous productFlavors.

Prenons l'exemple du script de compilation suivant qui ajoute le fichier de règles flavor2‑rules.pro au type de produit flavor2 :

DSL hérité (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 hérité (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'
        }
    }
}

Ressources supplémentaires