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

时间:2017-12-14 13:43:30

标签: android build.gradle

将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工具但问题仍然存在。 bellow是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'
}

6 个答案:

答案 0 :(得分:6)

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

  

com_android_support_support_media_compat_25_2_0   com_android_support_support_v4_25_2_0

然后只需在builde.gradle中添加此行

  

实施' com.android.support:support-v4:27.0.2'

错误现在消失了。

答案 1 :(得分:2)

我遇到了完全相同的问题。您没有在build.graddle中使用,但是build.graddle中包含的某些库正在使用。因此,您需要在build.graddle

中覆盖它们,它们在警告中指向

答案 2 :(得分:0)

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

  1. 清洁构建
  2. 在第2步之后,单击“重建项目”。
  3. <强>更新 如果没有,请尝试将implementation com.android.support:support-media-compat:27.0.2明确添加到构建

答案 3 :(得分:0)

您正在处理的内容似乎是传递依赖。换句话说就像你使用gradle一样,你不必重新发明轮子,你正在使用的依赖的制造者也使用依赖。似乎问题在于这个依赖'com.github.bloder:magic:1.1',因为它依赖于'com.android.support:appcompat-v7:23.1.1'。我通过访问the repository pom description获取博客魔术来发现这一点。在android studio中我也可以点击右侧的gradle选项卡,找到一个依赖任务并以这种方式发现冲突。既然我们知道问题excluding a transitive dependency可能有助于检查所有依赖关系是否是最新的可能有助于或不使用博客魔法可能会有所帮助。我知道,这个问题很难。希望这会有所帮助。

答案 4 :(得分:-1)

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

答案 5 :(得分:-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.0 com.android.support:customtabs:23.4.0 正在使用正在创建问题的版本。现在只需从依赖中复制这些行 列表并在我们的gradle文件中明确使用,但使用更新的版本链接

实施“com.android.support:cardview-v7:26.1.0”     实施“com.android.support:customtabs:26.1.0”

请参阅此处以查看原始答案 https://stackoverflow.com/a/49169228/4156595