发布 Android 需要依赖项的库

Publishing Android library that needs dependencies

我正在构建 Android 库项目,以便将其导出为 aar SDK 包。在我的库中,我有 build.gradle 和 "regular" 依赖项,例如:

dependencies {
        compile 'com.google.android.gms:play-services:8.3.0'
        compile 'com.google.code.gson:gson:2.2.+'
}

所以SDK的用户在导入aar文件的时候,需要在自己的app工程中手动添加这些依赖。

问题出在哪里?当依赖项存在版本冲突时,例如 play-services:

  1. 使用play-services:6.+编译的SDK,但用户应用项目已经使用play-services:8.+
  2. 反之亦然

发生这种情况时 - 存在错误:从名称冲突到未知方法和符号。

"Both should use the newest" 的解决方案有时并不理想,因为我们都知道升级到新 jar 会导致错误的问题,所以我们坚持使用旧的...

我该如何处理这种情况,如果我导出我的 SDK,我总是知道为用户提供他应该如何配置他的 build.gradle 脚本的准确说明?因为我不希望用户修改他已经使用的依赖项。或者 - 对于 SDK 发布者来说,覆盖所有用户选项并相应地发布 SDK 版本的变体是不可行的...

aar 文件不包含 传递(嵌套)依赖项。

这意味着,如果您使用 flatDir 存储库导入 aar 文件 你必须在你的项目中指定依赖项

使用 maven 存储库(您必须在私有或 publicmaven 存储库中发布该库),您不会遇到同样的问题。

在这种情况下,gradle 下载 使用包含依赖项列表的 pom 文件的依赖项。