问题
Why does Gradle give this error about dependencies when I have used the latest and same version? This has only just started today and I'm lost as to how to fix this:
All com.android.support libraries must use the exact same version specification (mixing versions can lead to runtime crashes). Found versions 28.0.0, 26.1.0. Examples include com.android.support:animated-vector-drawable:28.0.0 and com.android.support:support-media-compat:26.1.0
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support:animated-vector-drawable-v7:28.0.0'
implementation 'com.android.support:support-media-compat-v7:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
}
ʍѳђઽ૯ท's suggestion
FAILURE: Build failed with an exception.
* What went wrong:
A problem occurred configuring project ':app'.
> Could not generate a proxy class for class com.android.build.gradle.tasks.BuildArtifactReportTask.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
回答1:
Maybe this is because support library version 28 hasn't any library that call it
implementation 'com.android.support:animated-vector-drawable-v7:28.0.0'
or
implementation 'com.android.support:support-media-compat-v7:28.0.0'
Or Maybe this is because you are using support library version 28, but targetSdkVersion is lower than version 28.
(in Android Studio v:3.1.4)If you would like to add another library to your project, use the following URL
(from toolbar) file \ Project Structure ... \ (from left window : under modules) app \ Dependencies \ (use green plus)
This work for me : Add this lines in build.gradle (Project Gradle)
apply plugin: 'com.android.application'
android {
compileSdkVersion 28
defaultConfig {
applicationId "your project"
minSdkVersion 14
targetSdkVersion 28
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
buildToolsVersion '28.0.3'
}
dependencies {
implementation fileTree(include: ['*.jar'], dir: 'libs')
implementation 'junit:junit:4.12'
implementation 'com.android.support:support-v13:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'
implementation 'com.android.support:appcompat-v7:28.0.0'
implementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
implementation 'com.google.android.gms:play-services-maps:15.0.1'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:mediarouter-v7:28.0.0'
implementation 'com.android.support.constraint:constraint-layout:2.0.0-alpha2'
implementation 'com.android.support:recyclerview-v7:28.0.0'
implementation 'com.android.support:support-annotations:28.0.0'
implementation 'com.android.support:design:28.0.0'
}
回答2:
Doing ./gradlew app:dependencies
on the terminal will show the different dependenices with their versions. To fix this easily, just add the dependency which has old and not has the same version (as the other related) dependencies in your Build.gradle
.
If you hold on the error, it will show which dependency is old and then you can see the differences between the versions.
As an example, if you add this as the newest version like the other related dependencies, it will be fixed:
implementation 'com.android.support:support-media-compat:28.0.0' // just like the other related dependencies versions.
In your case, one of them is using 26.1.0
version:
Found versions 28.0.0, 26.1.0
回答3:
one could also exclude version 26.1.0
from a dependency, but here's how to enforce 28.0.0
:
configurations.all() {
resolutionStrategy.force "com.android.support:support-media-compat:28.0.0"
}
this might be coming from:
implementation "com.google.android.gms:play-services-base:15.0.1"
implementation "com.google.android.gms:play-services-maps:15.0.1"
run ./gradlew app:dependencies
from the project's root directory to see where it comes from.
来源:https://stackoverflow.com/questions/52571014/dependencies-are-up-to-date-but-gradle-thinks-not