一. 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 按钮