6

我曾经能够将库 aar 文件作为模块导入,并且它们一直运行良好。我无法弄清楚如何使用最新版本的 Android Studio Arctic Fox 来做到这一点。任何人都可以提供一个提示吗?

我可以按照官方说明通过在 build.gradle 中添加以下内容来添加 aar 作为依赖项:

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

不幸的是,这将需要依赖的应用程序(即在其 build.gradle 中使用上述行来使用库的应用程序)知道 myLibrary 使用了哪些外部库并添加所有依赖项。例如,如果 myLibrary 有 30 个依赖项,例如“implementation 'joda-time:joda-time:2.10.5'”,则每个依赖应用程序都必须具有这 30 个依赖项。如果 myLibrary 更新了新的依赖项,所有依赖的应用程序也需要添加它。最糟糕的是,应用程序可以在没有这些依赖项的情况下正常构建和启动,但在需要缺少依赖项时会在运行时崩溃

4

1 回答 1

5

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

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

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

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

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

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

我见过阴影在行动,但我缺乏这方面的经验。但请查看以下指南以帮助您: https ://imperceptiblethoughts.com/shadow/

于 2021-08-07T05:41:39.320 回答