Kierowanie na wariant kompilacji

Jeśli masz różne wersje aplikacji oparte na różnych wariantach kompilacji, utwórz niestandardowe reguły zachowywania dla każdego wariantu. Jeśli na przykład masz bezpłatny i płatny poziom aplikacji z różnymi funkcjami i zależnościami, każdy poziom powinien mieć własne reguły zachowywania.

Tworzenie reguł zachowywania

W przypadku AGP 9.3 lub nowszego:

Aby zachować określone reguły zachowywania dla różnych wersji aplikacji, umieść reguły zachowywania dla każdej wersji w odpowiednim zbiorze źródeł reguł zachowywania . Na przykład, w przypadku flavor1, napisz reguły zachowywania w app/src/flavor1/keepRules/flavor1-rules.keep.

AGP 9.3 lub nowszy (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 lub nowszy (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
        }
    }
}

W przypadku wersji AGP starszych niż 9.3:

Aby utworzyć reguły zachowywania, które są specyficzne dla wariantu kompilacji, dodaj właściwość proguardFiles w odpowiednim bloku flavor w sekcji productFlavors.

Oto skrypt kompilacji, który dodaje plik reguł flavor2‑rules.pro do wariantu usługi flavor2:

Starsza wersja 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")
            }
        }
}

Starsza wersja 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'
        }
    }
}

Dodatkowe materiały