Gradle Library項目的多渠道打包實現

FBI Warning:歡迎轉載,但請標明出處:http://blog.csdn.net/codezjx/article/details/49516259,未經本人同意請勿用於商業用途,感謝支持!

項目中由於某種需求需要對Library項目也進行多渠道發佈,如:App已經實現了多渠道打包,此時不同渠道包依賴的同一個Library中的某些資源(舉個栗子)也需要根據渠道不同而改變,這個時候就需要對Library進行多渠道發佈了。

實現起來也比較簡單,步驟如下:

1.先對Library進行多渠道發佈:

apply plugin: 'com.android.library'

android {
    ...
    publishNonDefault true
    productFlavors {
        flavor1 {}
        flavor2 {}
    }
    ...
    sourceSets {
        flavor1 {
            res.srcDirs = ['xxx-folder/flavor1/res']
        }
        flavor2 {
            res.srcDirs = ['xxx-folder/flavor2/res']
        }
    }
}

注意其中的publishNonDefault true,這個是關鍵,主要是用來設置Library發佈所有的variants

爲何需要這麼設置?請允許我囉嗦幾句:默認情況下Library項目只會發佈它的release aar包,這也就是爲什麼庫項目中的BuildConfig.DEBUG一直是false的原因

可以通過defaultPublishConfig "debug"來修改這種默認的發佈機制(針對沒有渠道的情況)
若已經有多個渠道,則必須指定完整的variant名字,如:defaultPublishConfig "flavor1Debug"

2.修改App項目中的dependencies方式

根據App不同的渠道編譯Library不同的渠道:

dependencies {
    ...
    flavor1Compile project(path: ':lib', configuration: 'flavor1Release')
    flavor2Compile project(path: ':lib', configuration: 'flavor2Release')
    ...
}

注意:若遇到異常:Gradle DSL method not found: ‘flavor1Compile()’,請把dependencies{}移至build.gradle腳本最下方

參考:
http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication
http://stackoverflow.com/questions/24860659/multi-flavor-app-based-on-multi-flavor-library-in-android-gradle/24910671#24910671

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章