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