在開發過程當中,咱們喜歡把開發和現網壞境的配置區別開,好比IP、端口等。gradle也很好地給咱們提供了buildTypes的功能,以下所示:android
buildTypes {
debug {
buildConfigField "String", "httpServerIp", "\"10.10.19.15\""
buildConfigField "String", "fileServerIp", "\"http://10.10.19.15:8099/\""
buildConfigField "int", "httpPort", "8020"
}
release {
buildConfigField "String", "httpServerIp", "\"10.10.19.18\""
buildConfigField "String", "fileServerIp", "\"http://10.10.19.18:8099/\""
buildConfigField "int", "httpPort", "8020"
}
}複製代碼
這個功能在主項目中使用的話是沒有什麼問題的,但若是是依賴的Module項目中的話,無論你是debug仍是release構建,配置的信息都會是release中的,這給我形成了很大的困擾。gradle
解決方法:ui
Library:spa
android {
publishNonDefault true
}複製代碼
App:debug
dependencies {
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
}複製代碼
這樣的話Library項目每次編譯的時候會同時生成對應的debug和release版本,主項目根據編譯類型去引用。code