在CI服务器,我想摆脱开发商已经在文件的build.gradle设置一个Android项目signingConfigs的:Android项目 - 我可以使用init.gradle初始化脚本覆盖build.gradle中设置的signingConfigs吗?
的build.gradle
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
}
}
apply plugin: 'com.android.application'
dependencies {
compile fileTree(include: '*.jar', dir: 'libs')
}
android {
signingConfigs {
releaseConfig {
keyAlias 'fake_key_alias'
keyPassword 'fake_key_pass'
storeFile file('C:/fake')
storePassword 'fake_store_pass'
}
}
compileSdkVersion 25
buildToolsVersion "25.0.0"
defaultConfig {
minSdkVersion 20
targetSdkVersion 25
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
// Move the tests to tests/java, tests/res, etc...
instrumentTest.setRoot('tests')
// Move the build types to build-types/<type>
// For instance, build-types/debug/java, build-types/debug/AndroidManifest.xml, ...
// This moves them out of them default location under src/<type>/... which would
// conflict with src/ being used by the main source set.
// Adding new build types or product flavors should be accompanied
// by a similar customization.
debug.setRoot('build-types/debug')
release.setRoot('build-types/release')
}
buildTypes {
release {
zipAlignEnabled true
signingConfig signingConfigs.releaseConfig
}
}
}
的话,就喜欢用置于CI服务器中的init.gradle初始化脚本中写入的signedConfig替换它们。我想用here(Gradle Init脚本插件)替代存储库的相同技术,但我无法引用signingConfigs。
init.gradle
apply plugin:EnterpriseSigningConfigPlugin
class EnterpriseSigningConfigPlugin implements Plugin<Gradle> {
void apply(Gradle gradle) {
gradle.allprojects{ project ->
project.android.signingConfigs {
// Remove all signingConfigs
all {SigningConfig cfg ->
remove cfg
}
// add the signingConfig
signingConfigs {
releaseConfig {
keyAlias 'CI_key_alias'
keyPassword 'CI_key_pass'
storeFile file('/CI_storeFile')
storePassword 'CI_store_pass'
}
}
}
}
}
}
当我执行命令gradle -I init.gradle clean assembleRelease
,我得到以下错误:
FAILURE: Build failed with an exception.
* Where:
Initialization script 'C:\Users\it056548\.init\init.gradle' line: 11
* What went wrong:
Could not compile initialization script 'C:\Users\it056548\.init\init.gradle'.
> startup failed:
initialization script 'C:\Users\it056548\.init\init.gradle': 11: unable to resolve class SigningConfig
@ line 11, column 21.
all {SigningConfig cfg ->
^
1 error
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 3.721 secs
我应该如何引用signingConfigs?这可行吗?这是解决我需求的有效方法吗?先谢谢您的帮助!