gradle关于依赖module编译问题

来源:互联网 发布:osiris数据库 编辑:程序博客网 时间:2024/06/06 00:29
问题:
有个主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'
}
}
}

参考:http://www.open-open.com/lib/view/open1428320744713.html
0 0