天天看點

Gradle 使用技巧(五) - AAR

1. 什麼是AAR

關于aar檔案,摘取官方的解釋:AAR 檔案的檔案擴充名為 .aar,Maven 工件類型也應當是 aar。檔案本身是一個包含以下強制性條目的 zip 檔案:

  • /AndroidManifest.xml
  • /classes.jar
  • /res/
  • /R.txt

此外,AAR 檔案可能包含以下可選條目中的一個或多個:

  • /assets/
  • /libs/名稱.jar
  • /jni/abi 名稱/名稱.so(其中 abi 名稱 是 Android 支援的 ABI 之一)
  • /proguard.txt
  • /lint.jar

2. AAR檔案位置

AAP的位置為 【項目名稱/子產品名稱/build/outputs/aar/】 中,如果沒有aar檔案,可以通過點選 Build > Make Project 的方式重新生成此檔案。

需要注意的是:隻有library子產品才會生成aar檔案,application子產品是不會生成的。

3. 如何使用AAR檔案

  1. 建立一個library工程,寫一段簡單的代碼。
    Gradle 使用技巧(五) - AAR
    TestUtils
  2. Build -> Make Project
Gradle 使用技巧(五) - AAR

aar檔案位置

  1. 将aar檔案複制到需要引入的子產品下的libs檔案夾中。
Gradle 使用技巧(五) - AAR

放入aar

  1. gradle中配置引用

在android同級節點做以下配置:

repositories{
    flatDir{
        dirs 'libs'
        }
}
           

dependencies中配置依賴:

//implementation(name:'xxx',ext:'aar')
implementation(name:'core-library',ext:'aar')
           

然後同步一下,等待編譯完成。

  1. 驗證是否引入成功
Gradle 使用技巧(五) - AAR

嘗試調用

4. AAR開發注意事項

  • 資源合并沖突

    建構工具會将庫子產品中的資源與相關應用子產品的資源合并。如果在兩個子產品中均定義了給定資源 ID,将使用應用中的資源。

    如果多個 AAR 庫之間發生沖突,将使用依賴項清單首先列出(位于 dependencies 塊頂部)的庫中的資源。

    為了避免常用資源 ID 的資源沖突,請使用在子產品(或在所有項目子產品)中具有唯一性的字首或其他一緻的命名方案。

  • 庫子產品可以包含 JAR 庫

    可以開發一個自身包含 JAR 庫的庫子產品;不過,需要手動編輯相關應用子產品的建構路徑,并添加 JAR 檔案的路徑。

  • 庫子產品可以依賴外部 JAR 庫

    在開發一個依賴于外部庫(例如 Maps 外部庫)的情況下,相關應用必須針對包含外部庫(例如 Google API 插件)的目标建構。另外也要注意,庫子產品和相關應用都必須在其清單檔案的 <uses- library> 元素中聲明外部庫。

  • 庫子產品不得包含原始資源

    工具不支援在庫子產品中使用原始資源檔案(儲存在 assets/ 目錄中)。應用使用的任何原始資源都必須存儲在應用子產品自身的 assets/ 目錄中。

  • 應用子產品的 minSdkVersion 必須大于或等于庫定義的版本

    庫作為相關應用子產品的一部分編譯,是以,庫子產品中使用的 API 必須與應用子產品支援的平台版本相容。

  • 每個庫子產品都會建立自己的 R 類

    在建構相關應用子產品時,庫子產品将先編譯到 AAR 檔案中,然後再添加到應用子產品中。是以,每個庫都有其自己的 R 類,并根據庫的軟體包名稱命名。從主子產品和庫子產品生成的 R 類會在所需的所有軟體包(包括主子產品的軟體包和庫的軟體包)中建立。

5. 參考資料

繼續閱讀