gradle關於依賴module編譯問題
阿新 • • 發佈:2018-12-30
問題:
有個主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'
}
}
}