All com.android.support libraries must use the exact same version specification

匿名 (未验证) 提交于 2019-12-03 01:52:01

问题:

After updating to android studio 2.3 I got this error message. I know it's just a hint as the app run normally but it's really strange.

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.1.1, 24.0.0. Examples include com.android.support:animated-vector-drawable:25.1.1 and com.android.support:mediarouter-v7:24.0.0

my gradle:

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' }

回答1:

You can solve this with one of the following solutions:

Update:

As of Android studio 3.0, it becomes much easier as it now shows a more helpful hint, so we only need to follow this hint.
for example:

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 27.0.2, 26.1.0. Examples include com.android.support:animated-vector-drawable:27.0.2 and com.android.support:customtabs:26.1.0

there are some combinations of libraries, or tools and libraries, that are incompatible, or can lead to bugs. One such incompatibility is compiling with a version of the Android support libraries that is not the latest version (or in particular, a version lower than your targetSdkVersion.)

Solution:
Add explicitly the library with the old version but with a new version number.
in my case com.android.support:customtabs:26.1.0 so I need to add:

implementation "com.android.support:cardview-v7:27.0.2"

Note: don't forget to press sync now so gradle can rebuild the dependency graph and see if there are any more conflicts.

Explanation:
you may be confused by the error message as don't use customtabs so how I have a conflict!!
well.. you didn't use it directly but one of your libraries uses an old version of customtabs internally, so you need to ask for it directly.

if you curious to know which of your libraries is responsible for the old version and maybe ask the author to update his lib, Run a Gradle dependency report, see the old answer to know how.

Old answer:

inspired by CommonsWare answer:

Run a Gradle dependency report to see what your full tree of dependencies is.

From there, you will see which one of your libraries are asking for a different version of the Android Support libraries. For whatever it is asking for, you can ask for it directly with the 25.2.0 version or use Gradle's other conflict resolution approaches to get the same versions.

Run:

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

Example:

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

For me, the error disappeared after removing com.google.android.gms:play-services:10.2.0

And only include com.google.android.gms:play-services-location:10.2.0 and com.google.android.gms:play-services-maps:10.2.0 as they are the only two play services that I use.

I think the gms:play-services depend on some old components of the support library, so we need to add them explicitly ourselves.


Update:

As of gradle plugin version: 3.0 compile has been replaced by implementation or api see this answer for the difference.

hence use instead:

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

and search for the conflicted version.

if someone knows a better way in the new gradle plugin please let me know.



回答2:

  1. Go to project/.idea/libraries folder on your file system and see which libraries are different.
  2. You will have to manually include these libraries with the same version in your build.gradle file.
  3. Then, sync your project.

E.g.:

compile 'com.android.support:appcompat-v7:25.2.0'  // Wrong library version found on 1st point compile 'com.android.support:customtabs:25.2.0'


回答3:

For all cases, not just for these versions or libraries:

Pay attention to the little information window that say something about the error, it says the examples that you have to change and add.

In this case:

Found versions 25.1.1, 24.0.0. Examples include com.android.support:animated-vector-drawable:25.1.1 and com.android.support:mediarouter-v7:24.0.0

Your

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

is version 25.1.1, and your

com.android.support:mediarouter-v7:24.0.0

is version 24.0.0, so you have to add the mediarouter with the same version:

com.android.support:mediarouter-v7:25.1.1

And do that for every example that the little information window says, in this case all the libraries that doesn't have the version 25.1.1.

You have to sync the gradle after you fix the indicated library to see the next library and package that you have to change.

IMPORTANT:

If you are not explicitly using one or more specified libraries and it is giving you the error, it means that is being used internally by another library, compile it explicitly anyway.

You also can use another method to see the difference of the versions of all the libraries that you are actually compiling (like run a gradle dependency report or go to your libraries files), the real objetive is compile all the libraries that you are using with the same version.



回答4:

I had the exact same problem after updating to Android Studio 2.3

Adding this line to dependencies solved my problem:

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


回答5:

I just add this :

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

Updated for new SDK versions

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


回答6:

Use variables: Doing something like the following will make it easier for you to ensure that you use the same version with all libraries

dependencies {      ext {         support_library_version = '25.2.0'         google_play_services_version = '10.2.0'     }      //#####################################################################     //          Support Library     //#####################################################################     compile "com.android.support:appcompat-v7:${support_library_version}"     compile "com.android.support:palette-v7:${support_library_version}"     compile "com.android.support:design:${support_library_version}"      //#####################################################################     //          Google Play Services     //#####################################################################     compile "com.google.android.gms:play-services-auth:${google_play_services_version}"     compile "com.google.android.gms:play-services-ads:${google_play_services_version}"     compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"      //#####################################################################     //          Firebase     //#####################################################################     compile "com.google.firebase:firebase-core:${google_play_services_version}"     compile "com.google.firebase:firebase-auth:${google_play_services_version}"     compile "com.google.firebase:firebase-messaging:${google_play_services_version}"


回答7:

A) Run gradle dependencies or ./gradlew dependencies

B) Look at your tree and figure out which of your dependencies is specifying a different support library version for a dependency you don't control.

I didn't realize that this warning also displays if the dependency is completely unused directly by your own code. In my case, Facebook specifies some support libs I wasn't using, you can see below most of those dependencies were overridden by my own specification of 25.2.0, denoted by the -> X.X.X (*) symbols. The card view and custom tabs libs weren't overridden by anyone, so I need to ask for 25.2.0 for those ones myself even though I don't use them.

