发布需要依赖关系的Android库

时间:2015-11-18 22:41:59

标签: android gradle sdk android-gradle build.gradle

我正在构建Android库项目,以便将其导出为aar SDK包。在我的图书馆里,我build.gradle和#34;常规"依赖性如:

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

因此,当SDK的用户导入aar文件时,他需要手动在他的应用程序项目中添加这些依赖项。

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

  1. 使用play-services:6.+编译的SDK,但用户应用项目已使用play-services:8.+
  2. 反之亦然
  3. 当发生这种情况时 - 存在错误:从名称冲突到未知方法&符号。

    解决方案"两者都应该使用最新的"有时候并不理想,因为我们都知道升级到新jar导致错误的问题所以我们坚持使用旧版本...

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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