問題描述:
gradle項目里面隧土,主項目修改為debug或者release奠骄,但是子項目里面始終是release爬迟;舉個例子,你自己建立的一個子lib項目锋叨,需要一個可配置的內容LOG_DEBUG:
debug {
buildConfigField"boolean","LOG_DEBUG","true"
}
release {
buildConfigField"boolean","LOG_DEBUG","false"
}
但是垄分,將主項目的buildtype改為debug,lib項目里面的BuildConfig.LOG_DEBUG始終為false
在網(wǎng)上Google了一番之后娃磺,發(fā)現(xiàn)StackOverFlow上的提問 以及 Google 論壇的討論
在Stackoverflow里面薄湿,Android SDK Tech Leader說,這個是他們期望的豌鸡,因為依賴的lib項目必須是已經發(fā)布的版本之后嘿般,才能被其他工程或者模塊使用。而實際項目中涯冠,肯定會有自己建立一個lib,并且自己建立的lib項目里面也有通過buildType來決定的變量逼庞,對此有兩種解決辦法:
- 將子項目配置加入蛇更,defaultPublishConfig= debug,這個也很好理解赛糟,就是說派任,這個lib默認發(fā)布build type為debug,這樣是可以解決問題璧南,然而存在一個問題就是掌逛,當切到release版本的時候,那么還是得手動去切換一下司倚,所以不是最優(yōu)解決方案
-
Google論壇里面豆混,有人給出了一種方案篓像,并且經過嘗試可行:
論壇截圖
總結一下就是,在任何子項目需要configuration配置的lib項目里面添加一個publishNonDefault true
皿伺,然后在依賴的宿主項目添加一個
{
debugCompile project(path: ':libName', configuration: 'debug')
releaseCompile project(path:':libName', configuration: 'release')
}员辩,
注意publishNonDefault true必須要添加,不然鸵鸥,會出現(xiàn)configration:
'debug'找不到的問題.
如果出現(xiàn)
Error:Execution
failed for task ':app:processDebugResources'.
>Error: more than one library with package name 'com.xxx.xxx'
請檢查項目中的各種依賴關系奠滑,有沒有重復引入某一個lib包