欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Gradle 使用技巧(五) - AAR

程序员文章站 2022-03-26 18:23:17
...

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

  2. Build -> Make Project

Gradle 使用技巧(五) - AAR

  1. 将aar文件复制到需要引入的模块下的libs文件夹中。

Gradle 使用技巧(五) - AAR
4. 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 插件)的目标构建。另外也要注意,库模块和相关应用都必须在其清单文件的 元素中声明外部库。

  • 库模块不得包含原始资源
    工具不支持在库模块中使用原始资源文件(保存在 assets/ 目录中)。应用使用的任何原始资源都必须存储在应用模块自身的 assets/ 目录中。

  • 应用模块的 minSdkVersion 必须大于或等于库定义的版本
    库作为相关应用模块的一部分编译,因此,库模块中使用的 API 必须与应用模块支持的平台版本兼容。

  • 每个库模块都会创建自己的 R 类
    在构建相关应用模块时,库模块将先编译到 AAR 文件中,然后再添加到应用模块中。因此,每个库都有其自己的 R 类,并根据库的软件包名称命名。从主模块和库模块生成的 R 类会在所需的所有软件包(包括主模块的软件包和库的软件包)中创建。

5. 参考资料

相关标签: Gradle