You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中如何将依赖库打包进目标库的AAR文件

解决AAR打包时本地AAR依赖问题及依赖传递方案

问题原因

你遇到的错误是Android Gradle Plugin(AGP)的明确限制:构建AAR时不支持直接依赖本地AAR文件。因为本地AAR的类、资源不会被打包进最终生成的AAR中,导致依赖这个AAR的项目无法找到B、C的内容——即便旧版AGP不报错,生成的AAR本质也是损坏的。

解决方案

根据你的模块维护场景,推荐以下几种合规的实现方式:

1. 若B、C是本地维护的模块(推荐)

直接在Module A的构建脚本中添加对B、C的模块依赖,AGP会自动处理依赖传递逻辑:

  • Groovy 版本(build.gradle):
dependencies {
    implementation project(':moduleB')
    implementation project(':moduleC')
}
  • Kotlin DSL 版本(build.gradle.kts):
dependencies {
    implementation(project(":moduleB"))
    implementation(project(":moduleC"))
}

这种方式的优势:

  • 本地开发时可联动修改B、C模块,无需手动打包AAR。
  • 当你将Module A发布到Maven仓库时,其生成的pom文件会自动包含B、C的依赖坐标,用户引入Module A后,构建工具会自动拉取B、C的依赖。

2. 若B、C是第三方AAR(无法作为本地模块)

将B、C发布到本地Maven仓库或私有远程仓库,再通过坐标依赖引入到Module A:

步骤1:将B、C安装到本地Maven仓库

如果B、C是你自己的模块,执行命令:

./gradlew :moduleB:publishToMavenLocal
./gradlew :moduleC:publishToMavenLocal

如果是单独的AAR文件,可通过Maven命令手动安装(需提前创建对应pom.xml):

mvn install:install-file -Dfile=moduleB.aar -DgroupId=com.yourgroup -DartifactId=moduleB -Dversion=1.0.0 -Dpackaging=aar

步骤2:在Module A中配置仓库并引入依赖

// Groovy版本
repositories {
    mavenLocal() // 添加本地Maven仓库
    // 若使用远程私有仓库,需添加对应仓库地址和认证信息
}

dependencies {
    implementation 'com.yourgroup:moduleB:1.0.0'
    implementation 'com.yourgroup:moduleC:1.0.0'
}

这样打包Module A的AAR时,依赖信息会被正确写入pom,用户引入后可自动拉取B、C。

3. 强制合并B、C到A的AAR(不推荐)

如果必须将B、C的内容打包进A的AAR(该方式会导致AAR体积膨胀、资源冲突、无法单独更新等问题,仅适用于特殊场景),可手动合并:

  • 解压B、C的AAR文件,取出classes.jar和res资源目录。
  • 将classes.jar放入Module A的libs目录,添加依赖:implementation files('libs/moduleB-classes.jar')。
  • 复制B、C的res资源到Module A的res目录(注意重命名同名资源避免冲突)。
  • 合并B、C的AndroidManifest.xml内容到Module A的Manifest中。

总结

优先选择模块依赖或远程仓库依赖的方式,这是AGP官方推荐的方案,既能避免打包错误,又能保证依赖传递的正确性和可维护性。

内容的提问来源于stack exchange,提问作者virat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 08:01:23