组件化打包的时候,子模块是 Libary库模块中libs包含aar的时候遇到的问题

开门见山 1、

我有一个基础组件,是个基础子模块,库模块

上面图一是这个库模块对于libs的引用方式。 我的原想法是,把libs 放到子基础模块中,其他模块可以通过依赖它,间接使用libs中的文件。 但是就出现了问题;

具体问题情况: 1、编译的时候可以,就是Androidstudio直接运行,是可以正确编译的,但是如果通过gradle 打包apk,就会报错 。

即:Direct local .aar file dependencies are not supported when building an AAR. 我依赖了很多aar,我拿其中一个aar的报错举例

注意 出现上面问题的细节点 1、只有aar这么以来会出现问题 2、libs 中包含aar,如果放在Library的模块中被 applicaton的模块或其他Library引用会出现这个问题

问题解释:

该错误的核心是:在构建一个 AAR 类型的模块(即你的项目模块本身是要打包成 AAR 供其他项目引用)时,不支持直接依赖本地的 .aar 文件(例如放在 libs 目录下的本地 AAR)。 这是因为 AAR 作为 Android 库的分发格式,需要保证依赖的「可传递性」------ 如果你的 AAR 直接依赖本地 AAR,其他项目引用你的 AAR 时,会缺失这个本地 AAR 依赖(本地文件无法随你的 AAR 一起分发),导致依赖断裂。Gradle 为了避免这种问题,直接禁止了构建 AAR 时使用本地 AAR 直接依赖

换句话说就是不能这么写,aar它不支持本地依赖

解决方式: 方式一

1、子组件 Libray库中如上图,子组件中存在libs目录,内含aar文件,可以改成compileOnly方式,只参与编译,不会输出文件,如上图

方式二

2、对于如果libs中aar不是很多的情况下,可以采用上图方式,单独起一个module library的子组件,组件下,只需要 1、放这个aar文件,2,如上图写build.gradle文件。file 名字要和aar的名字一致。default 是默认的,你也可以改,但是要一致

有几个aar 就生成几个module组件。所以,我说对于不是很多的aar情况下,就可以用子组件的方式,起module来实现aar的依赖

这样,其他模块包括上层app 模块就可以implementation的方式依赖aar了。

最后,记得在setting.gradle中记得添加include 编译

相关推荐
JMchen12319 小时前
Android后台服务与网络保活:WorkManager的实战应用
android·java·网络·kotlin·php·android-studio
儿歌八万首1 天前
硬核春节:用 Compose 打造“赛博鞭炮”
android·kotlin·compose·春节
消失的旧时光-19431 天前
从 Kotlin 到 Dart:为什么 sealed 是处理「多种返回结果」的最佳方式?
android·开发语言·flutter·架构·kotlin·sealed
有位神秘人1 天前
kotlin与Java中的单例模式总结
java·单例模式·kotlin
Jinkxs1 天前
Gradle - 与Groovy/Kotlin DSL对比 构建脚本语言选择指南
android·开发语言·kotlin
&有梦想的咸鱼&1 天前
Kotlin委托机制的底层实现深度解析(74)
android·开发语言·kotlin
golang学习记1 天前
IntelliJ IDEA 2025.3 重磅发布:K2 模式全面接管 Kotlin —— 告别 K1,性能飙升 40%!
java·kotlin·intellij-idea
gjxDaniel3 天前
Kotlin编程语言入门与常见问题
android·开发语言·kotlin
野生技术架构师3 天前
Java 21虚拟线程 vs Kotlin协程:高并发编程模型的终极对决与选型思考
java·开发语言·kotlin
言之。3 天前
Kotlin快速入门
android·开发语言·kotlin