# Library 項目發布
一般情況下一個庫只會發布它的 *release* variant(變種)版本。這個版本將會被所有引用它的項目使用,而不管它們本身自己構建了什么版本。這是由于 Gradle 的限制,我們正在努力解決這個問題,所以這只是臨時的限制。
你可以控制哪一個 Variant 版本作為發行版:
~~~
android {
defaultPublishConfig "debug"
}
~~~
注意這里的發布配置名稱引用的是完整的 variant 版本名稱。*Relesae*,*debug* 只適用于項目中沒有其它 flavor(特性)時使用。如果想要用其它使用了 flavor 的 variant 版本取代默認的發布版本,你可以:
~~~
android {
defaultPublishConfig "flavor1Debug"
}
~~~
將 Library 項目的所有 variant 版本都發布也是可能的。我們計劃在一般的 `項目依賴項目`(類似于前面所述)情況下允許這種做法,但是由于 Gradle 的限制(我們也在努力修復這個問題)現在還不太可能。
默認情況下沒有開啟發布所有 variant 版本功能,可以通過以下代碼啟用:
~~~
android {
publishNonDefault true
}
~~~
發布多個 variant 版本意味著發布多個 aar 文件而不是一個 aar 文件包含所有 variant 版本。每個 aar 包都包含一個 variant 版本。
發布一個 variant 版本意味著構建一個可用的 aar 文件作為 Gradle 項目的輸出文件。無論是發布到 maven 倉庫,還是其它項目需要創建該 Library 項目的依賴都可以使用到這個 aar。
Gradle 有`默認文件`的概念。當添加以下配置后就會自動使用:
~~~
compile project(':libraries:lib2')
~~~
創建其它發布文件的依賴,你需要指定具體使用哪一個:
~~~
dependencies {
flavor1Compile project(path: ':lib1', configuration: 'flavor1Release')
flavor2Compile project(path: ':lib1', configuration: 'flavor2Release')
}
~~~
> 重要:注意已發布的 configuration 是一個完整的 variant 版本,其中包括了 build type,并且需要像上面一樣被引用。
> 重要:當發布配置非默認時,Maven 發布插件將會發布其它 variant 版本作為擴展包(按分類器分類)。這里是指不能真正的兼容發布到 Maven 倉庫。你應該另外發布一個單一的 variant 版本到倉庫中,或者允許發布所有配置以支持跨項目依賴。
- 譯者序
- 簡介
- 新構建系統的目標
- 為什么使用 Gradle?
- 配置要求
- 基礎項目
- 構建文件示例
- 項目結構
- 配置項目結構
- 構建任務
- 通用任務
- Java 項目的 Task
- Android Tasks
- 基本的構建定制
- Manifest 屬性
- 構建類型
- 簽名配置
- 運行 ProGuard
- 清理資源
- 依賴、Library 和多項目
- 包依賴
- 本地包依賴
- 遠程包依賴
- 多項目設置
- Library 項目
- 創建 Library 項目
- 普通項目和 Library 項目的區別
- 引用 Library 項目
- Library 項目發布
- 測試
- 單元測試
- 基本知識和配置
- 運行測試
- 測試 Android Library 項目
- 測試報告
- 獨立項目
- 多項目報告
- Lint 支持
- 構建 Variants(變種)版本
- 產品定制
- 構建類型+產品定制=構建變種版本
- 產品定制的配置
- 源組件和依賴
- 構建和任務
- 測試
- 多定制的變種版本
- 高級構建的自定義
- 構建選項
- Java 編譯選項
- aapt 選項
- dex 選項
- 操作 task
- 構建類型和產物定制的屬性引用
- 使用sourceCompatibility 1.7
- 附錄
- ApplicationId 與 packageName