【发布时间】:2023-03-17 16:09:01
【问题描述】:
背景:
我正在使用构建变体生成构建。以下是配置:
signingConfigs {
production {
storeFile file("some_path/buildsystem/keystore/some.release.keystore.jks")
storePassword "somepassword"
keyAlias "somekeyalias"
keyPassword "some"
v2SigningEnabled false
}
develop {
storeFile file(".some_path./buildsystem/keystore/someother.debug.keystore.jks")
storePassword "someother"
keyAlias "someotherkeyalias"
keyPassword "someother"
v2SigningEnabled false
}
}
productFlavors {
production {
signingConfig signingConfigs.production
}
develop {
applicationIdSuffix ".develop"
signingConfig signingConfigs.develop
}
}
buildTypes {
debug {
minifyEnabled false
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
问题
现在,例如,如果我谈论风味 production 然后 productionRelease 使用 signingConfigs.production 签署 apk。但是,productionDebug 不使用signingConfigs.production。
预期输出
当我生成签名的 apk 时,我希望 gradle 为我执行以下操作:
developRelease和developDebug应仅使用signingConfigs.develop 签名
productionRelease和productionDebug应仅使用signingConfigs.production 签名
另一个与此类似的问题导致我执行上述操作:SHA-1 different for buildTypes (debug and release) for same productFlavors Firebase?
【问题讨论】:
-
我认为使用您的生产签名进行调试构建可能会导致错误,例如意外将调试版本发布到 Google Play。你为什么要这样做?
-
@auval 你说的很对。如果出现任何问题,我想分离签名以便调试生产版本。其次,地图 api 请求有限制。我想保留生产中实际用户的限制。在开发模式下,测试人员或开发人员可以继续使用开发签名进行测试。仅供参考stackoverflow.com/q/44584273/2870088
-
您可以设置不同的包名称来调试 Gradle 中的构建,并且使用调试密钥您不会用完地图的生产配额
-
@auval 我相信仅仅设置不同的包名是行不通的。 applicationId 应与 firebase 控制台中的证书签名匹配。即使对于调试版本,如果我使用默认的 buildTypes.debug 也不正确。我需要按照下面的 Mani 回答做一些事情。如果您认为还有其他更好或替代的方法,请发布您的答案。
-
在 Firebase 控制台中,您需要为其设置一个新应用。
标签: android gradle android-gradle-plugin apk