问题描述
After updating Android Studio from Canary 3 to Canary 4, the following error is thrown at the build time.
Android dependency 'com.android.support:support-support-v4' has different version for the compile (25.2.0) and runtime (26.0.0-beta2) classpath. You should manually set the same version via DependencyResolution.
I ran a complete search throughout the project and the version 25.1.0 is no where used.
App-build.gradle
android { compileSdkVersion 26 buildToolsVersion '26.0.0' defaultConfig { applicationId "com.xxx.xxxx" minSdkVersion 14 targetSdkVersion versionCode 1 versionName "1.0" multiDexEnabled true } buildTypes { debug { debuggable true } release { debuggable false minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } lintOptions { abortOnError false } }} dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) testImplementation 'junit:junit:4.12' implementation project(':core') implementation com.google.android.gms:play-services-gcm:9.0.0' implementation('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') { transitive = true } implementation 'com.android.support:multidex:1.0.1' implementation 'com.flurry.android:analytics:7.0.0' annotationProcessor 'com.jakewharton:butterknife-compiler:8.6.0' implementation 'com.jakewharton:butterknife:8.6.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' }
Library-build.gradle:
apply plugin: 'com.android.library' android { compileSdkVersion 26 buildToolsVersion '26.0.0' defaultConfig { minSdkVersion 14 targetSdkVersion versionCode 1 versionName "1.0" } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation files('libs/model.jar') testImplementation 'junit:junit:4.12' implementation 'com.android.support:percent:26.0.0-beta2' implementation 'com.android.support:appcompat-v7:26.0.0-beta2' implementation 'com.android.support:support-core-utils:26.0.0-beta2' implementation 'com.squareup.retrofit2:retrofit:2.0.2' implementation 'com.squareup.picasso:picasso:2.4.0' implementation 'com.squareup.retrofit2:converter-gson:2.0.2' implementation 'com.squareup.okhttp3:logging-interceptor:3.2.0' implementation 'uk.co.chrisjenx:calligraphy:2.2.0' implementation 'com.google.code.gson:gson:2.2.4' implementation 'com.android.support:design:26.0.0-beta2' implementation 'com.github.PhilJay:MPAndroidChart:v3.0.1' }
Note: Project was building fine in Canary 3
解决方案
Use this code in your buildscript (build.gradle root):
subprojects { project.configurations.all { resolutionStrategy.eachDependency { details -> if (details.requested.group == 'com.android.support' && !details.requested.name.contains('multidex') ) { details.useVersion "version which should be used - in your case 26.0.0-beta2" } } } }