我有一个项目,我有几种特定于设备的产品口味,每种口味都需要使用不同的配置进行签名:
productFlavors {
nexus7 {
signingConfig signingConfigs.nexus7
}
nexus4 {
signingConfig signingConfigs.nexus4
}
}
在构建“发布”变体时,这非常有用。但是,当使用'debug'变体时(例如,当我构建Nexus4Debug时),Gradle使用默认的android调试密钥。在我的情况下,我高度依赖这些构建以正确的方式签名,如果使用默认调试密钥签名,我的应用程序相对无用。任何人都知道是否有办法为每个变体指定签名配置?
我知道我可以按照构建类型执行它,la:
buildTypes {
debug {
signingConfig signingConfigs.nexus4
}
}
但这限制了我总是使用相同的签名配置来调试这两种风格的版本。
PS - 了解这是一个边缘用例。这是一个企业项目,我们在许多不同的Nexus设备上测试自定义ROM和系统签名的应用程序。
答案 0 :(得分:8)
尝试将此添加到 build.gradle 。在构建signingConfig
构建类型时,它将指定每个flavor
使用debug
:
buildTypes {
debug {
productFlavors.nexus4.signingConfig signingConfigs.nexus4
productFlavors.nexus7.signingConfig signingConfigs.nexus7
}
}
答案 1 :(得分:6)
我在Android插件构建后得到了另一个解决方案。 1.1.3
productFlavors {
nexus7 {
signingConfig signingConfigs.nexus7
}
nexus4 {
signingConfig signingConfigs.nexus4
}
}
buildTypes {
release {
debuggable false
zipAlignEnabled true
}
debug {
initWith release
debuggable true
zipAlignEnabled false
}
}
由于构建类型“release”将使用flavor签名配置(因为没有规范),在使用release build的debug init之后,它也将具有相同的签名配置。
构建类型“debug”需要使用“release”进行初始化,就像没有提供签名配置一样,它将使用Android默认调试签名密钥。
<强> 更新 强>
问题是android.buildTypes.debug.signingConfig有一个默认值,而release则没有。
解决方案将来可能会破裂。
无论如何,仍然使用android插件build 2.3.2
答案 2 :(得分:3)
适用于2.2.1
buildTypes {
release {
}
debug {
signingConfig android.buildTypes.release.signingConfig
}
}