构建 Android 库时出错:不支持直接本地 .aar 文件依赖项

新手上路,请多包涵

我们最近升级到 Android Gradle Plugin 4.0.0-beta03。我们现在在构建我们的库模块之一时看到此错误

$ ./gradlew library_module:assemble

任务 ':library_module:bundleDebugAar' 执行失败。
> 构建 AAR 时不支持直接本地 .aar 文件依赖项。
生成的 AAR 将被破坏,因为来自任何本地 .aar 的类和 Android 资源
文件依赖项不会打包到生成的 AAR 中。以前的安卓版本
在这种情况下,Gradle 插件也会产生损坏的 AAR(尽管不会抛出此错误)。这
以下 :library_module 项目的直接本地 .aar 文件依赖项导致此错误:
______.aar

我可以看到这是几个月前 添加到 AGP 中的。但他们没有提供有关原因的更多信息。

所以。

  1. 问题是什么?还有更多信息吗?我在任何地方都找不到一个错误报告。
  2. 我该如何解决这个问题?这是不是说我不能构建一个依赖于其他本地 .aar 的 .aar?如果这个本地 aar 托管在 Maven Central 或另一个远程 repo 上怎么办?为什么这会有所作为?

原文由 tir38 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 3.7k
2 个回答

我最近遇到了同样的问题,修复方法是从 libs/ 中删除库并使用 File -> New -> New Module -> Import .JAR/.AAR Package 导入它,然后在库模块中引用它 build.gradle file:552117

 dependencies {
  implementation project(":imported_aar_module")
}

如果您使用的是较新的 Android Studio 版本 (4.0.0+),则此选项不可用。相反,您必须手动进行。

  1. 新建一个目录,将以下内容放入新目录下的 build.gradle 文件中:
 configurations.maybeCreate("default")
artifacts.add("default", file('[nameOfTheAar].aar'))

  1. aar 放入这个新目录中。在 build.gradle 文件旁边。
  2. 将新创建的 Gradle 项目添加到 settings.gradle 文件:
 include(":pathToTheCreatedDirectory")

  1. 将项目包含在您要使用 aar 的库中:
 implementation project(":pathToTheCreatedDirectory", configuration = "default")

原文由 Sandi 发布,翻译遵循 CC BY-SA 4.0 许可协议

在构建依赖于其他 Android 库(即 aar 文件)的 Android 库时,如果将 aar 文件作为依赖项包含在项目中,您将收到以下错误消息:

构建 AAR 时不支持直接本地 .aar 文件依赖项。生成的 AAR 将被破坏,因为来自任何本地 .aar 文件依赖项的类和 Android 资源不会打包到生成的 AAR 中。在这种情况下,以前版本的 Android Gradle 插件也会产生损坏的 AAR(尽管不会抛出此错误)。

正如上面的消息所述,当您构建一个 Android 库项目时,它所依赖的任何 aar 都不会被打包。如果您在 AGP(Android Gradle 插件)4 之前以这种方式构建,您可能会注意到您必须在使用您的库的项目中包含 aar 依赖项。

您可以通过指定 aar 依赖项为 compileOnly 来编译您的 Android 库项目。有关何时使用 compileOnly 的更多信息,请参见 此处

因此,只需将以下内容添加到您的 app build.gradle 文件中:

 compileOnly files('libs/some-library.aar')

请注意,如果您这样做,您将必须在使用您的库的应用程序项目上包含 aar 依赖项。

或者,您可以创建一个模块来导入您的 aar 依赖项,如上面答案中提到的 @Sandi

另一种方法是将您的 aar 依赖项发布到 Maven 存储库,然后将它们添加到您的库项目中,如下所示:

 implementation 'mylibrarygroup:mylibraryartifact:version-x.y.z@aar'

原文由 Luis 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题