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

2024-04-11

我曾经能够将库 aar 文件导入为模块 https://stackoverflow.com/a/34919810/355456他们一直工作得很好。我不知道如何使用最新版本的 Android Studio Arctic Fox 来做到这一点。有人可以提供一些建议吗?

我可以跟随官方说明 https://developer.android.com/studio/projects/android-library通过在 build.gradle 中添加以下内容来添加 aar 作为依赖项:

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

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


我建议嵌入所有myLibrary里面的依赖myLibrary的 AAR 文件。

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

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

您确实需要担心使用 AAR 的应用程序中的重复类定义。 例如,如果您使用joda-time图书馆和您的消费者也使用joda-time,消费者的构建将会失败,因为joda-time库被编译两次。

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

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Android Studio Arctic Fox 将 Android 库 aar 作为模块导入? 的相关文章

随机推荐