Android-aar与jar的生成与使用,从0到1记录
一、生成
生成AAR:
点击 Android Studio 右侧的Gradle面板,展开‘目标库’模块的Tasks > build。 双击assemble任务(或分别执行assembleDebug/assembleRelease生成对应变体的 AAR)。 生成成功后,AAR 文件位于模块的build/outputs/aar/目录下,例如: Debug 变体:library-module-debug.aar,Release 变体:library-module-release.aar。
生成JAR:
点击 Android Studio 右侧的Gradle面板,展开‘目标库’模块的Tasks > build。 双击debugSourcesJar与releaseSourcesJar任务。 生成成功后,JAR 文件位于模块的build/libs/目录下,例如: Debug 变体:lib_common-debug-sources.jar,Release 变体:lib_common-sources.jar。
温馨提示 tips:
- 文件位置: AAR 文件应放在模块的 libs 目录(如 app/libs/),不是项目根目录。
- 同步项目: 修改后点击 Android Studio 右上角的 Sync Now 同步 Gradle。
- 依赖传递性(
AAR、JAR 只是一个二进制打包格式,不会自动传递它的依赖): AAR 不会自动包含其依赖项,需手动添加其所需的库(查看 AAR 提供的文档)。 - 版本冲突: 如果 AAR 包含的库与项目其他依赖冲突,可使用 exclude 或强制版本。举个栗子:
implementation("com.example:library:1.0") {
exclude(group = "com.conflict", module = "library")
}
- ProGuard规则: 如果 AAR 需要特殊混淆规则,将其规则添加到 proguard-rules.pro 文件中。
二、使用jar、aar:
repositories {
// 添加本地仓库路径
flatDir {
dirs("app/libs",....) // 指定 AAR 存放目录
}
}
dependencies {
// 添加 libs 目录下所有 AAR\JAR 文件
implementation(fileTree(mapOf("dir" to "libs", "include" to listOf("*.aar", "*.jar"))))
// 引入特定 JAR
implementation(files("libs/gson-2.8.9.jar"))
// 引用 AAR-直接文件引用
implementation(files("libs/mylibrary.aar"))
// 引用 AAR
implementation(name = "mylibrary", ext = "aar")
// 引用 AAR(kts)
implementation(mapOf(
"name" to "mylibrary",
"ext" to "aar"
))
}