gpt4 book ai didi

android - 创建依赖于多个 AAR 的 AAR

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:01:51 31 4
gpt4 key购买 nike

我正在努力构建可用于其他应用程序的 SDK。

我的项目结构如下:

ProjectFolder
|
+--AndroidLibs
| |
| +--UI (android library - AAR)
| |
| +--Protocol (android library - AAR)
| |
| +--infra (android library - AAR)
|
+--SDK(depends on UI, Protocol and Infra)
|
+--APP(depends on SDK)

如您所见,我们使用了 3 个不同的库,每个库都是我们系统中的一个模块(基础设施、用户界面和协议(protocol))。他们每个人都在创建一个 AAR。

我们的 SDK 是一个包装器,其中包含一些对较低层的 API 调用。

我们想创建一个依赖所有其他AAR的AAR,但是由于某种原因我们尝试运行它时,它说他找不到某些类的源代码。

我找到了一些与此问题相关的问题,但它们没有用。还尝试使用 transitive 依赖项,但底线是相同的 - 找不到源代码。

  1. android-studio-how-to-package-single-aar-from-multiple-library-projects :一个回答说没有解决方案(Google 员工)。
  2. create-an-aar-with-multiple-aars-jars : 使用 transitive 依赖。
  3. Create Mojo for creating AAR with all "aar" dependencies

还有什么我们可以做的吗?

最佳答案

来 self 的 answer here :

据我所知,您不能在 aar 中包含 aar。他们没有说明他们需要什么依赖项的配置文件。你也可以

  1. 从您正在使用的库中剥离源代码并使用您的 aar 编译它。如果 UI/Protocal/Infra 库在内部并且您是唯一的提供者,这将完成这项工作。

  2. 考虑上传到 bintrayMaven Central Repository

第二个更可取,因为这样您的客户端所要做的就是包含一个链接,例如 compile 'com.abc.efg:version' 以获取您配置的所有依赖项。这也是一个更好的选择,因为有一些方法可以处理版本冲突(例如使用 exclude group)。

想象一下,如果您的客户正在使用另一个 sdk,它引入了不同版本的 UI/Protocal/Infra。如果你的 aar 是通过第一种方法给他们的,他们甚至会因为版本冲突而根本无法构建项目。但是对于第二个版本,他们可以简单地做

compile ('com.abc.efg:version') { exclude group: 'com.companyName.ui' }

并摆脱所有的头痛。一个真实的例子是 Facebook 的 SDK。它引入了谷歌的播放服务,但人们通常已经将其作为项目的依赖项,并遇到类似 this 的问题。 .

关于android - 创建依赖于多个 AAR 的 AAR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38440975/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com