更新到android studio 2.3后,我收到了这个错误消息。我知道这只是一个提示,因为应用程序运行正常,但这真的很奇怪。

所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。找到版本25.1.1、24.0.0。示例包括com.android.support:animatedvector-drawable:25.1.1和com.android.com/support:mediarouter-v7:24.0.0

我的成绩:

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'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

当前回答

使用support-v13而不是support-v4

compile 'com.android.support:support-v13:25.2.0'

其他回答

您可以使用以下解决方案之一解决此问题:

更新:

从Android studio 3.0开始,它变得更加容易,因为它现在显示了一个更有用的提示,所以我们只需要遵循这个提示。例如:]1

所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。建立版本27.0.2、26.1.0。示例包括support:动画矢量可绘制:27.0.2和com.android.support:customtabs:26.1.0有一些库或工具和库的组合不兼容,或可能导致错误。其中一种不兼容性是使用不是最新版本(尤其是低于您的targetSdkV版本。)

解决方案:显式添加具有旧版本但具有新版本号的库。在我的例子中,com.android.support:customtabs:26.1.0,所以我需要添加:

build.gradle.kts(Kotlin构建脚本)

implementation("com.android.support:customtabs:27.0.2")

build.gradle(Groovy构建脚本)

implementation "com.android.support:customtabs:27.0.2"  

ie:从第二项中获取库,并使用第一项中的版本号实现它。

注意:不要忘记现在按sync,这样gradle可以重建依赖关系图,并查看是否有更多冲突。

说明:您可能会被错误消息所迷惑,因为不要使用customtabs,所以我怎么会有冲突!!好您没有直接使用它,但您的一个库在内部使用了旧版本的customtab,因此您需要直接请求它。

如果你想知道你的哪个库负责旧版本,并可能要求作者更新他的库,运行Gradle依赖性报告,请查看旧的答案以了解如何操作。

注意这一点


旧答案:

灵感来自CommonsWare答案:

运行Gradle依赖关系报告,查看您的完整树依赖项为。

从那里,您将看到您的哪个库要求不同版本的Android支持库。无论它要求什么,您都可以直接使用25.2.0版本或使用Gradle的其他冲突解决方法获得相同版本。


更新:

截至gradle插件版本:3.0编译已被实现或api所取代。

因此改用:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

或对于windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

并搜索冲突版本。

对我来说,删除com.google.android.gms:play-services:10.2.0后,错误消失了

并且只包括com.google.android.gms:播放服务位置:10.2.0和com.google.aandroid.gms播放服务地图:10.2.0,因为它们是我使用的唯一两个播放服务。

我认为gms:play服务依赖于支持库的一些旧组件,因此我们需要自己明确地添加它们。


对于AS 3.0或更旧版本。

Run:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

例子:

./gradlew -q dependencies app:dependencies --configuration implementation

如果有人知道新的gradle插件的更好方法,请告诉我。

可以使用以下方法解决问题:

打开AndroidManifest.xml文件。单击底部的“合并清单”选项在右侧,它将显示其他清单文件。以下是不同依赖项的单独清单文件,这些依赖项是您包含的,或者是由于其他依赖项的影响而包含的。找出错误消息中提到的依赖项。单击它以打开其清单文件。如果您的错误消息显示要更改元数据中的android:value属性,那么这里就是进行更改的地方。更改值和显示不匹配版本号的其他位置,并使用build.gradle文件中包含的版本进行更改。现在同步项目,您就可以开始了

我有这个:

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

并得到以下错误:

解决方案很简单-主要依赖项都是正确的,因此留下了任何第三方依赖项。一个接一个地删除,直到找到罪魁祸首,结果是facebook!它使用的是27.0.2版本的android支持库。我试图添加cardview 27.1.1版本,但这并不奏效,因为解决方案仍然足够简单。

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

将此添加到build.gradle(模块:应用程序)的末尾:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.1'
        }
     }

   }
}

确保将“25.3.1”替换为要用于所有依赖项的android支持库版本,该版本不应低于compile sdk版本

比重新同步渐变

突出显示错误并按“ALT+ENTER”,您将看到一个选项:

添加库依赖项>编辑意图设置

这会将您带到一个菜单,在那里您将看到与支持兼容不同的特定问题支持依赖关系。在gradle(com'XXX')中创建其依赖项,并将其版本设置为与support-compat的版本匹配。同步渐变,你就完成了。