问题:
有个主module A和一个附属module B,A编译依赖B,相关配置在A的build文件中:
dependencies {
compile project(path: ':B')
}
但是,编译发现这样的问题,无论编译A的debug版本还是release版本,最终B都是编译
release版本集成。
我想要的结果是编译A的debug版本也编译B的debug版本集成,编译A的release版本也编译
B的release版本集成。
尝试这样的配置:
dependencies {
releaseCompile project(path: ':B')
debugCompile project(path: ':B')
}
还是不行。
研究:
在android中有这样的配置项:
android { defaultPublishConfig "debug" //or release or custom}
defaultPublishConfig 默认是release,把改成debug版后(在B的build文件中),编译A的debug版本确实能编译B的
debug版本集成,但编译A的release版本也是编译B的debug版本集成。
也就是说,编译debug的时候改下defaultPublishConfig为debug,release改下defaultPublishConfig为release
这太不爽了。
继续研究:
在dependencies中还有这样的配置项:
dependencies {
releaseCompile project(path: ':B',configuration: 'debug') //or releaseCompile project(path: ':B',configuration: 'custom')
debugCompile project(path: ':B',configuration: 'release')
}
但编译gradle会报错,说找不到debug和release
在android中有这样的配置项:
android { publishNonDefault true // 公开所有的版本,默认只公开defaultPublishConfig只定的版本}
在B中配置这个属性后,编译顺利,并且能达到我想要的编译要求。
例子:
如果是依赖custom,如A依赖B中的tw_debug
A的build文件:
dependencies {
releaseCompile project(path: ':B',configuration: 'tw_debug')
}
B的build文件:
android {
publishNonDefault true
buildTypes {
debug {
minifyEnabled false
buildConfigField "boolean", "TW_ENV_DEBUG", "true"
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
tw_debug {
minifyEnabled false
buildConfigField "boolean", "TW_ENV_DEBUG", "true"
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
minifyEnabled true
buildConfigField "boolean", "TW_ENV_DEBUG", "false"
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}