1. 程式人生 > >gradle關於依賴module編譯問題

gradle關於依賴module編譯問題

問題: 有個主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' } } }