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

Posted

技术标签:

【中文标题】所有 com.android.support 库必须使用完全相同的版本规范【英文标题】:All com.android.support libraries must use the exact same version specification 【发布时间】:2017-07-11 11:29:38 【问题描述】:

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

(混合版本可能导致运行时崩溃)。找到版本 25.1.1、24.0.0。示例包括 com.android.support:animated-vector-drawable:25.1.1 和 com.android.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'

【问题讨论】:

将此添加到您的 projectBuild.Gradle 子项目 project.configurations.all resolutionStrategy.eachDependency details -> if (details.requested.group == 'com.android.support' && !details. requested.name.contains('multidex') ) details.useVersion "26.+" 【参考方案1】:

对我来说,该错误是由于我导入的第三方库使用了较旧的 Google 支持库模块造成的。我只是将它们更新到最新版本(例如检查 Github),错误就消失了。我建议检查您包含在 build.gradle 中的所有非 Google 库是否都是最新的。

【讨论】:

【参考方案2】:

更新到 Android Studio 2.3 后遇到同样的问题,解决方法是在 build.gradle 中添加以下包:

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

注意:更改版本以匹配您项目中使用的其他支持库包

【讨论】:

【参考方案3】:

确保所有 Facebook SDK 依赖项使用您项目的相同支持库版本:

dependencies 
    // Facebook SDK dependencies, excluding Bolts
    compile "com.android.support:appcompat-v7:25.4.0"
    compile "com.android.support:cardview-v7:25.4.0"
    compile "com.android.support:customtabs:25.4.0"
    compile "com.android.support:design:25.4.0"

    compile "com.facebook.android:facebook-android-sdk:4.23.0"

【讨论】:

【参考方案4】:

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

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

这将带您进入一个菜单,您将在其中看到与 support-compat 不同的特定问题支持依赖项。在 gradle (com 'XXX') 中创建它的依赖项并设置它的版本以匹配 support-compat 的版本。同步 gradle 就完成了。

【讨论】:

【参考方案5】:
implementation 'com.android.support:appcompat-v7:26.1.0'

在此行之后您必须在 gradle 中添加新行

implementation 'com.android.support:design:26.1.0'

【讨论】:

你只需要第二个。它包括自己的第一个【参考方案6】:

我在更新到 Android Studio 2.3 后遇到了这个问题

在依赖项中添加这些行解决了我的问题

compile 'com.android.support:customtabs:25.2.0'  
compile 'com.android.support:palette-v7:25.2.0'

【讨论】:

【参考方案7】:

替换这个

compile 'com.android.support:appcompat-v7:25.2.0'

通过这个

compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'

重建和良好的编码

【讨论】:

【参考方案8】:

我的项目中有这些依赖项:

implementation 'com.android.support.constraint:constraint-layout:1.1.3'

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

implementation 'com.google.android.gms:play-services-maps:16.1.0'

implementation 'com.google.firebase:firebase-database:17.0.0'
implementation 'com.google.firebase:firebase-storage:17.0.0'
implementation 'com.google.firebase:firebase-messaging:18.0.0'

implementation 'com.firebaseui:firebase-ui-storage:0.6.0'

到目前为止,似乎没有任何问题,但我收到了这条消息:

找到版本 28.0.0、23.4.0。例子包括 com.android.support:animated-vector-drawable:28.0.0 和 com.android.support:palette-v7:23.4.

然后我做了:

$ ./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath >> dep.txt

在文件中,我搜索了palette,发现是firebase storage使用的:

\--- com.firebaseui:firebase-ui-storage:0.6.0
     +--- com.android.support:appcompat-v7:23.4.0 -> 28.0.0 (*)
     +--- com.android.support:palette-v7:23.4.0

添加后:

implementation 'com.android.support:palette-v7:28.0.0'

似乎已解决,不再出现错误。

//干杯

【讨论】:

【参考方案9】:

我设法通过添加来编译(不是很干净)

【讨论】:

【参考方案10】:

尽量使构建工具与支持库的版本完全相同

例子

android 
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig 
        applicationId "com.itechnologyeg.*******"
        minSdkVersion 16
        targetSdkVersion 25
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
     
dependencies 
 compile 'com.android.support:appcompat-v7:25.0.0'
    compile 'com.android.support:animated-vector-drawable:25.0.0'
    compile 'com.android.support:mediarouter-v7:25.0.0'
    compile 'com.android.support:recyclerview-v7:25.0.0'
    compile 'com.android.support:cardview-v7:25.0.0'
    compile 'com.android.support:design:25.0.0'

【讨论】:

【参考方案11】:

可能导致此问题的另一件事是,如果您有这样的声明:

compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:+'

+ 表示采用最新版本,可能是比25.3.1 更新的版本。将+ 替换为特定版本,例如25.3.1,如下所示:

compile 'com.android.support:support-v4:25.3.1'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:recyclerview-v7:25.3.1'

它会解决问题

【讨论】:

【参考方案12】:

如果您在实现以下所有新库后遇到问题。我在这个'com.android.support:appcompat-v7:27.1.0' 兼容版本上遇到了上述同样的问题。

implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:design:27.1.0'
implementation 'com.android.support:appcompat-v7:27.1.0'
implementation 'com.android.support:mediarouter-v7:27.1.0'
implementation 'com.android.support:recyclerview-v7:27.1.0'
implementation 'com.android.support:cardview-v7:27.1.0'
implementation 'com.android.support:support-v13:27.1.0'
implementation 'com.android.support:support-v4:27.1.0'

我只是替换 这个

'com.android.support:appcompat-v7:27.1.0'

到这里

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

【讨论】:

只添加实现 'com.android.support:support-v4:27.1.0' 对我有用【参考方案13】:

对我来说,我通过添加解决了错误:compile 'com.android.support:design:<version>'

【讨论】:

【参考方案14】:

包括以下行:

implementation 'com.android.support:support-v4:27.1.1'

确保您使用的是 android studio 插件 3+

【讨论】:

【参考方案15】:

问题可以通过以下方法解决:

    打开您的AndroidManifest.xml 文件。 点击底部的Merged Manifest选项 在右侧,它将显示其他清单文件。以下是您包含的不同依赖项的单独清单文件,或者由于某些其他依赖项的影响而被包含在内。 找出错误消息中提到的依赖项。单击它以打开其清单文件。 如果您的错误消息说要更改 meta-data 中的 android:value 属性,那么可以在此处进行更改。 更改该不匹配版本号出现的值和其他位置,并将其更改为您包含在build.gradle 文件中的版本。 现在同步项目,一切顺利

【讨论】:

【参考方案16】:

这很简单,只是强制所有 v7 和 v4 库使用您在依赖项之前设置的库版本。

configurations.all 
                    // To resolve the conflict for com.android.databinding
                    // dependency on support-v4:21.0.3
                    resolutionStrategy.force 'com.android.support:support-v4:28.0.0'
                    resolutionStrategy.force 'com.android.support:support-v7:28.0.0'
                

【讨论】:

【参考方案17】:

所有 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

此警告通常在我们使用 Google Play 服务时发生,因为它使用支持库作为依赖项。

我们大多数人都不知道我们可以覆盖 Google Play 服务中使用的支持库。当我们使用以下依赖时:

implementation "com.android.support:animated-vector-drawable:25.1.1"

它隐含地依赖于com.android.support:mediarouter-v7:25.1.1。但它与 com.android.support:mediarouter-v7:24.0.0 的 Google Play 服务依赖项发生冲突。因此,我们需要通过以下方式显式使用库来覆盖它:

implementation "com.android.support:mediarouter-v7:25.1.1"

然后,您的依赖项块将像这样包含它们:

dependencies 
    implementation "com.android.support:animated-vector-drawable:25.1.1"
    implementation "com.android.support:mediarouter-v7:25.1.1"

    ...

【讨论】:

【参考方案18】:

我必须在 gradle 中添加以下行来消除错误 这取决于您使用的版本与 appcompat 相同

compile 'com.android.support:appcompat-v7:26+'

compile 'com.android.support:mediarouter-v7:26+'

【讨论】:

对版本使用通配符+ 是一种不好的做法。始终使用精确的版本以获得可重复的构建。 不推荐。 Android Studio 现在甚至会针对通配符版本发出警告。【参考方案19】:

花了大约 5 个小时后,这个解决方案对我有用..

如果您还没有,请先将此行添加到您的清单标记中:

xmlns:tools="http://schemas.android.com/tools"

例子:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.winanainc"
    android:versionCode="3"
    android:versionName="1.2"
    xmlns:tools="http://schemas.android.com/tools">

然后在您的应用程序中添加此元标记以覆盖您的构建工具版本,在这种情况下,例如我选择了版本 25.3.1

<application>
   ...
   ..
    <meta-data
        tools:replace="android:value"
        android:name="android.support.VERSION"
        android:value="25.3.1" />
</application>

【讨论】:

【参考方案20】:

我的问题解决了 添加以下最新依赖implementation 'com.google.firebase:firebase-auth:16.0.4'

【讨论】:

【参考方案21】:

只有一种方法...您必须手动完成... 去 build.gradle 检查将所有依赖项分配给相同的版本.. 它应该可以工作..

【讨论】:

【参考方案22】:

只需添加 //noinspection GradleCompatible:

implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
testImplementation 'junit:junit:4.12'
//noinspection GradleCompatible
implementation 'com.android.support:appcompat-v7:28.0.0'

将以下实现语句添加到依赖项部分。 (如果显示 App Compat 库不匹配错误,那么我们必须重新实现所有不匹配的支持库。我们可以通过将光标放在错误上找到不匹配的库。按快捷键 ctrl + F1 显示完整的详细信息安卓工作室。)

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

【讨论】:

【参考方案23】:

这个错误是因为 glide 库。试试 Picasso 或其他图片库

【讨论】:

不,兄弟,上面的答案我可以确认,因为我有完全相同的错误【参考方案24】:

我的解决方案我只是添加

//noinspection GradleCompatible

我构建以测试我的应用程序,一切正常。

【讨论】:

不,不要这样做。这将使 ide 错误消失,但您的应用程序可能会崩溃。他们进行这项检查是有原因的!

以上是关于所有 com.android.support 库必须使用完全相同的版本规范的主要内容,如果未能解决你的问题,请参考以下文章

添加 google plya-services 时,所有 com.android.support 库必须使用完全相同的版本规范

text bug-fix:所有com.android.support库必须使用完全相同的版本规范

Cordova 构建错误:“无法解析配置 ':_debugApkCopy' > 的所有依赖项 > 找不到 com.android.support:appcompat-v7:27.0.2。”

解决com.android.support版本冲突问题

无法从com.android.support库导入。 +不同的版本?

Failed to resolve com.android.support:support-annotations 26.0.1