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

5

在将targetSdkVersion更新为27之后,我遇到了这个错误消息。

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

我知道我应该更新com.android.support:support-media-compat,但我不知道怎么更新,因为我在build.gradle中没有使用它,我尝试更新SDK工具,但问题仍然存在。下面是build.gradle:

    apply plugin: 'com.android.application'

android {
    compileSdkVersion 27
    defaultConfig {
        applicationId "com.example.ex"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(include: ['*.jar'], dir: 'libs')
    implementation 'com.android.support:appcompat-v7:27.0.2'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    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'
    implementation 'com.google.android.gms:play-services-ads:11.6.2'
    compile 'com.android.volley:volley:1.0.0'
    compile 'com.squareup.picasso:picasso:2.5.2'
    compile 'com.github.bloder:magic:1.1'
    implementation 'com.android.support:recyclerview-v7:27.0.2'
    implementation 'com.android.support:cardview-v7:27.0.2'
}

请输出以下代码的结果:gradlew app:dependencies --configuration releaseCompileClasspath - DeKaNszn
'gradlew' 不被识别为内部或外部命令。 严肃小事情很重要... - m12lrpv
6个回答

6

我已经手动检查了项目中的库 -> .myidea-> libraries,然后发现有两个库使用了旧版本:

com_android_support_support_media_compat_25_2_0 com_android_support_support_v4_25_2_0

只需在build.gradle文件中添加以下行:

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

错误现在已经消失。


我很高兴看到你成功了。开源软件的一个问题是并非每个人都跟得上最新版本。 - Pomagranite

2

我遇到了完全相同的问题。你在build.gradle中没有使用,但是你包含在build.gradle中的某个库正在使用。因此,你需要在build.gradle中覆盖警告中指出的这些库。


抱歉,你的意思是什么,覆盖它们? - Chawkii
你需要在你的gradle文件中添加类似于compile 'com.android.support:support-media-compat:27.0.2'的依赖。 - Ergin Ersoy
添加这个权限时是否出现了其他警告?或者它什么也没做? - Ergin Ersoy

0

我以前也遇到过这个错误。尝试在Android Studio工具栏上点击“构建”。

  1. 清理构建
  2. 完成第2步后,单击“重新构建项目”。

更新 如果还不行,请尝试将implementation com.android.support:support-media-compat:27.0.2明确添加到构建中。


你尝试过显式添加 com.android.support:support-media-compat:27.0.2 吗? - martinomburajr
我刚刚做了,没有任何改变。 - Chawkii
嘿,看看这个帖子,它似乎回答了你的问题 https://dev59.com/K1gQ5IYBdhLWcg3wr1_V?rq=1 - martinomburajr

0
你所面对的问题似乎是传递依赖。换句话说,就像你使用Gradle来避免重新发明轮子一样,你正在使用的依赖关系的制造者也在使用依赖关系。看起来问题出在这个依赖项“com.github.bloder:magic:1.1”上,因为它依赖于“com.android.support:appcompat-v7:23.1.1”。我通过访问blogger magic的存储库pom说明了解到了这一点。在Android Studio中,我也可以点击右侧的Gradle选项卡,并找到其中一个依赖项任务并以此找到冲突。现在我们知道了问题,排除传递依赖可能会有所帮助,检查所有依赖项是否最新可能会有所帮助,或者根本不使用blogger magic可能会有所帮助。我知道这个问题很棘手,但希望这能帮到你。

这似乎很困难,顺便说一下,这实际上解决了问题://noinspection GradleCompatible,但我不明白它是做什么的。 - Chawkii
我理解你的痛苦。传递依赖关系很难处理。//noinspection似乎告诉编译器我知道我有版本冲突,但是继续编译。所以它可能在您的设备上工作。它可能在所有设备上都能工作。我建议您将来寻找过时依赖项的更新并在那时更新build.gradle。我对bloder魔法的理解正确吗?Android Studio>文件>项目结构>依赖项将显示gradle为您提取的所有导入的jar文件和传递依赖项。 - Pomagranite
没有问题,伙计,我找到了解决方案,看看我的答案。 - Chawkii
你的答案是正确的,顺便说一下,有一些传递依赖关系,对于我的情况来说,有两个库:com_android_support_support_media_compat_25_2_0和com_android_support_support_v4_25_2_0。所以我尝试实现'com.android.support:support-v4:27.0.2',它起作用了,现在文件夹libraries包含了两个新库,它们是com_android_support_support_media_compat_27_0_2和com_android_support_support_v4_27_0_2,旧版本仍然在文件夹中。 - Chawkii
我很高兴你成功了。将来如果你在Google Analytics上看到崩溃,请检查所有依赖项的新版本。顺便说一下,依赖通常是向后兼容的。 - Pomagranite

-1

虽然您已经看到了以上所有答案和评论,但这个回答是为了澄清一些新开发人员可能不容易理解的问题。

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

以上命令行将毫无疑问地拯救您的生命,但如何从上述行的结果中获取确切的点呢。

当您从上述命令中获取所有依赖关系图表或列表时,则必须查找您在代码中获取的冲突版本号,请参见下面的图像。

enter image description here

在上面的图片中,您可以看到23.4.0正在创建问题,但我们无法在gradle文件中找到它。因此,现在这个版本号(23.4.0)将拯救我们。当我们有了这个数字后,我们将在上述命令结果的结果中找到这个数字,并直接在我们的gradle文件中导入该依赖项。请参见下面的图片以获得清晰的视图。

你可以清楚地看到,com.android.support:cardview-v7:23.4.0com.android.support:customtabs:23.4.0正在使用导致问题的版本。现在只需从依赖列表中复制这些行,并在我们的gradle文件中显式使用更新的版本链接即可。

implementation "com.android.support:cardview-v7:26.1.0" implementation "com.android.support:customtabs:26.1.0"

请参考此处以查看原始答案 https://dev59.com/K1gQ5IYBdhLWcg3wr1_V#49169228


从Gradle版本3.0开始,compile已被implementation所取代。如果有人使用最新版本,请使用以下命令:./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath - Nizamudeen Sherif

-1
当我更新gradle时,遇到了类似的问题。我隐式地声明了错误的support库。我不得不为另外3个support库执行这个隐式操作。通过隐式声明支持库无法解决此错误。如果您想立即解决问题,请将所有com.android.support.*库中的27.0.2替换为25.2.0。

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