簡體   English   中英

對 Gradle 產品風味使用不同的簽名並在 Android 中構建類型

[英]Use different signature for Gradle product flavour and build type in Android

我有一個 Android build.gradle.kts 具有多種風格,多種構建類型和不同的組合簽名配置,它看起來像這樣:

    android {

        signingConfigs {
            create("lite-release") {
                storeFile = file("myLiteReleaseKey.keystore")
                storePassword = "litePassword"
                keyAlias = "MyLiteReleaseKey"
                keyPassword = "litePassword"
            }

            create("full-release") {
                storeFile = file("myFullReleaseKey.keystore")
                storePassword = "litePassword"
                keyAlias = "MyFullReleaseKey"
                keyPassword = "litePassword"
            }

            create("lite-alpha") {
                storeFile = file("myLiteAlphakey.keystore")
                storePassword = "password"
                keyAlias = "MyLiteReleaseKey"
                keyPassword = "password"
            }

            create("full-alpha") {
                storeFile = file("myFullAlphaKey.keystore")
                storePassword = "password"
                keyAlias = "MyFullReleaseKey"
                keyPassword = "password"
            }
        }

        buildTypes {
            getByName("release") {
                isMinifyEnabled = true
                isShrinkResources = true
            }

            create("alpha") {
                initWith(getByName("release"))

                versionNameSuffix = "-alpha"
                applicationIdSuffix = ".alpha"
            }
        }

        flavorDimensions += "app"
        productFlavors {

            create("lite") {
                dimension = "app"
            }

            create("full") {
                dimension = "app"
            }
        }
    }

即使它應該是簡單的東西,我在嘗試分配簽名時也被卡住了。 應該是這樣的。。

    productFlavors.getByName("lite") {
       buildTypes.getByName("release") {
            signingConfig = signingConfigs.getByName("lite-release")
       }
    }

    productFlavors.getByName("full") {
       buildTypes.getByName("release") {
            signingConfig = signingConfigs.getByName("full-release")
       }
    }

..但是當我構建“liteRelease”時,它需要最后一個分配,即上面示例中“完全發布”的簽名。

你能告訴我如何正確地做到這一點嗎?

最后,這完成了工作:

gradle.startParameter.taskNames.forEach {
    when {
        it.contains("LiteRelease", true) -> {
            productFlavors.getByName("lite") {
                signingConfig = signingConfigs.getByName("lite-release")
            }
        }
        it.contains("FullRelease", true) -> {
            productFlavors.getByName("full") {
                signingConfig = signingConfigs.getByName("full-release")
            }
        }
    }
 }

這有點容易出錯,但我找不到其他可行的方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM