appcompat-v7:25.2.0与play-services:10.2.1存在冲突。

5

我正在开发一个新的应用程序。目前我正在尝试添加依赖项。

compile 'com.google.android.gms:play-services:10.2.1'

当我执行 compile 'com.android.support:appcompat-v7:25.2.0' 时,会出现 gradle 编译错误,提示:

所有 com.android.support 库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。发现版本号为 25.2.0 和 24.0.0 的库。例如,com.android.support:animated-vector-drawable:25.2.0 和 com.android.support:mediarouter-v7:24.0.0 等。(⌘F1) 某些库、工具和库,或者库之间的组合不兼容,或者可能导致错误。其中一种不兼容性是使用 Android 支持库的版本不是最新版本(或特别是低于您的 targetSdkVersion 的版本)进行编译。

有什么好的解决方法吗?

Gradle 文件:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        applicationId "appIdhere"
        minSdkVersion 15
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        resValue "string", "authority", "${applicationId}"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })

    provided "org.projectlombok:lombok:1.16.8"
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.android.support:design:25.2.0'
    compile 'com.android.support:recyclerview-v7:25.2.0'
    compile 'com.android.support:cardview-v7:25.2.0'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    compile 'com.android.support:support-v4:25.2.0'
    compile 'com.squareup.okhttp:okhttp:2.7.0'
    compile 'com.google.android.gms:play-services:10.2.1'
    testCompile 'junit:junit:4.12'
}

1
展示Gradle文件。你有com.android.support:mediarouter-v7:24.0.0吗? - OneCricketeer
2
请阅读此链接:https://developers.google.com/android/guides/setup#split。您可能永远不会在一个应用程序中使用所有的 Google Play 服务。 - OneCricketeer
我刚看到了你的评论。谢谢。我一直以为我只是使用了compile 'com.google.android.gms:play-services-gcm:10.2.1'。我的头脑今天无法集中。谢谢,cricket。 - Nouvel Travay
没问题。不过,我建议使用Firebase消息传递。 - OneCricketeer
我正在使用它来管理GcmNetworkManager。 - Nouvel Travay
4个回答

5

您需要编译'com.android.support:mediarouter-v7:#version'

enter image description here


非常感谢,这就是我需要的。我想要排除一个依赖项。 :) compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:mediarouter-v7:25.3.1' - Juan Mendez

4
请在您的 build.gradle 文件中更新以下内容:
compile 'com.android.support:appcompat-v7:25.3.1'

我做了那个。然后我清理并重新构建了。仍然没有任何进展。 - Nouvel Travay
我假设您正在更新模块级别的build.gradle文件,并尝试重新启动Android Studio。如果错误仍然存在,请粘贴更新后的gradle文件。当我使用与buildtoolversion兼容的正确appcompat库更新模块级别的build.gradle文件时,我的错误得到了解决。compile 'com.android.support:appcompat-v7:25.3.1' - Ajay B

1

稍后回答,但希望能帮助遇到类似问题的人。

首先,“不要使用组合的play-services目标。它会引入数十个库,使您的应用程序变得臃肿。相反,请仅指定您的应用程序使用的特定Google Play服务API。” 这里是每个API的play-services模块列表:https://developers.google.com/android/guides/setup#split

你的问题在于,在play-services库中与com.android.support:appcompat-v7:25.3.1存在com.android.support库版本冲突。要解决这个问题,只需修改

compile 'com.google.android.gms:play-services:10.2.1' 
compile 'com.google.android.gms:play-services-maps:10.2.1' 
compile 'com.google.android.gms:play-services-places:10.2.1'

compile ('com.google.android.gms:play-services-maps:10.2.1') {
    exclude group: 'com.android.support'
}
compile ('com.google.android.gms:play-services-places:10.2.1') {
    exclude group: 'com.android.support'
}

1
您需要在build.gradle文件中替换以下行:
compile 'com.google.android.gms:play-services:10.2.1'

使用这些行。
compile 'com.google.android.gms:play-services-fitness:10.2.1'
compile 'com.google.android.gms:play-services-wearable:10.2.1'

你可以根据需要添加以下这些行。
//for Google+
compile 'com.google.android.gms:play-services-plus:10.2.1'
//for Google Account Login
compile 'com.google.android.gms:play-services-auth:10.2.1'

请遵循参考链接:[https://developers.google.com/android/guides/setup]]


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接