# 普通項目和 Library 項目的區別
Library 項目 main 輸出一個 *.aar* 包,包含編譯文件(類似 jar 包或者 .so 文件)和資源文件(manifest,res,assets)。
Library 項目同樣也可以獨立于應用程序生成一個測試用的 apk 來測試。
標識 Task 同樣適用于 Library 項目(**assembleDebug**,**assembleRelease**),因此在命令行構建項目沒有什么不同。
至于其他的,Library 項目跟應用工程一樣,它們都擁有 `build type` 和 `product flavor`,也可以生成多個不同版本的 `aar`。
大部分 *Build Type* 的配置不適用于 Library 項目。但可以根據 Library 項目 `是否被其它項目使用`,`是否用來測試` 來作為使用自定義 *sourceSet* 的條件,從而動態使用 Library 項目的資源。
- 譯者序
- 簡介
- 新構建系統的目標
- 為什么使用 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