یک نوع ساخت را هدف قرار دهید

اگر نسخه‌های مختلفی از برنامه خود را بر اساس انواع مختلف ساخت دارید، برای هر نوع، قوانین Keep سفارشی ایجاد کنید. به عنوان مثال، اگر یک سطح رایگان و یک سطح پولی از برنامه خود با ویژگی‌ها و وابستگی‌های مختلف دارید، هر سطح باید قوانین Keep مخصوص به خود را داشته باشد.

ایجاد قوانین Keep

برای AGP 9.3+:

برای حفظ قوانین خاص keep برای طعم‌های مختلف برنامه خود، قوانین keep را برای هر طعم در مجموعه منبع قوانین keep مربوطه قرار دهید. برای مثال، برای flavor1 ، قوانین keep را در app/src/flavor1/keepRules/flavor1-rules.keep بنویسید.

AGP 9.3+ (کاتلین)

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 قبل از ۹.۳:

برای ایجاد قوانین keep که مختص یک نوع ساخت هستند، ویژگی proguardFiles را در بلوک flavor مربوطه در زیر productFlavors اضافه کنید.

اسکریپت ساخت زیر را در نظر بگیرید که فایل قوانین flavor2‑rules.pro را به flavor2 product flavor اضافه می‌کند:

DSL قدیمی (کاتلین)

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

منابع اضافی