빌드 변형 타겟팅

빌드 변형에 따라 앱의 버전이 여러 개 있는 경우 각 변형에 맞춤 유지 규칙을 만듭니다. 예를 들어 기능과 종속 항목이 다른 앱의 무료 등급과 유료 등급이 있는 경우 각 등급에 자체 유지 규칙이 있어야 합니다.

유지 규칙 만들기

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

추가 리소스