如何发布带有第三方依赖的android SDK?

How to release an android SDK with third party dependencies?

我开发了一个 android SDK 来使用我们的 restful API。我在我的 SDK 中使用了像 retrofit2 和 rxandroid 这样的第三方库。

dependencies 
{
    compile 'io.reactivex:rxandroid:1.2.1'
    compile 'com.squareup.retrofit2:retrofit:2.0.2'
    compile 'com.squareup.retrofit2:converter-gson:2.0.2'
    compile 'com.squareup.retrofit2:adapter-rxjava:2.0.2'
}

我向我的客户发布了一个 aar 文件。他的应用程序导入了我的aar文件并直接使用了我的由retrofit2实现的服务来消费APIs。问题是他的应用程序还需要在他的依赖项部分中包含 retrofit2 和 rxandroid 依赖项。有没有办法让我的客户直接使用我的服务,而无需在他的依赖项部分添加依赖项?因为我不想让我的客户知道我在我的 SDK 中使用了哪些库。

提前致谢。

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

  1. 从你正在使用的库中剥离源代码并用你的aar编译它

  2. 考虑上传到 bintray or Maven Central Repository

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

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

compile ('com.abc.efg:version') { exclude group: 'com.squareup.retrofit2' }

并摆脱所有的头痛。一个真实的例子是 Facebook 的 SDK。它引入了 google 的播放服务,但人们通常已经将其作为项目的依赖项,并且 运行 陷入了诸如 .

之类的问题中