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

多模块Android项目本地AAR依赖构建报错求助

解决子模块引入本地AAR报错的方案

问题本质

当你的子模块是Library类型(最终生成AAR)时,直接通过fileTree或files依赖本地AAR,Android Gradle插件(AGP)不会把这个本地AAR的类和资源打包进子模块生成的AAR里,最终导致子模块的AAR损坏。新版本AGP直接抛出错误,旧版虽不报错但生成的AAR同样存在问题。

可行解决方案

方案一:将本地AAR发布到本地Maven仓库(推荐)

这种方式能保证依赖传递正常,适配多模块场景:

  1. 在项目根目录创建publish-local.gradle文件,内容如下:
plugins {
    id 'maven-publish'
}

publishing {
    publications {
        maven(MavenPublication) {
            groupId = 'com.your.sdk' // 自定义groupId
            artifactId = 'sdk-v3' // 自定义artifactId
            version = '3.0.1' // 对应你的AAR版本号

            artifact file('libs/sdk-v3.0.1.aar')
        }
    }
    repositories {
        mavenLocal()
    }
}
  1. 在子模块features:second-module的build.gradle中引入该脚本:
apply from: rootProject.file('publish-local.gradle')
  1. 执行Gradle任务publishToMavenLocal,将AAR发布到本地Maven仓库
  2. 移除原来的fileTree依赖,换成Maven坐标依赖:
implementation 'com.your.sdk:sdk-v3:3.0.1'

同时确保子模块的repositories包含mavenLocal():

repositories {
    mavenLocal()
    flatDir {
        dirs 'libs'
    }
}

方案二:将AAR转为独立Library模块

如果不想用Maven仓库,可以把本地AAR封装成一个模块:

  1. 在项目中新建一个Android Library模块(比如命名为sdk-module)
  2. 删除模块默认的src目录,把sdk-v3.0.1.aar放到模块根目录
  3. 修改该模块的build.gradle:
configurations.maybeCreate("default")
artifacts.add("default", file('sdk-v3.0.1.aar'))
  1. 在子模块features:second-module中添加模块依赖:
implementation project(':sdk-module')

方案三:仅在主App模块依赖本地AAR(适合本地调试场景)

如果子模块不需要单独发布AAR,仅用于本地开发,可以把AAR依赖移到主App模块:

  1. 在子模块中用compileOnly声明依赖(仅用于编译时校验):
compileOnly files('libs/sdk-v3.0.1.aar')
  1. 在主App模块保留原来的implementation依赖:
implementation fileTree(include: ['sdk-v3.0.1.aar'], dir: 'libs' )

注意:这种方式下子模块单独构建的AAR仍会缺少SDK内容,仅适合不需要发布子模块AAR的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 15:05:17