所有的com.android.support库必须使用完全相同的版本规范。

806

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

所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。发现版本号为25.1.1、24.0.0等。例如,com.android.support:animated-vector-drawable:25.1.1和com.android.support:mediarouter-v7:24.0.0

输入图像描述

我的Gradle:

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'
}

将以下代码添加到你的项目Build.Gradle中:subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex') ) { details.useVersion "26.+" } } } } - Sunil Chaudhary
54个回答

18

如果同样的错误出现在appcompat

implementation 'com.android.support:appcompat-v7:27.0.1'

然后加入设计(design)就解决了问题。

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

对我来说,添加

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

.idea/libraries

中包含了appcompat-v7:23.1.1,没有vlc,只有appcompat就足够了。


非常感谢,它有效了。不过,'com.android.support:design:27.0.1' 的作用是什么? - Wessam El Mahdy

15

依赖解析规则很难维护。它们必须手动维护版本号和任何实现支持库的更改。例如,Android Studio会突出显示可用的新库版本,但不解释这些规则。 - Manuel

12

将这些添加到应用程序级别的依赖项中

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

12

使用support-v13而不是support-v4

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

我遇到了这个问题:compile 'com.android.support:recyclerview-v7:25.2.0' - Crime_Master_GoGo
与上述完全相同的错误:-> 所有 com.android.support 库必须使用完全相同的版本规范 Recyclerview。 - Crime_Master_GoGo
@Googli,请写出compileSdkVersionbuildToolsVersiondependencies。我使用了以下代码,没有问题:compile 'com.android.support:appcompat-v7:25.2.0'compile 'com.android.support:design:25.2.0'compile 'com.android.support:support-v13:25.2.0'compile 'com.android.support:recyclerview-v7:25.2.0' - Mehmet Hanoğlu

9

我有这个:

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!它正在使用Android支持库的27.0.2版本。我尝试添加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'
}

9
在添加了 compile 'com.google.android.gms:play-services:10.2.4''com.android.support:appcompat-v7:25.3.1' 后,我遇到了相同的错误。

添加 animated-vector-drawablemediarouter libs 可以解决这个问题。
compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'

9
我的问题和你的类似。这里出现了一个错误!
请添加以下代码到依赖中,确保版本相同: compile 'com.android.support:appcompat-v7:25.3.0' 所有 com.android.support 库必须使用完全相同的版本规范(混合版本可能会导致运行时崩溃)。找到的版本有 25.3.0 和 24.0.0。例如:'com.android.support:animated-vector-drawable:25.3.0' 和 'com.android.support:mediarouter-v7:24.0.0'。
查看此信息,请添加以下代码到依赖中,确保版本相同: compile 'com.android.support:appcompat-v7:25.3.0'
compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'

8

我之前也遇到了同样的问题,并找到了解决方法。

我只是添加了那些具有另一个版本但与我的support:appcompat版本相同的库。

例如,对于您的错误:

所有com.android.support库必须使用完全相同的版本规范(混合版本可能导致运行时崩溃)。发现版本25.1.1、24.0.0。例如:com.android.support:animated-vector-drawable:25.1.1和com.android.support:mediarouter-v7:24.0.0。

*解决方案是编译这些库的版本,如下所示:

compile 'com.android.support:mediarouter-v7:25.1.1'

-如果其他库有相同的问题并且有另一个版本,请将其与您的support:appcompat版本一起编译

这解决了我的问题,希望也能解决你的问题。

最好的祝愿:)


8

在搜索和整合答案后,2018年版本对于此问题对我起作用:

1)在导航选项卡上更改为项目视图

2)导航到[您的项目名称]/.idea/libraries/

3)删除所有以Gradle__com_android_support_[libraryName]开头的文件

例如:Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4)在您的gradle文件中定义一个变量,并使用它来替换版本号,如${variableName}

定义变量:

ext {
    support_library_version = '28.0.0' //use the version of choice
}

使用变量:

implementation "com.android.support:cardview-v7:${support_library_version}"

示例Gradle:

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}

1
这个答案需要更多的解释。读者可能会误认为他们应该将您的整个gradle文件复制粘贴到他们的项目中。您应该解释一下为什么要添加该扩展以及为什么要将某些支持库设置为gplaysvcs版本,另一些则设置为supportlib版本,并且有些保持不变。 - jungledev

8

在将Android Studio升级到3.4版本和SDK版本升级到28.0.0后,我遇到了这个问题。应用以下依赖项解决了我的问题。

    implementation 'com.android.support:exifinterface:28.0.0'

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