Ric*_*ier 43 android code-signing gradle android-gradle-plugin
我的Android应用程序有很多种,我希望除了一个以外的所有应用程序都使用相同的密钥.有一个需要使用不同的密钥.
如何覆盖signingConfig应用程序的1种风格(但在相同的构建类型中,例如"发布")?
gradlew assembleRelease命令运行所有发布版本最后一点非常重要,因为我目前有超过120种不同的口味和成长.为了单独定制每一种风味,需要做很多额外的工作.
相关帖子我试过:
signingConfig反正buildTypes内部,productFlavors但我不明白如何做到这一点.总的来说,每个解决方案似乎仍然使用默认的发布配置,而不是我的自定义配置.
我的重要部分build.gradle看起来像这样:
signingConfigs {
releaseConfig {
storeFile file('key')
storePassword "pass"
keyAlias "alias"
keyPassword "pass"
}
custom {
storeFile file('custom_key')
storePassword "pass"
keyAlias "alias"
keyPassword "pass"
}
}
productFlavors {
apple {
applicationId "demo.apple"
}
banana {
applicationId "demo.banana"
}
// def customConfig = signingConfigs.custom
custom {
applicationId "custom.signed.app"
// signingConfig customConfig
}
}
buildTypes {
debug {
applicationIdSuffix ".debug"
}
release {
signingConfig signingConfigs.releaseConfig
// productFlavors.custom.signingConfig signingConfigs.custom
}
}
Run Code Online (Sandbox Code Playgroud)
Ric*_*ier 20
该摇篮Plugin用户指南说,你可以:
让每个发布包
SigningConfig通过分别设置每个android.productFlavors.*.signingConfig对象来使用它们自己.
这个答案(Gradle Product Flavors上的Debug Signing Config)和这篇博客文章(使用Gradle构建Android应用程序的多个版本)证明了这一点.
但是,signingConfig为每种风味指定单独的行不能很好地扩展,并且超出了问题的范围.不幸的是,没有提供的答案显示如何正确地正确覆盖signingConfig正确.
诀窍来自这个答案(如何在gradle中获取当前选择的构建变体?),它显示了如何循环构建变体(以及扩展,味道).
我的解决方案使用一个循环来设置signingConfig每个风味,而不是为它设置一个单独的行.这很好地扩展."覆盖"是通过一行指定循环后的自定义配置完成的.
将以下代码放在buildTypes.release块中:
// loop over all flavors to set default signing config
productFlavors.all { flavor ->
flavor.signingConfig signingConfigs.releaseConfig
}
// override default for single custom flavor
productFlavors.custom.signingConfig signingConfigs.custom
Run Code Online (Sandbox Code Playgroud)
Ash*_*win 11
如果未在产品flavor中指定了signingConfig,则下面给出的代码将使用release1作为默认的signedConfig.
应用程序/的build.gradle
signingConfigs {
debug {
storeFile file("/home/.../debugkeystore.jks")
storePassword "..."
keyAlias "..."
keyPassword "..."
}
release1 {
storeFile file("/home/.../testkeystore1.jks")
storePassword "..."
keyAlias "..."
keyPassword "..."
}
release2 {
storeFile file("/home/.../testkeystore2.jks")
storePassword "..."
keyAlias "..."
keyPassword "..."
}
release3 {
storeFile file("/home/.../testkeystore3.jks")
storePassword "..."
keyAlias "..."
keyPassword "..."
}
}
defaultConfig {
applicationId "com.example.signingproductflavors"
minSdkVersion 15
targetSdkVersion 24
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
signingConfig signingConfigs.release1
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
signingConfig signingConfigs.debug
}
}
productFlavors {
blocks {
applicationId "com.example.blocks"
resValue 'string', 'APP_NAME', "Blocks"
}
cloud {
applicationId "com.example.cloud"
resValue 'string', 'APP_NAME', "Cloud"
signingConfig signingConfigs.release2
}
deck {
applicationId "com.example.deck"
resValue 'string', 'APP_NAME', "Deck"
signingConfig signingConfigs.release3
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11986 次 |
| 最近记录: |