【发布时间】:2023-02-13 19:49:21
【问题描述】:
背景
我认为 Google 登录存在一个问题,这与我们对我们开发的 2 种不同风格的应用程序使用相同的密钥配置这一事实有关。原因是两者似乎在调试和发布时具有相同的 SHA1。
该问题仅存在于第二种版本的发行版中。在第一种风格的构建和调试以及第二种风格的调试中,它工作正常。
问题
我可能应该在使用相同的发布密钥库(使用现有密钥库生成)的同时生成一个新的密钥配置,但我不确定如何在 gradle 文件上进行设置。
假设这两个包名是“com.free”和“com.paid”(不是真名,只是为了简化问题)。
这就是我现在所拥有的,简化且没有真正的价值
defaultConfig {
applicationId "com.free"
...
}
signingConfigs {
debug {
storeFile file('debug.keystore')
storePassword "storePassword1"
keyAlias "keyAlias1"
keyPassword "keyPassword1"
}
release {
storeFile file('release.keystore')
storePassword "storePassword2"
keyAlias "keyAlias2"
keyPassword "keyPassword2"
}
}
buildTypes {
release {
signingConfig signingConfigs.release
...
}
debug {
...
}
}
flavorDimensions.add("default")
productFlavors {
free {
dimension "default"
applicationId "com.free"
...
}
paid {
dimension "default"
applicationId "com.paid"
...
}
}
namespace 'com.free'
因此,这会在 Android Studio 的“构建变体”窗口中生成 4 个构建变体:
- 免费调试
- 免费发布
- 付费调试
- 付费发布
我想继续使用这些,但是对于“付费”的密钥配置不同,因为它使用的是相同的“免费”密钥配置。
我发现并尝试过的
我找到了有关此主题的下一个问题和教程:
-
https://medium.com/@chauyan/how-to-use-gradle-on-multi-keystore-flavors-project-297ec083150b
-
https://blog.tunebrains.com/2015/10/02/gradle-multi-flavors-signing.html
所以,我尝试的是在“signingConfigs”中拆分“release”(不需要调试,因为这个可以很好地用于无调试组合),从“buildTypes”->“release”中删除“signingConfig” ,并且有 4 个 productFlavors 而不是 2 个:
signingConfigs { //unchanged: debug { storeFile file('debug.keystore') storePassword "storePassword1" keyAlias "keyAlias1" keyPassword "keyPassword1" } //using new keystore file, split for 2 different flavors, and have new keyAlias and keyPassword for "paid" : releaseFree { storeFile file('new_release.keystore') storePassword "storePassword2" keyAlias "keyAlias2" keyPassword "keyPassword2" } releasePaid { storeFile file('new_release.keystore') storePassword "storePassword2" keyAlias "keyAlias3" keyPassword "keyPassword3" } } buildTypes { release { //commented this as it can't be used anymore (split and not shared) //signingConfig signingConfigs.release ... } debug { ... } } flavorDimensions.add("default") productFlavors { //split to 4 : free-debug, paid-debug, free-release, paid-release freeDebug { dimension "default" applicationId "com.free" //identical debug key configuration should work fine for both signingConfig signingConfigs.debug ... } paidDebug { dimension "default" applicationId "com.paid" //identical debug key configuration should work fine for both signingConfig signingConfigs.debug ... } freeRelease { dimension "default" applicationId "com.free" signingConfig signingConfigs.releaseFree ... } paidDebug { dimension "default" applicationId "com.paid" signingConfig signingConfigs.releasePaid ... } }IDE 接受了这些更改,但我在“Build Variants”窗口中看到的不是计划的 4 个项目,而是 8 个:
- 免费调试调试
- 免费调试发布
- 免费发布调试
- 免费发布发布
- 付费调试调试
- 付费调试发布
- 付费发布调试
- 付费发布发布
很确定这里发生的是,对于每种口味,它都生成了调试和发布,并且正如我定义的 4 种口味,它是 4*2=8 ...
问题
-
我在这里做错了什么?我怎样才能按计划拥有 4 件物品? 也许可以为每种口味设置一个 buildType? 或者我可能需要设置 2 个维度值,一个用于“免费”,一个用于“付费”?
-
signingConfigs 项的设置是否正常?对于每个不同的文件,它使用相同的 storePassword 值,并且对于每种风格,它应该使用不同的 keyAlias 和 keyPassword 。正确的?
-
【问题讨论】:
标签: android gradle android-build-flavors android-build-type