Po zaktualizowaniu Android Studio z wersji Canary 3 do Canary 4 podczas kompilacji generowany jest następujący błąd.
Zależność systemu Android „com.android.support:support-support-v4” ma inną wersję ścieżki klas kompilacji (25.2.0) i środowiska uruchomieniowego (26.0.0-beta2). Należy ręcznie ustawić tę samą wersję za pośrednictwem DependencyResolution.
Przeprowadziłem pełne wyszukiwanie w całym projekcie i wersja 25.1.0
nie jest używana.
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'
}
Biblioteka-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'
}
Uwaga: projekt był w porządku w Canary 3
android
android-gradle-plugin
build.gradle
DroidLearner
źródło
źródło
Odpowiedzi:
Użyj tego kodu w swoim buildscript (build.gradle root):
źródło
!details.requested.name.contains('multidex')
naprawdę pomogło mi.Miałem ten sam błąd, co rozwiązało mój problem. W mojej bibliotece zamiast kompilacji lub implementacji używam "api". W końcu moje zależności:
Więcej informacji na temat „api” i „implementacji” można znaleźć pod tym linkiem https://stackoverflow.com/a/44493379/3479489
źródło
Powinieneś być w stanie zobaczyć dokładnie, która zależność pobiera nieparzystą wersję jako zależność przechodnią, uruchamiając odpowiednie
gradle -q dependencies
polecenie dla twojego projektu, jak opisano tutaj:https://docs.gradle.org/current/userguide/userguide_single.html#sec:listing_dependencies
Po wyśledzeniu, co go przyciąga, możesz dodać wykluczenie do tej konkretnej zależności w swoim pliku gradle za pomocą czegoś takiego:
źródło
Po długim czasie i uzyskaniu pomocy od znajomego, który wie o wiele więcej niż ja o Androidzie: app / build.gradle
i zależności
w build.gradle
w gradle.properties
źródło
resolutionStrategy.force
była jedyną rzeczą, która działała dla mnie. Dzięki!Odpowiedzią dla mnie było również dodanie tego do mojego
build.gradle
pliku:W moim przypadku konieczne było zamknięcie strategii rozwiązania w
configurations.all { .. }
bloku. Umieściłemconfigurations.all
blok bezpośrednio w moimapp/build.gradle
pliku (tj.configurations.all
Nie został zagnieżdżony w niczym innym)źródło
To zadziałało dla mnie:
Dodaj następującą linię w
app/build.gradle
sekcji zależności:lub
:27.1.1
w moim przypadkuźródło
Dodaj ten kod do pliku build.gradle na poziomie projektu.
Przykładowy kod :
źródło
Jeśli ktoś napotka ten problem z zależnościami w 2019, zaktualizuj Android Studio do wersji 3.4 lub nowszej
źródło
Rozwiązałem to, uaktualniając zależność od gradle w pliku android / build.gradle: classpath 'com.android.tools.build:gradle:3.3.1' (poprzednio korzystałem z wersji 3.2.
źródło
Rozwiązałem to, postępując zgodnie z powyższym wspomnieniem Eddiego,
źródło
Przełączenie moich sprzecznych zależności z implementacji na API załatwia sprawę. Oto dobry artykuł Mindorks wyjaśniający różnicę.
https://medium.com/mindorks/implementation-vs-api-in-gradle-3-0-494c817a6fa
Edytować:
Oto także moje postanowienia dotyczące zależności
źródło
Zobacz w swoich projektach biblioteki, aby wersja compileSdkVersion i targetSdkVersion była na tym samym poziomie, co Twoja aplikacja
również ustaw wszystkie zależności na tym samym poziomie
źródło
Komentuję,
//api 'com.google.android.gms:play-services-ads:15.0.1'
że zadziałało to po synchronizacjiźródło
Po prostu dodaj te linie do pliku build.gradle
resolutionStrategy.force "com.android.support:support-media-compat:26.0.0-beta2"
resolutionStrategy.force "com.android.support:support-v4:26.0.0-beta2"
źródło
W moim przypadku miałem dwie różne wersje poniższej implementacji w dwóch różnych modułach, więc zmieniłem obie implementacje na wersje tj .: 6.0.2 i zadziałało. Być może będziesz musiał napisać rozwiązanie zależności, zobacz zaakceptowaną odpowiedź.
moduł aplikacji
moduł wspólny
źródło
dodaj to do gradle (projektu) w środku
allprojects
źródło
Zastąp wersję zakodowaną na + przykład:
źródło