所有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.volley
replace为官方的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'
这帮助我解决了这个问题。