gradle依赖关系树中asterix和箭头符号的含义

dev*_*v90 8 java android gradle build.gradle android-gradle-plugin

我已经运行gradlew命令来获取gradle依赖树.

gradlew.bat应用程序:依赖项

在输出时,我得到每个依赖项附加的不同类型的符号:

 com.twotoasters.servos:util-otto:1.0.0
 com.squareup.okhttp:okhttp:2.4.0 (*)
 com.android.support:recyclerview-v7:23.2.0 -> 25.0.0
Run Code Online (Sandbox Code Playgroud)

有些依赖项没有任何符号,有些依赖于(*)->.

这些符号是什么意思?

我试图搜索这个,但没有找到任何帮助.

azi*_*ian 11

(*) 站在依赖项旁边,该依赖项已经通过其他工件导入,从而导致重复.

在输出结束时./gradlew :app:dependencies你可以看到:在此输入图像描述

->站在依赖项旁边,该依赖项已经通过其他工件导入,但具有较新的版本.Gradle会更喜欢新版本.

因此,com.android.support:recyclerview-v7:23.2.0 -> 25.0.0意味着该25.0.0版本已经导入,但特别是该工件依赖于旧23.2.0版本.

请参阅Egor Andreevici在2017年意大利Droidcon的"充分利用您的Gradle构建"演讲中的解释.

  • 我没有看到 `(*)` 的问题,因为它们不会影响你的 dex 大小,而 `->` 对你来说是一个明确的信号,你正在*不必要地*扩大 apk 的 dex 大小。删除该依赖项并不简单,因为您无法确定依赖于旧版本的模块是否会在新版本上按预期运行。 (2认同)

小智 0

->意味着在离线模式下运行 gradle 时从版本 23.2.025.0.0 它有用,因此它将使用可用的第一个缓存版本, (*)我不确定,但我认为它也用于下载和编译以下所有库系列(核心等...)使用它+来代替版本代码,它将使用可用的最新版本