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、新的解决方案:
3.1、支持 Gradle 8.0
其他开发者(aasitnikov)单独fork了一个仓库来进行维护,支持 AGP8.0+:
aasitnikov 维护的: fat-aar-android
buildscript {
repositories {
maven {
setUrl("https://jitpack.io")
content {
includeGroup("com.github.aasitnikov")
}
}
}
dependencies {
classpath("com.github.aasitnikov:fat-aar-android:1.4.4")
}
}
apply plugin: 'com.kezong.fat-aar'
// aar dependency
embed project(path: ':lib-aar', configuration: 'default')
3.2、安卓官方 AGP8.1.2
安卓官方版fat-aar:使用Fused Library将多个Android库发布为一个库
4、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')
958

被折叠的 条评论
为什么被折叠?



