提问人:Serj 提问时间:8/6/2022 最后编辑:Serj 更新时间:8/9/2022 访问量:617
在 Android 中对 Gradle 产品风格和构建类型使用不同的签名
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”时,它需要最后一个赋值,即上面示例中“full-release”的签名。
你能给我一个提示,告诉我如何正确地做到这一点吗?
答:
0赞
Serj
8/9/2022
#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")
}
}
}
}
它有点容易出错,但我找不到其他有效的东西。
评论