ビルド バリアントをターゲットにする

ビルド バリアントごとに異なるバージョンのアプリがある場合は、 バリアントごとにカスタム保持ルールを作成します。たとえば、アプリに無料版と有料版があり、機能と依存関係が異なる場合は、各階層に独自の保持ルールを設定する必要があります。

保持ルールを作成する

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.proflavor2 プロダクト フレーバーに追加するビルドスクリプトを次に示します。

従来の 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'
        }
    }
}

参考情報