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

Hon*_*ong 6 android-library android-studio android-studio-arctic-fox

我曾经能够将库 aar 文件作为模块导入,并且它们一直运行良好。我不知道如何使用最新版本的 Android Studio Arctic Fox 来做到这一点。有人可以提供一些建议吗?

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

implementation files('libs/myLibrary-release.aar')
Run Code Online (Sandbox Code Playgroud)

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

Shl*_*iel 6

我建议将所有myLibrary\xe2\x80\x98s 依赖项嵌入到myLibrary\xe2\x80\x99s AAR 文件中。

\n

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

\n
implementation files(\'libs/some-dependency.jar\')\n
Run Code Online (Sandbox Code Playgroud)\n

您确实需要担心使用 AAR 的应用程序中的重复类定义。\n例如,如果您使用joda-time库并且您的使用者也使用joda-time,则消费者\xe2\x80\x99s 构建将失败,因为joda-time库被编译了两次。

\n

解决方案是通过将所有classes\xe2\x80\x99 类路径更改为唯一的类路径来隐藏您的依赖项,该类路径不会与您的消费者app\xe2\x80\x99s 依赖项发生冲突。

\n

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

\n

我\xe2\x80\x99见过阴影操作,但我\xe2\x80\x99m缺乏经验。\n但是请查看以下指南来帮助您:\n https://imperceptiblethoughts.com/shadow/

\n