Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/191.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android gradle依赖树使用方括号_Android_Gradle_Dependencies - Fatal编程技术网

Android gradle依赖树使用方括号

Android gradle依赖树使用方括号,android,gradle,dependencies,Android,Gradle,Dependencies,我在看我的Android项目的Gradle依赖报告时,遇到了以下陈述 +--- com.google.android.gms:play-services-gcm:11.0.4 | +--- com.google.android.gms:play-services-base:[11.0.4] -> 11.0.4 | | +--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4 |

我在看我的Android项目的Gradle依赖报告时,遇到了以下陈述

+--- com.google.android.gms:play-services-gcm:11.0.4
|    +--- com.google.android.gms:play-services-base:[11.0.4] -> 11.0.4
|    |    +--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4
|    |    |    \--- com.android.support:support-v4:25.2.0 -> 25.4.0 (*)
|    |    \--- com.google.android.gms:play-services-tasks:[11.0.4] -> 11.0.4
|    |         \--- com.google.android.gms:play-services-basement:[11.0.4] -> 11.0.4 (*)
我不明白的是
com.google.android.gms:play services base:[11.0.4]->11.0.4
,方括号的使用和解析到同一版本

下面是如何在我的项目中声明依赖项

compile 'com.google.android.gms:play-services-gcm:11.0.4'

我相信它来自Maven依赖版本规范格式-请参阅参考资料和下面复制的具体细节:

  • (,1.0]
    ->x如果1.0不可用,则通常表示1.0或更高版本。Maven插件可能会对此进行不同的解释,因此使用另一个更具体的选项更安全
  • [1.0]
    ->正好是1.0
  • [1.2,1.3]
    ->1.2=1.5
  • (,1.0),[1.2,)
    ->->x=1.2。多个集合用逗号分隔
  • (,1.1),(1.1),)
    ->如果已知1.1不能与库结合使用,则不包括1.1
您帖子中的版本是
[11.0.4]
,基于上述内容,这意味着版本是11.0.4。有趣的是,这与简单的
11.0.4
之间有细微的区别-如果指定的版本由于某种原因不可用,那么前者将失败(我假设它会在依赖项解析过程中导致错误)而后者将导致使用更高版本(假设有可用版本)


至于它解析的原因(即,在依赖关系图中,它旁边有
->11.0.4
),我认为这是因为指定的版本包含版本范围引用字符(即使在这种情况下,这些字符意味着它将解析为该版本).

我相信它来自Maven依赖版本规范格式-请参阅参考资料和下面复制的具体细节:

  • (,1.0]
    ->x如果1.0不可用,则通常表示1.0或更高版本。Maven插件可能会对此进行不同的解释,因此使用另一个更具体的选项更安全
  • [1.0]
    ->正好是1.0
  • [1.2,1.3]
    ->1.2=1.5
  • (,1.0),[1.2,)
    ->->x=1.2。多个集合用逗号分隔
  • (,1.1),(1.1),)
    ->如果已知1.1不能与库结合使用,则不包括1.1
您帖子中的版本是
[11.0.4]
,基于上述内容,这意味着版本是11.0.4。有趣的是,这与简单的
11.0.4
之间有细微的区别-如果指定的版本由于某种原因不可用,那么前者将失败(我假设它会在依赖项解析过程中导致错误)而后者将导致使用更高版本(假设有可用版本)

至于它解析的原因(即,在依赖关系图中,它旁边有
->11.0.4
),我认为这是因为指定的版本包含版本范围引用字符(即使在本例中,这些字符意味着它将精确解析为该版本)