今天有個任務,處理一下專案的多渠道,這一塊之前也沒做過
其中有個知識點查了好久也沒找到,可能是關鍵詞沒找對吧 =.=
雖然其中大部分東西都能從網上搜到,但還是把它寫出來好了,當筆記了
主工程依賴了一個模組,叫它 lib 好了
然後 lib 是個工具庫,裡面接了很多第三方的庫,各種支付什麼的,然後為了以後方便,為這個庫加個多渠道這樣
先修改 lib 庫的 build.gradle,新增
android {
publishNonDefault true
productFlavors {
channel1 {
}
channel2 {
}
}
}複製程式碼
然後再修改主工程的 build.gradle,網上搜到的基本都是這麼做的
android {
productFlavors {
channel1 {
}
channel2 {
}
}
}
configurations {
channel1ReleaseCompile
channel1DebugCompile
channel2ReleaseCompile
channel2DebugCompile
}
dependencies {
channel1ReleaseCompile project(path: ":lib", configuration: 'channel1Release')
channel1DebugCompile project(path: ":lib", configuration: 'channel1Debug')
channel2ReleaseCompile project(path: ":lib", configuration: 'channel2Release')
channel2DebugCompile project(path: ":lib", configuration: 'channel2Debug')
}複製程式碼
這樣沒問題,但是試了下,應該可以有另外一種方法,個人感覺方便點
主工程 build.gradle 不改,只在 lib 的 build.gradle 里加一句
android {
defaultPublishConfig 'channel1Debug'
}複製程式碼
不過這樣如果就沒有對主工程進行一些配置了就是
之後對某個渠道增加一些特殊依賴並移除一些依賴
加依賴很簡單
channel1Compile '...' // 就給 channel1 單獨加了個依賴了複製程式碼
但現在如果大多數渠道都需要一個庫,而少數渠道不需要,雖然也可以通過一個個單獨新增的方式,但是這樣就顯得太麻煩了
就這個沒能在網上找到,之後是對著文件一個類似的知識點琢磨出來的
configurations {
channel2Compile.exclude group: 'com.example.lib'
}複製程式碼
這樣就可以了
歡迎大家來我的部落格看看