如何使用 Android Studio Arctic Fox 将 Android 库 aar 作为模块导入?

How to import an Android library aar as a module with Android Studio Arctic Fox?

我曾经能够 import library aar files as modules,他们一直工作得很好。我无法弄清楚如何使用 Android Studio Arctic Fox 的最新版本来做到这一点。谁能提供一些建议?

我可以按照the official instructions添加一个aar作为依赖,在build.gradle中添加以下内容:

implementation files('libs/myLibrary-release.aar')

不幸的是,这将需要相关应用程序(即在其 build.gradle 中使用上述行来使用库的应用程序)知道 myLibrary 使用了哪些外部库并添加所有依赖项.例如,如果 myLibrary 有 30 个依赖项,例如“implementation 'joda-time:joda-time:2.10.5'”,那么每个依赖的应用程序都必须有这 30 个依赖项。如果 myLibrary 更新了一个新的依赖项,所有依赖的应用程序也需要添加它。最糟糕的是the app can build and start fine without these dependencies but will crash at runtime when a missing dependency is needed.

我建议将 myLibrary 的所有依赖项嵌入 myLibrary 的 AAR 文件中。

嵌入非常简单 - 下载所有 myLibrary 依赖项的所有 AAR 和 JAR,将它们保存在 lib 文件夹中并以以下形式添加新的本地依赖项:

implementation files('libs/some-dependency.jar')

您确实需要担心使用您的 AAR 的应用中的重复 class 定义。 例如,如果您使用 joda-time 库而您的消费者也使用 joda-time,则消费者的构建将失败,因为 joda-time 库被编译了两次。

解决方案是通过将所有 classes 的 class 路径更改为不会与您的消费者应用程序的依赖项发生冲突的唯一 class 路径来隐藏您的依赖项。

例如,class org.joda.time.DateTime 将转换为 just.a.unique.prefix.org.joda.time.DateTime

我见过阴影效果,但我缺乏经验。 但请查看以下指南来帮助您: https://imperceptiblethoughts.com/shadow/