กําหนดเป้าหมายตัวแปรของบิลด์

หากคุณมีแอปเวอร์ชันต่างๆ ตามตัวแปรบิลด์ที่แตกต่างกัน ให้สร้างกฎการเก็บที่กำหนดเองสำหรับตัวแปรแต่ละรายการ เช่น หากคุณมีแอปเวอร์ชันฟรีและเวอร์ชันที่ต้องซื้อซึ่งมีฟีเจอร์และการอ้างอิงที่แตกต่างกัน แต่ละเวอร์ชันควรมีกฎการเก็บรักษาของตัวเอง

สร้างกฎการเก็บ

สำหรับ 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:

หากต้องการสร้างกฎการเก็บที่เฉพาะเจาะจงสำหรับตัวแปรบิลด์ ให้เพิ่มพร็อพเพอร์ตี้ proguardFiles ในบล็อก flavor ที่เกี่ยวข้องภายใต้ productFlavors

ลองพิจารณาสคริปต์การสร้างต่อไปนี้ซึ่งเพิ่มไฟล์กฎ 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'
        }
    }
}

แหล่งข้อมูลเพิ่มเติม