调试Gradle产品风味的签名配置

ffx8fchx  于 2023-02-19  发布在  其他
关注(0)|答案(5)|浏览(208)

我有一个项目,其中我有几个特定于设备的产品风格,每个风格需要用不同的配置签名:

productFlavors {
    nexus7 {
        signingConfig signingConfigs.nexus7
    }
    nexus4 {
        signingConfig signingConfigs.nexus4
   }
}

这在构建“发布”变体时效果很好。但是,在使用“调试”变体时(例如,在构建Nexus 4Debug时),Gradle使用的是默认的android调试密钥。在我的情况下,我高度依赖于这些构建版本是否以正确的方式签名,如果使用默认调试密钥签名,我的应用程序相对无用。有人知道是否有办法为每个变体指定签名配置吗?
我知道我可以按构建类型来做,例如:

buildTypes {
    debug {
        signingConfig signingConfigs.nexus4
    }
}

但是这限制了我对两种风格的调试版本总是使用相同的签名配置。
PS -要知道这是一个边缘用例,是一个企业项目,我们在许多不同的Nexus设备上测试自定义ROM和系统签名的应用程序。

ds97pgxw

ds97pgxw1#

请尝试将其添加到您的build.gradle中。它将指定构建debug构建类型时要为每个flavor使用哪个signingConfig

buildTypes {
    debug {
        productFlavors.nexus4.signingConfig signingConfigs.nexus4
        productFlavors.nexus7.signingConfig signingConfigs.nexus7
    }
}
4smxwvx5

4smxwvx52#

我得到了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
    }
}

由于构建类型“发布”将使用风味签名配置(因为没有规范),在使用发布构建进行调试初始化后,它也将具有相同的签名配置。
构建类型“debug”需要使用“release”进行初始化,就像未提供签名配置一样,它将使用Android默认调试签名密钥。

更新

问题是android.buildTypes.debug.signingConfig有默认值,而release没有。
解决办法可能是在未来的断裂。
无论如何,仍然与Android插件构建2.3.2工作

n53p2ov0

n53p2ov03#

适用于2.2.1

buildTypes {
    release {
    }
    debug {
        signingConfig android.buildTypes.release.signingConfig
    }
}
tquggr8v

tquggr8v4#

这可能会起作用:

buildTypes {
  release {
     productFlavors.nexus7.signingConfig signingConfigs.nexus7
     productFlavors.nexus4.signingConfig signingConfigs.nexus4
  }
  debug {
     signingConfig android.buildTypes.release.signingConfig
  }
}
mv1qrgav

mv1qrgav5#

答案是:

buildTypes {
    debug {
        signingConfig null
    }
}

它隐藏在@Harvey的评论中,我花了太多时间才找到它。我想最好把它作为一个答案。
你可以找到评论,并给它竖起大拇指,如果它对你也有效。
谢谢你,这让我明白了signingConfig null。问题是android. buildTypes. debug. signingConfig有默认值,而release没有。如果设置了,buildType配置将覆盖您在风味中设置的任何内容。真正的技巧是取消buildTypes. debug中的属性设置,这样它就像release一样工作。-Harvey

相关问题