如何生成包含指定外部依赖的Android库AAR文件?
解决Android库AAR打包外部依赖的问题
你的问题根源在于用implementation声明的依赖不会被打包进AAR,也不会自动传递给引用该库的项目——implementation仅用于库自身编译时的依赖隔离,外部项目无法感知这些依赖,因此会出现类找不到的崩溃。要把这两个依赖打包进AAR,推荐使用以下方案:
方案一:使用Fat-AAR插件(推荐)
这是Android生态中打包"胖AAR"(包含外部依赖)的常用方案,能自动处理依赖的合并与打包:
- 在项目根目录的
build.gradle中添加插件依赖:
buildscript { repositories { google() mavenCentral() } dependencies { classpath 'com.android.tools.build:gradle:7.4.2' // 替换为你当前使用的Gradle插件版本 classpath 'com.github.kezong:fat-aar:1.3.8' // 插件版本需与Gradle版本兼容,可按需调整 } }
- 在库模块的
build.gradle中应用插件并修改依赖配置:
plugins { id 'com.android.library' id 'kotlin-android' id 'com.github.kezong.fat-aar' } android { // 保持你原有的库配置(compileSdk、defaultConfig等) } dependencies { // 将原来的implementation替换为embed,标记该依赖需要打包进AAR embed("org.jetbrains.kotlinx:kotlinx-coroutines-play-services:1.6.4") embed("com.squareup.okhttp3:okhttp:4.10.0") // 其他不需要打包的依赖仍可使用implementation/api }
- 重新构建库:执行
./gradlew :your-library-module:assembleRelease,生成的AAR会包含这两个依赖的代码。
注意事项
- 打包后的AAR体积会显著增大,需评估是否接受此代价
- 如果引用该库的项目也引入了相同依赖,可能出现类重复冲突,此时需要在库或引用项目中通过
exclude规则排除重复依赖 - 确保Fat-AAR插件版本与你的Gradle插件版本兼容,可根据自身Gradle版本调整插件号
方案二:手动引入依赖包(不推荐)
下载这两个依赖的JAR/AAR文件,放到库模块的libs目录下,然后用implementation files('libs/xxx.jar')声明依赖。这种方式虽然能打包进AAR,但需要手动管理依赖的更新和子依赖,极易出错,仅适合特殊场景。
内容的提问来源于stack exchange,提问作者Wafi_ck
相关产品推荐
相关产品推荐