+--- com.facebook.android:facebook-android-sdk:4.17.0 |    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*) |    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*) |    +--- com.android.support:cardview-v7:25.0.0 |    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0 |    +--- com.android.support:customtabs:25.0.0 |    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*) |    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0 |    \--- com.parse.bolts:bolts-android:1.4.0 (*)


回答8:

Add this to the very end of your build.gradle (Module:app):

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'         }      }     } }

Make sure that you replace '25.3.1' with the version of the android support library that you want to use for all the dependencies , it should not be lower than your complile sdk version

than re sync gradle



回答9:

Use support-v13 instead of support-v4

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


回答10:

My problem is similar to yours. Here exist an error!

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

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.3.0, 24.0.0. Examples include 'com.android.support:animated-vector-drawable:25.3.0' and 'com.android.support:mediarouter-v7:24.0.0'

Seeing this Examples include 'com.android.support:animated-vector-drawable:25.3.0' and 'com.android.support:mediarouter-v7:24.0.0'

the just add these codes in dependencies, make sure that versions are same.

compile 'com.android.support:animated-vector-drawable:25.3.0' compile 'com.android.support:mediarouter-v7:25.3.0'


回答11:

I got the same error after adding compile 'com.google.android.gms:play-services:10.2.4' with compile 'com.android.support:appcompat-v7:25.3.1'.

Adding animated-vector-drawable and mediarouter libs fixed the issue.

compile 'com.google.android.gms:play-services:10.2.4' compile 'com.android.support:appcompat-v7:25.3.1' compile 'com.android.support:animated-vector-drawable:25.3.1' compile 'com.android.support:mediarouter-v7:25.3.1'


回答12:

You have defined any other dependency to compile with version 24.0.0 instead of 25.1.1. Please set all dependencies version the same as 25.1.1.



回答13:

I used these two to solve my problem after upgrading to android studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0' compile 'com.android.support:mediarouter-v7:25.0.0'


回答14:

I had the same problem before and I got the solution for it.

I just added the libraries that had the another version but with the same version of my support:appcompat.

For your error for example :

All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 25.1.1, 24.0.0. Examples include com.android.support:animated-vector-drawable:25.1.1 and com.android.support:mediarouter-v7:24.0.0

*The solution is to compile the versions of these libraries like that :

compile 'com.android.support:mediarouter-v7:25.1.1'

-if another library had the same issue and had another version just compile it with your support:appcompat version

This resolved my problem and I hope it resolves yours.

Best wishes :)



回答15:

If the same error is on appcompat

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

then adding design solved it.

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

For me, adding

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

was including appcompat-v7:23.1.1 in

.idea/libraries

without vlc, appcompat alone is enough.



回答16:

Open the external library of your project you will see that some library still using previous version although you didn't mention those library so my suggestion is just use the particular library version for those it will solve your problem.



回答17:

Make sure all Facebook SDK dependencies use the same support library version of your project:

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" }


回答18:

I just update my Android Support Repository to (revision: 44.0.0); then Android SDK tools and Emulator to latest version 25.3.1 from sdk manager> SDK tools And it solved my problem.



回答19:

I got this problem after updating to Android Studio 2.3

Adding these lines in dependencies solved my problem

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


回答20:

I had to add the following lines in gradle to remove the error

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


回答21:

remplace this

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

by this

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

rebuild and good coding



回答22:

Highlight the error and press "ALT+ENTER", you'll see an option to:

Add Library dependency > Edit Intention settings

This will bring you to a menu where you'll see the specific problem support dependency that differs with support-compat. Create its dependency in gradle (com 'XXX') and set it's version to match that of support-compat. Sync gradle and you're done.



回答23:

implementation 'com.android.support:appcompat-v7:26.1.0'

after this line You have to add new Line in your gradle

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


回答24:

Another way to solve conflicts is just to force the correct version for all dependencies like this:

dependencies {             configurations.all {                 resolutionStrategy.eachDependency { DependencyResolveDetails details ->                     if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {                         details.useVersion "27.0.2"                     }                 }     ...     }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html



回答25:

For me, the error was a result of a third-party library that I imported that used older Google Support Library modules. I simply updated them to the latest version (checking on Github for example), and the error was gone. I suggest checking all the non-Google libraries that you included in your build.gradle are up to date.



回答26:

Try To make the build tools exactly the same version of support library

example

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' }


回答27:

Had the same issue after updating to Android Studio 2.3, the fix was to add the following package in the build.gradle:

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

Note: Change the version to match other support library packages used in your project



回答28:

I ran ./gradlew tasks --all and checked for dependencies that were a different version from the targeted version (25.3.1). You'll get something like this:

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1 app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1 app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1 app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1 app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1 app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1 app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1 app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1 app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1 app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1 app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1 app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1 app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1 app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1 app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1 app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1 app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0 app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12 app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4 app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7 app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16 app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1 app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6 app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6 app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6 app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6 app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4 app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6 app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6 app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6 app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6 app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7 app:prepareDebugAndroidTestDependencies app:prepareDebugDependencies app:prepareDebugUnitTestDependencies app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5 app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16 app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1 app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

In this case, I was targeting 25.3.1, and had some dependencies targeting different versions when I ran this command. The trick is to identify the dependencies in this list that are targeting previous versions, and overriding that by importing the most recent version of the dependency in Gradle.



回答29:

Another thing that could cause this issue, is if you got declarations like this:

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

That + means taking the latest version which might be a later version than the 25.3.1. Replace the + with the specific version like 25.3.1 like this:

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'

and it will solve the issue



回答30:

I managed to compile (not very clean) by adding



易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!