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

当我今天从2.2.3更新我的android工作室到2.3我突然得到这个错误在我的build.gradle在依赖第一个编译行

(不pipe哪个依赖关系会在第一位,但总会给我这个错误):

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

我已经通过我的整个项目,我找不到任何使用版本24.0.0(我用ctrl + shift + F来查看整个项目)

这是我的build.gradle:

android { compileSdkVersion 25 buildToolsVersion '25.0.2' useLibrary 'org.apache.http.legacy' defaultConfig { minSdkVersion 16 targetSdkVersion 25 versionName "1.0" versionCode 1 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } debug { minifyEnabled true shrinkResources true } } dexOptions { javaMaxHeapSize "4g" } } dependencies { compile fileTree(include: ['*.jar'], dir: 'libs') compile 'com.android.support:appcompat-v7:25.2.0' compile 'com.google.android.gms:play-services:+' compile 'com.squareup:otto:1.3.8' compile 'com.mcxiaoke.volley:library-aar:1.0.0' compile 'com.android.support:multidex:1.0.1' } 

我已经通过我的整个项目,我找不到任何使用版本24.0.0

它来自你的其他依赖之一的传递依赖。

首先,修复build.gradle文件中的其他问题,因为它们也可以清除这个问题:

  • 不要使用+作为库版本。 使用特定的版本。

  • 不要使用play-services 。 使用特定的依赖关系为所需的Play Services SDK的特定部分。 play-services带来了所有的Play服务,使您的应用程序比需要的大得多,并且减慢了您的构build时间。

  • com.mcxiaoke.volleyreplace为官方的Volley artifact( com.android.volley:volley:1.0.0

如果这些都不能解决问题,则可以运行Gradle依赖关系报告来查看完整的依赖关系树。 从那里,你会看到你的哪个库要求不同版本的Android支持库。 无论它要求什么,你都可以直接使用25.2.0版本,或者使用Gradle的其他冲突解决方法来安排获取相同的版本。

为了详细说明接受的答案 ,对支持库的情况进行适当的依赖关系parsing如下:

不要只是添加传递依赖作为直接依赖来强制他们的版本; 这在语义上是错误的(如果你删除了传递依赖关系中的依赖关系,那么你现在还没有实际使用的依赖关系)。

请执行下列操作:

在你的根build.gradle ,你应该已经有了

 ext { supportlib_version = '25.2.0' ... } 

并在你的例如app/build.gradle使用这个属性

 dependencies { compile "com.android.support:appcompat-v7:$supportlib_version" compile "com.android.support:recyclerview-v7:$supportlib_version" ... } 

现在,在你的根build.gradle ,有

 subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex') ) { details.useVersion "$supportlib_version" } } } } 

也就是说,在每个模块和每个configuration中,当解决依赖关系时,如果它是一个支持库(但不是multidex的(可能会有更多的exception)),强制版本到您的标准化支持lib版本。

对于所有情况,不仅仅是这些版本或库:

注意那些关于错误的小信息窗口,它说你必须改变和添加的例子。

你不能看到用法,因为它的使用可能是另一个库的内部(如谷歌播放服务或平方米)。

只要编译一下小信息窗口说的所有例子 ,在你的情况下:

示例包括com.android.support:animated-vector-drawable:25.2.0和com.android.support:mediarouter-v7:24.0.0

你的

com.android.support:animated-vector-drawable:25.2.0

是版本25.2.0,和你的

com.android.support:mediarouter-v7:24.0.0

是版本24.0.0,所以你必须添加相同版本的mediarouter:

 com.android.support:mediarouter-v7:25.2.0 

对于小信息窗口所说的每一个例子来说, 在你的情况下, 所有的库没有版本25.2.0。

修复指定的库后,必须同步gradle才能看到必须更改的下一个库和程序包。

同样的问题发生在我身上。 我刚刚做了这两行

 compile 'com.android.support:animated-vector-drawable:25.2.0' compile 'com.android.support:customtabs:25.2.0' 

问题解决了。 我也删除了我以前版本的gradle文件夹。

你可以加

 compile 'com.android.support:customtabs:25.2.0' 

并通过右键单击gradle依赖关系,您可以添加冲突的依赖关系。 对我来说是这样

 compile 'com.android.support:cardview-v7:25.2.0' compile 'com.android.support:animated-vector-drawable:25.2.0' 

这里指出,添加这一行将删除错误。

 compile 'com.android.support:customtabs:25.2.0' 

看起来像Android Studio 2.3需要显式声明外部依赖关系。 依赖关系是customtabs和palette-v7。

您需要在build.gradle中显式添加以下两个外部依赖项/包

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

我认为这将解决这个问题。

尝试使用您正在使用的特定软件包replacecompile 'com.google.android.gms:play-services:+' (请参阅此答案: https : //stackoverflow.com/a/42374426/3495069 )

使您的案例中的所有相同版本或最新版本的依赖关系replace为1 1.0.0,1.0.1版本与25.2.0。 如果你刚接触android,你可以得到一些关于badassandroiddevlopers.blogspot.in的元素的基本知识

我有同样的问题在Android studio 2.3

之前: 在这里输入图像说明

然后,我尝试:

 ./gradlew -q dependencies app --configuration compile +--- project :lib +--- com.jonathanfinerty.once:once:1.2.2 | \--- com.android.support:support-annotations:25.3.1 +--- com.zhy:base-rvadapter:3.0.3 | \--- com.android.support:recyclerview-v7:23.4.0 | +--- com.android.support:support-annotations:23.4.0 -> 25.3.1 | \--- com.android.support:support-v4:23.4.0 -> 25.3.1 | +--- com.android.support:support-compat:25.3.1 | | \--- com.android.support:support-annotations:25.3.1 | +--- com.android.support:support-media-compat:25.3.1 | | +--- com.android.support:support-annotations:25.3.1 | | \--- com.android.support:support-compat:25.3.1 (*) | +--- com.android.support:support-core-utils:25.3.1 | | +--- com.android.support:support-annotations:25.3.1 | | \--- com.android.support:support-compat:25.3.1 (*) | +--- com.android.support:support-core-ui:25.3.1 | | +--- com.android.support:support-annotations:25.3.1 | | \--- com.android.support:support-compat:25.3.1 (*) | \--- com.android.support:support-fragment:25.3.1 | +--- com.android.support:support-compat:25.3.1 (*) | +--- com.android.support:support-media-compat:25.3.1 (*) | +--- com.android.support:support-core-ui:25.3.1 (*) | \--- com.android.support:support-core-utils:25.3.1 (*) +--- com.squareup.okhttp3:okhttp:3.6.0 | \--- com.squareup.okio:okio:1.11.0 +--- com.squareup.okhttp3:logging-interceptor:3.6.0 | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) +--- com.google.code.gson:gson:2.8.0 +--- com.jakewharton:butterknife:8.4.0 | +--- com.jakewharton:butterknife-annotations:8.4.0 | | \--- com.android.support:support-annotations:24.1.0 -> 25.3.1 | \--- com.android.support:support-annotations:24.1.0 -> 25.3.1 +--- com.github.bumptech.glide:glide:3.7.0 +--- org.litepal.android:core:1.5.1 +--- com.orhanobut:logger:1.15 +--- com.android.support:appcompat-v7:25.3.1 | +--- com.android.support:support-annotations:25.3.1 | +--- com.android.support:support-v4:25.3.1 (*) | +--- com.android.support:support-vector-drawable:25.3.1 | | +--- com.android.support:support-annotations:25.3.1 | | \--- com.android.support:support-compat:25.3.1 (*) | \--- com.android.support:animated-vector-drawable:25.3.1 | \--- com.android.support:support-vector-drawable:25.3.1 (*) 

base-rvadapter库不包括25.3.1:

 com.zhy:base-rvadapter:3.0.3 | \--- com.android.support:recyclerview-v7:23.4.0 

最后,我添加一行:

 compile 'com.android.support:design:25.3.1' 

devise包括appcompat-v7和base-rvadapter链接25.3.1。

 +--- project :lib +--- com.jonathanfinerty.once:once:1.2.2 | \--- com.android.support:support-annotations:25.3.1 +--- com.zhy:base-rvadapter:3.0.3 | \--- com.android.support:recyclerview-v7:23.4.0 -> 25.3.1 | +--- com.android.support:support-annotations:25.3.1 | +--- com.android.support:support-compat:25.3.1 | | \--- com.android.support:support-annotations:25.3.1 | \--- com.android.support:support-core-ui:25.3.1 | +--- com.android.support:support-annotations:25.3.1 | \--- com.android.support:support-compat:25.3.1 (*) +--- com.squareup.okhttp3:okhttp:3.6.0 | \--- com.squareup.okio:okio:1.11.0 +--- com.squareup.okhttp3:logging-interceptor:3.6.0 | \--- com.squareup.okhttp3:okhttp:3.6.0 (*) +--- com.google.code.gson:gson:2.8.0 +--- com.jakewharton:butterknife:8.4.0 | +--- com.jakewharton:butterknife-annotations:8.4.0 | | \--- com.android.support:support-annotations:24.1.0 -> 25.3.1 | \--- com.android.support:support-annotations:24.1.0 -> 25.3.1 +--- com.github.bumptech.glide:glide:3.7.0 +--- org.litepal.android:core:1.5.1 +--- com.orhanobut:logger:1.15 +--- com.android.support:appcompat-v7:25.3.1 | +--- com.android.support:support-annotations:25.3.1 | +--- com.android.support:support-v4:25.3.1 | | +--- com.android.support:support-compat:25.3.1 (*) | | +--- com.android.support:support-media-compat:25.3.1 | | | +--- com.android.support:support-annotations:25.3.1 | | | \--- com.android.support:support-compat:25.3.1 (*) | | +--- com.android.support:support-core-utils:25.3.1 | | | +--- com.android.support:support-annotations:25.3.1 | | | \--- com.android.support:support-compat:25.3.1 (*) | | +--- com.android.support:support-core-ui:25.3.1 (*) | | \--- com.android.support:support-fragment:25.3.1 | | +--- com.android.support:support-compat:25.3.1 (*) | | +--- com.android.support:support-media-compat:25.3.1 (*) | | +--- com.android.support:support-core-ui:25.3.1 (*) | | \--- com.android.support:support-core-utils:25.3.1 (*) | +--- com.android.support:support-vector-drawable:25.3.1 | | +--- com.android.support:support-annotations:25.3.1 | | \--- com.android.support:support-compat:25.3.1 (*) | \--- com.android.support:animated-vector-drawable:25.3.1 | \--- com.android.support:support-vector-drawable:25.3.1 (*) \--- com.android.support:design:25.3.1 +--- com.android.support:support-v4:25.3.1 (*) +--- com.android.support:appcompat-v7:25.3.1 (*) +--- com.android.support:recyclerview-v7:25.3.1 (*) \--- com.android.support:transition:25.3.1 +--- com.android.support:support-annotations:25.3.1 \--- com.android.support:support-v4:25.3.1 (*) 

后: 在这里输入图像说明

删除或更新以下依赖项

  compile 'com.google.android.gms:play-services:9.6.1' 

或者只添加像这样的select性服务

 compile 'com.google.android.gms:play-services-fitness:10.2.4' compile 'com.google.android.gms:play-services-wearable:10.2.4' 

添加到你的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' } } } } 

使用特定的版本,而不是+ 。 例如,“com.google.android.gms:play-services:10.2.0”

并使用您正在使用的特定SDK而不是添加整个Play-SDKs包。 例如:

 'com.google.android.gms:play-services-gcm:10.2.0' 'com.google.android.gms:play-services-maps:10.2.0' 'com.google.android.gms:play-services-location:10.2.0' 

这帮助我解决了这个问题。