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

6

我曾经可以将库aar文件导入为模块,并且它们一直运行得很完美。但是在最新版本的Android Studio Arctic Fox中,我无法弄清楚如何做到这一点。有人能提供一些提示吗?

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

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

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

1
你能联系myLibrary的出版商,询问它是否已经发布在某个Maven在线仓库中吗? - Shlomi Katriel
发布者是我。不幸的是,它无法实现。 - Hong
1个回答

6

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

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

implementation files('libs/some-dependency.jar')
使用者的应用程序中重复类定义是需要关注的问题。例如,如果您使用了joda-time库,而使用者也使用了joda-time,那么使用者的构建将会失败,因为joda-time库被编译了两次。

解决方案是通过更改所有类的类路径来隐藏您的依赖项,使其成为与使用者应用程序的依赖项不冲突的唯一类路径。
例如,类org.joda.time.DateTime将被转换为just.a.unique.prefix.org.joda.time.DateTime
我曾见过影子化的实现,但缺乏经验。请参阅以下指南以帮助您: https://imperceptiblethoughts.com/shadow/

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接