Gradle prodcutFlavors 多渠道

今天有個任務,處理一下項目的多渠道,這一塊以前也沒作過javascript

其中有個知識點查了很久也沒找到,多是關鍵詞沒找對吧 =.=java

雖然其中大部分東西都能從網上搜到,但仍是把它寫出來好了,當筆記了android

主工程依賴了一個模塊,叫它 lib 好了工具

而後 lib 是個工具庫,裏面接了不少第三方的庫,各類支付什麼的,而後爲了之後方便,爲這個庫加個多渠道這樣gradle

先修改 lib 庫的 build.gradle,添加 ui

android {
    publishNonDefault true
    productFlavors {
        channel1 {
        }
        channel2 {
        }
    }
}複製代碼

而後再修改主工程的 build.gradle,網上搜到的基本都是這麼作的spa

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')
}複製代碼

這樣沒問題,可是試了下,應該能夠有另一種方法,我的感受方便點code

主工程 build.gradle 不改,只在 lib 的 build.gradle 里加一句 blog

android {
    defaultPublishConfig 'channel1Debug'
}複製代碼

不過這樣若是就沒有對主工程進行一些配置了就是ip

以後對某個渠道增長一些特殊依賴並移除一些依賴

加依賴很簡單

channel1Compile '...' // 就給 channel1 單獨加了個依賴了複製代碼

但如今若是大多數渠道都須要一個庫,而少數渠道不須要,雖然也能夠經過一個個單獨添加的方式,可是這樣就顯得太麻煩了

就這個沒能在網上找到,以後是對着文檔一個相似的知識點琢磨出來的

configurations {
    channel2Compile.exclude group: 'com.example.lib'
}複製代碼

這樣就能夠了


歡迎你們來個人博客看看

相關文章
相關標籤/搜索