似乎我有Picasso库,2.4.0但是twitter也使用了2.3.2版本的库。我的问题是...... 2.3.2库是否与新版本一起下载?或者只是下载2.4.0并且也被twitter使用?我应该排除2.3.2,Twitter会自动使用2.4.0吗?这样安全吗?较新的版本可能与twitter库不兼容,不是吗?
我很困惑在这种情况下我应该如何处理。我应该排除哪个库(如果我可以排除那个库)。
gradle -q app:dependencyInsight --dependency picasso --configuration compile
com.squareup.picasso:picasso:2.4.0 (conflict resolution)
\--- compile
com.squareup.picasso:picasso:2.3.2 -> 2.4.0
\--- com.twitter.sdk.android:tweet-ui:1.1.0
+--- compile
\--- com.twitter.sdk.android:twitter:1.1.1
\--- compile
(*) - dependencies omitted (listed previously)
答案 0 :(得分:4)
根据Gradle docs:
Gradle提供以下冲突解决策略:
最新:使用最新版本的依赖项。这是Gradle的默认策略,只要版本向后兼容,它通常是一个合适的选择。
失败:版本冲突导致构建失败。此策略要求在构建脚本中显式解决所有版本冲突。有关如何明确选择特定版本的详细信息,请参阅ResolutionStrategy。
所以Gradle将使用Picasso 2.4.0管理依赖项。
这会有问题吗?有可能。如果Twitter使用的方法和/或签名已从2.3.x更改为2.4,则会出现问题。如果它们彼此向后兼容,你将不会遇到任何问题。
我现在看到Twitter SDK实际上已将他们的Picasso库升级到2.5.2(最新版)。如果您的项目导入Picasso,那么您也可以更新它(也可能应该)。如果它是另一个模块的依赖项,那么您也可以更新该模块。
另一种选择是将Picasso降级到2.3.2或使用ResolutionStrategy来使用较低版本。除非你必须,否则我不会推荐这个。