一. application 直接依賴 aar(單一依賴)
- 拷貝 aar 至 app/libs 目錄
- app/build.gradle 添加以下代碼:
// 根節點下添加 repositories 節點 repositories { flatDir { dirs 'libs' } } // dependencies節點內添加依賴 dependencies { // aar-name 爲 application 要依賴的 aar 包的名稱,不包含後綴。 implementation(name: ‘aar-name’, ext: 'aar') }
二. application 依賴 library,library 依賴 aar(嵌套依賴)
(library名稱以下用 aarlibs 代替, library內依賴的 子aar 名稱用 sublib 代替)
- 拷貝 sublib.aar 至 aarlibs/libs 目錄
- aarlibs/build.gradle 添加以下代碼:
// 根節點下添加 repositories 節點 repositories { flatDir { dirs 'libs' } } // dependencies節點內添加依賴 dependencies { implementation(name: ‘sublib’, ext: 'aar') }
- [重點] 此時 aarlibs 作爲 library 有兩種使用方式。
(1). 作爲 module 被 application 依賴;
(2). 打包爲新的 aar 被 application 依賴。
下面分別展示兩種依賴方式下 application 的配置(主要是爲了在引用 library 的同時能讓 library 內部的 aar 也生效):
-
3.1: 作爲 module 被 application 依賴:
- application/app/build.gradle 添加以下代碼:
// 根節點下添加 repositories 節點 repositories { flatDir { dirs project(':aarlibs').file('libs') } } // dependencies節點內添加依賴 dependencies { implementation project(':aarlibs') }
- application/app/build.gradle 添加以下代碼:
-
3.2: 作爲 aar 被 application 依賴:
- 將 aarlibs.aar 和 sublib.aar 拷貝至 applicatioon/app/libs目錄。
雖然 aarlibs/libs 目錄已經包含 sublib.aar 了,但是項目的 libs 裏也需要拷貝一份,否則報錯找不到 sublib.aar 內部的 Class。不過經簡單測試,apk 的體積並不會因爲重複拷貝一份 sublib.aar 而將其大小做 double 算進 apk 體積內。 - application/app/build.gradle 添加以下代碼:
// dependencies節點內添加依賴 dependencies { implementation fileTree(dir: 'libs', include: ['*.aar']) }
- 將 aarlibs.aar 和 sublib.aar 拷貝至 applicatioon/app/libs目錄。
附:清除 aar 緩存
- terminal 進入項目根目錄
- cd .idea/libraries
- rm Gradle__xxxx_aar.xml
- AndroidStudio 點擊 左上角 SyncProject 和 SyncFile 按鈕