【问题标题】:Gradle mixed versions warningGradle 混合版本警告
【发布时间】:2019-05-14 03:14:24
【问题描述】:

我的应用程序使用 API 19,我在其中一个布局中放置了一个 MapView,并添加了谷歌地图实现。现在我收到来自 gradle 的警告,说我正在混合版本。

这里是警告:

所有 com.android.support 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本 28.0.0-rc02、26.1.0。示例包括 com.android.support:animated-vector-drawable:28.0.0-rc02 和 com.android.support:support-media-compat:26.1.0 更多... (Ctrl+F1)

这是我的 gradle 依赖项:

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:28.0.0-rc02'
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.volley:volley:1.1.1'
implementation 'com.google.android.gms:play-services-maps:15.0.1'

警告显示'com.android.support:appcompat-v7:28.0.0-rc02'

我不确定在哪里可以找到用于play-services-maps 的正确版本或如何正确解决此问题。我不想从 19 降级我的最低版本。

【问题讨论】:

    标签: android gradle


    【解决方案1】:

    在你的 build.gradle (:app) 末尾添加这个

    configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
                details.useVersion '26.1.0'
         }
    
       }
    }
    

    【讨论】:

    • @AnuMartin 好吧,它只是为您在该特定项目中的所有依赖项设置了一个规则,如果您添加的那些库具有自己的特定库并且这些库具有组 id 'com. android.support' 那么他们应该使用版本 '26.1.0' :)
    • @DarShan 我遇到了运行时错误,但这解决了!谢谢
    【解决方案2】:

    建议内容如下:

    所有 com.android.support 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。

    这意味着,您必须exclude 26.1.0 并提供28.0.0-rc02

    implementation "com.android.support:support-media-compat:28.0.0-rc02"
    implementation "com.android.support:support-v4:28.0.0-rc02"
    implementation ("com.google.android.gms:play-services-maps:15.0.1") {
        exclude group: "com.google.android.gms", module: "support-media-compat"
        exclude group: "com.android.support", module: "support-v4"
    }
    

    可能会有更多版本发生冲突,但修复它们的工作方式相同。

    【讨论】:

      【解决方案3】:

      1.转到文件系统上的 project/.idea/libraries 文件夹,查看哪些库不同。

      2.您必须手动将这些具有相同版本的库包含在您的 build.gradle 文件中。

      3.然后,同步您的项目

      在你的情况下:-

      implementation 'com.android.support:animated-vector-drawable:28.0.0-rc02'
      

      你需要添加依赖:-

      implementation 'com.android.support:support-media-compat:28.0.0-rc02'
      

      【讨论】:

        【解决方案4】:
        //put this things in build.gradle(Project) file
        allprojects {
          repositories {
            maven {
              url "https://maven.google.com"
            }
            jcenter()
            google()
          }
        }
        

        【讨论】:

        • 你的问题有很多解决方案,因为这个问题是由图书馆产生的,所以如果遇到任何问题,请告诉我。谢谢
        【解决方案5】:

        您需要遵循以下步骤。 1-项目/.idea/库 在这里你会看到哪个库是不同的。 您可以根据您的所有图书馆更正不同的。 然后,同步您的项目。

        【讨论】:

        • 您也可以通过建议在android studio 3.0或以上版本中找到正确版本的库
        【解决方案6】:

        只需添加这个 lins

        implementation 'com.android.support:customtabs:28.0.0-rc02' implementation 'com.android.support:support-media-compat:28.0.0-rc02' implementation 'com.android.support:support-v4:28.0.0-rc02'

        【讨论】:

          【解决方案7】:

          面对同样的问题,我通过以下方式解决了:

          • 在 build.gradle 文件中检查了我的项目的 sdk 版本,以了解版本并相应地更改库
          • 然后我不得不重写库并更改与 sdk 内联的版本

          所附图片显示了我必须覆盖的库:

          • com.android.support:animated-vector-drawable更改为 28.0.0

          • com.android.support:support-media-compat 更改为 28.0.0

          • com.android.support:support-v4 更改为 28.0.0

          我的理解是android支持、drawable和compat库是用26.1.0版本预定义的,我的sdk版本和目标是28,所以我不得不改变它。

          我的 gradle 运行流畅,还没有遇到任何问题。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-06-22
            • 2016-08-22
            • 2017-05-19
            相关资源
            最近更新 更多