Android打aar包问题总结

1、moduleA 依赖 moduleB,将moduleA打包成aar时,未包含 moduleB的resources资源;

方法一:将moduleB的资源,手动拷贝一份到moduleA中;
方法二:使用 fat-aar 插件;

2、fat-aar插件使用的问题:

AGP和Gradle的版本要匹配:

该插件提供了将library以及它依赖的library一起打包成一个完整aar的解决方案,支持AGP 3.0及以上。(目前测试的版本范围是AGP 3.0 - 7.1.0,Gradle 4.9 - 7.3)

  • AGP 7.1.0
  • Gradle 7.3
 classpath 'com.github.kezong:fat-aar:1.3.8'
 id 'com.kezong.fat-aar'
 embed project(path: ':common')

3、Direct local .aar file dependencies are not supported when building an AAR.

在构建 AAR 时直接依赖了本地的 .aar 文件,而 Android Gradle Plugin 不允许这样做,因为这样会导致最终的 AAR 文件不完整(缺少依赖的类和资源)。

Error while evaluating property 'hasLocalAarDeps' of task ':measure:bundleDebugAar'
   > Direct local .aar file dependencies are not supported when building an AAR. 
   > The resulting AAR would be broken because the classes and Android resources from any local .aar file dependencies would not be packaged in the resulting AAR. 
   > Previous versions of the Android Gradle Plugin produce broken AARs in this case too (despite not throwing this error). 
   > The following direct local .aar file dependencies of the :measure project caused this error: 
   > D:\work\space_work\heart_failure_aar\measure\libs\ICDeviceManager.aar,
   > D:\work\space_work\heart_failure_aar\measure\libs\lepu-blepro-1.0.8.aar

解决方案:

方法 1:将本地 .aar 依赖改为 Maven 依赖
如果这些 .aar 文件有对应的 Maven 仓库(如 JCenter、MavenCentral 或私有仓库),可以改为通过 implementation 引入依赖,而不是直接引用 .aar 文件。

方法 2:将 .aar 文件发布到本地 Maven 仓库
如果无法使用远程仓库,可以将 .aar 文件发布到本地 Maven 仓库,然后通过 implementation 引入。

方法3:(自动导入)
AndroidStudio 低于 4.0.0时,将库从libs/目录中删除,然后使用File -> New -> New Module -> Import .JAR/.AAR Package 导入它,最后在库模块的build.gradle文件中引用它:

dependencies {
implementation project(“:imported_aar_module”)
}

方法四:(手动导入)(推荐)
如果您正在使用新版本的Android Studio(4.0.0+),则 Import .JAR/.AAR Package 选项不可用。相反,您必须手动执行它。

整体结构如图:
在这里插入图片描述

1、手动创建一个新目录(即:module名),新目录中新建build.gradle文件,放入以下内容中:

configurations.maybeCreate("default")
artifacts.add("default", file('ICDeviceManager.aar'))

2、将 .aar文件放入新目录中,与 build.gradle 文件放在同一级目录下;

3、将新创建的 Gradle 项目添加到 settings.gradle 文件中:

include ':ICDeviceManager'

4、在你的需要用到这些aar的地方,引入这个module:

implementation project(path: ':ICDeviceManager')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值