【问题标题】:Use different signature for Gradle product flavour and build type in Android在 Android 中为 Gradle 产品风格和构建类型使用不同的签名
【发布时间】:2022-08-09 04:37:42
【问题描述】:

我有一个 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\" 时,它需要最后一个分配,在上面的示例中为 \"full-release\" 签名。

你能告诉我如何正确地做到这一点吗?

    标签: android android-gradle-plugin build.gradle gradlew gradle-kts


    【解决方案1】:

    最后,这完成了工作:

    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")
                }
            }
        }
     }
    

    这有点容易出错,但我找不到其他可行的方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-10
      • 2015-07-09
      • 2016-07-11
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 1970-01-01
      相关资源
      最近更新 更多