我有一个项目,其中我有几个特定于设备的产品风格,每个风格需要用不同的配置签名:
productFlavors {
nexus7 {
signingConfig signingConfigs.nexus7
}
nexus4 {
signingConfig signingConfigs.nexus4
}
}
这在构建“发布”变体时效果很好。但是,在使用“调试”变体时(例如,在构建Nexus 4Debug时),Gradle使用的是默认的android调试密钥。在我的情况下,我高度依赖于这些构建版本是否以正确的方式签名,如果使用默认调试密钥签名,我的应用程序相对无用。有人知道是否有办法为每个变体指定签名配置吗?
我知道我可以按构建类型来做,例如:
buildTypes {
debug {
signingConfig signingConfigs.nexus4
}
}
但是这限制了我对两种风格的调试版本总是使用相同的签名配置。
PS -要知道这是一个边缘用例,是一个企业项目,我们在许多不同的Nexus设备上测试自定义ROM和系统签名的应用程序。
5条答案
按热度按时间ds97pgxw1#
请尝试将其添加到您的build.gradle中。它将指定构建
debug
构建类型时要为每个flavor
使用哪个signingConfig
:4smxwvx52#
我得到了Android插件构建后的另一个解决方案. 1.1.3
由于构建类型“发布”将使用风味签名配置(因为没有规范),在使用发布构建进行调试初始化后,它也将具有相同的签名配置。
构建类型“debug”需要使用“release”进行初始化,就像未提供签名配置一样,它将使用Android默认调试签名密钥。
更新
问题是android.buildTypes.debug.signingConfig有默认值,而release没有。
解决办法可能是在未来的断裂。
无论如何,仍然与Android插件构建2.3.2工作
n53p2ov03#
适用于2.2.1
tquggr8v4#
这可能会起作用:
mv1qrgav5#
答案是:
它隐藏在@Harvey的评论中,我花了太多时间才找到它。我想最好把它作为一个答案。
你可以找到评论,并给它竖起大拇指,如果它对你也有效。
谢谢你,这让我明白了signingConfig null。问题是android. buildTypes. debug. signingConfig有默认值,而release没有。如果设置了,buildType配置将覆盖您在风味中设置的任何内容。真正的技巧是取消buildTypes. debug中的属性设置,这样它就像release一样工作。-Harvey