我正在构建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
:
play-services:6.+
编译的SDK,但用户应用项目已使用play-services:8.+
当发生这种情况时 - 存在错误:从名称冲突到未知方法&符号。
解决方案"两者都应该使用最新的"有时候并不理想,因为我们都知道升级到新jar
导致错误的问题所以我们坚持使用旧版本...
我如何处理这种情况,所以如果我导出我的SDK,我总是知道为用户准备如何配置他的build.gradle
脚本的确切说明?因为我不希望用户修改他已经使用的依赖项。或者 - 对于SDK发布商而言,覆盖所有用户选项并相应发布SDK版本的变体是不可行的......
答案 0 :(得分:2)
aar文件不包含传递(嵌套)依赖项。
这意味着,如果您使用flatDir
repo导入aar文件
您必须在项目中指定依赖项也。
使用 maven存储库(您必须在私有或公共maven存储库中发布库),您将不会遇到同样的问题。
在这种情况下,请使用包含依赖项列表的pom文件来gradle 下载依赖项。