Konflikt z zależnością „com.android.support:support-annotations” w projekcie „: app”. Rozwiązane wersje aplikacji (26.1.0) i aplikacji testowej (27.1.1) różnią się.


106

Jestem nowy w tworzeniu aplikacji na Androida. Kiedy próbowałem utworzyć nowy projekt, Android Project ... pojawił się następujący komunikat ...

Błąd: nie powiodło się wykonanie zadania „: app: preDebugAndroidTestBuild”.

Konflikt z zależnością „com.android.support:support-annotations” w projekcie „: app”. Rozwiązane wersje aplikacji (26.1.0) i aplikacji testowej (27.1.1) różnią się. Szczegółowe informacje można znaleźć pod adresem https://d.android.com/r/tools/test-apk-dependency-conflicts.html . Informacje: Zadania Gradle [: app: generationDebugSources,: app: generatedDebugAndroidTestSources,: app: mockableAndroidJar]

To jest zrzut ekranu mojego projektu. Kliknij tutaj, aby zobaczyć zrzut ekranu błędu, który otrzymałem

Próbowałem też dodać ten kod do mojej zależności. androidTestCompile „com.android.support:support-annotations:23.3.0” nie wyszło. Próbowałem też 27.1.1 i 26.1.0 .. to też nie wyszło.


Sprawdź to pytanie: stackoverflow.com/q/43817004/9611523 . Mam nadzieję, że to pomoże.

1
Aktualizacja Android Studio (a także emulator i kilka innych rzeczy później) rozwiązała ten problem.

Problem jest spowodowany oceną adnotacji, która nie pojawia się domyślnie podczas tworzenia nowego projektu w Android Studio. Może ci pomóc: readyandroid.wordpress.com/…
Gotowy Android

Odpowiedzi:


182

Na podstawie twojego zrzutu ekranu znalazłem dwa działające rozwiązania:

Pierwsze rozwiązanie : dodaj tę linię do zależności modułu gradle

compile 'com.android.support:support-annotations:27.1.1'

i zsynchronizuj swój projekt

Uwaga: jeśli używasz Android Studio 3+, zmień compilenaimplementation

Drugie rozwiązanie : Skonfiguruj właściwości dotyczące całego projektu, które można znaleźć w dokumentacji https://developer.android.com/studio/build/gradle-tips.html#configure-project-wide-properties

w gradle projektu dodaj tę linię:

// This block encapsulates custom properties and makes them available to all
// modules in the project.
ext {
    // The following are only a few examples of the types of properties you can define.
    compileSdkVersion = 26
    // You can also use this to specify versions for dependencies. Having consistent
    // versions between modules can avoid behavior conflicts.
    supportLibVersion = "27.1.1"
}

Następnie, aby uzyskać dostęp do tej sekcji, zmień compileSdkVersionlinię na

compileSdkVersion rootProject.ext.compileSdkVersion

iw dependenciessekcji zmień zaimportowaną bibliotekę na taką:

compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

i zsynchronizuj swój projekt

Uwaga: jeśli używasz Android Studio 3+, zmień compilenaimplementation

Aby poznać różnicę między compilei implementationspójrz na to. Jaka jest różnica między implementacją a kompilacją w gradle


4
Sugerowałbym użycie „implementacji” zamiast kompilacji
SanVed

60

Dodaj poniższy wiersz w pliku app.gradle przed blokiem zależności.

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-annotations:26.1.0'
    }
}

Poniżej znajduje się zrzut ekranu dla lepszego zrozumienia.

Konfiguracje. Cały blok

  1. blok configuration.all będzie pomocny tylko wtedy, gdy chcesz, aby docelowy sdk miał wartość 26. Jeśli możesz zmienić go na 27, błąd zniknie bez dodania bloku konfiguracyjnego w pliku app.gradle.

  2. Jest jeszcze jeden sposób, aby usunąć całą implementację testową z pliku app.gradle, rozwiązałoby to błąd, a także nie trzeba dodawać bloku konfiguracyjnego ani zmieniać wersji targetdk.

Mam nadzieję, że to pomoże.


Dzięki, oszczędzaj mój czas
Manikandan K

1
@ManikandanK chętnie pomożemy!
Harsh Jain

Chwała wam za udzielenie pełnych instrukcji! (Tak wiele odpowiedzi na ten temat to po prostu „Dodaj to:” force 'com.android.support:support-annotations:26.1.0' "z małym / bez kontekstu! (Niestety, wciąż otrzymuję to samo błąd kompilacji, w moim przypadku „Nie można znaleźć com.android.support:support-annotations:27.0.0. Wymagane przez: trainingiq: bugsnag -active-native: unspecified> com.bugsnag: bugsnag-android: 4.3.1”
Dronz

35

Jeśli używasz wersji 26, to wersja wewnętrznych zależności powinna być 1.0.1 i 3.0.1, czyli jak poniżej

  androidTestImplementation 'com.android.support.test:runner:1.0.1'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'

Jeśli używasz wersji 27, to wersja wewnętrznych zależności powinna być 1.0.2 i 3.0.2, czyli w następujący sposób

  androidTestImplementation 'com.android.support.test:runner:1.0.2'
  androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

2
Niech cię Bóg błogosławi, niech Android obsługuje wersje bibliotek gniją w piekle!
Muhammad Naderi

Więc kreator Android Studio tworzy projekt od zera Z błędami? ¬¬
Sebastian Breit

A co z 28 ?
alizulfuqar

27

Jeśli używasz Android Studio 3.1. + Lub nowszego

po prostu umieść to w swoich zależnościach od gradle:

implementation 'com.android.support:support-annotations:27.1.1'

Ogólnie tak:

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    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:support-annotations:27.1.1'
}

Dzięki kolego, dużo miłości
amilab

23

Jest to spowodowane konfliktem wersji, aby go rozwiązać, po prostu wymuś aktualizację wersji adnotacji pomocy technicznej, dodając ten wiersz do modułu: app gradle

implementation ('com.android.support:support-annotations:27.1.1')

Mam nadzieję, że to rozwiąże Twój problem;)

Edytować

Prawie zapomniałem, że możesz zadeklarować jedną dodatkową właściwość ( https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties ) dla wersji, przejść do swojego projektu (lub najwyższego) pliku gradle i zadeklaruj swoje wsparcie, lub tylko dla tego przykładu, wersja adnotacji var

ext.annotation_version = "27.1.1"

Następnie w swoim gradle modułu zamień go na:

implementation ("com.android.support:support-annotations:$annotation_version")

Jest to bardzo podobne do rozwiązania @emadabel, które jest dobrą alternatywą do zrobienia tego, ale bez bloku lub rootprojectprzedrostka.


1
Dziękuję desgraci powyższe rozwiązanie pomogło mi
BharathRao

po dodaniu tego wiersza teraz pojawia się błąd „Błąd: wykonanie zadania nie powiodło się”: app: processDebugManifest '.> Połączenie manifestu nie powiodło się z wieloma błędami, zobacz dzienniki „Proszę, pomóż mi, jak mogę to rozwiązać
Basant

@Basant Musiałbym zobaczyć, na czym polega problem, ponieważ jest problem z wykonaniem gradle, lepiej byłoby otworzyć pytanie w tej sprawie
desgraci

Przepraszam za spóźnioną odpowiedź @desgraci, skróciłem ten problem, aktualizując IDE
Basant

@Basant miło to słyszeć!
desgraci

9

Dodanie tego do build.gradle (aplikacja modułu) działało dla mnie:
kompiluj „com.android.support:support-annotations:27.1.1”


7

Nie martw się To proste:

Przejdź do struktury katalogów „Project” i przejdź do „Gradle Scripts”, a wewnątrz niej przejdź do „build.gradle (Module: app)” i kliknij go dwukrotnie.

Teraz - Przewiń program w dół i przejdź do sekcji zależności: Jak poniżej


zależności {

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
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'

}


Teraz w tym Usuń ostatnie dwa wiersze kodu i odbuduj aplikację, a teraz będzie działać

Zależności powinny być:


zależności {

implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'

}


ODBUDUJ APLIKACJĘ I DZIAŁA !!


Nie wyjaśniłeś, co usunąłeś / dodałeś. A co jeśli biblioteki testów są tutaj potrzebne?
TheRealChx101

3

Przejdź do pliku build.gradle (aplikacja modułu) w swoim projekcie:

wprowadź opis obrazu tutaj

Postępuj zgodnie z rysunkiem i zmień te wersje:

compileSdkVersion: 27
targetSdkVersion: 27

a jeśli Android Studio w wersji 2: Zmień linię za pomocą tej linii:

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

else Zmień linię za pomocą tej linii:

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

i miejmy nadzieję, że rozwiążesz swój błąd.


2

Dodaj to do swojego pliku gradle.

implementation 'com.android.support:support-annotations:27.1.1'

1

Innym prostym sposobem rozwiązania tego problemu jest edycja build.gradle(aplikacji):

  1. Przejdź do androidtagu i zmień compileSdkVersion 26nacompileSdkVersion 27
  2. Przejdź do defaultConfigtagu i zmień targetSdkVersion 26natargetSdkVersion 27
  3. Muszę dependenciesoznaczyć i zmienić implementation 'com.android.support:appcompat-v7:26.1.0'naimplementation 'com.android.support:appcompat-v7:27.1.1'

1

Mam ten sam problem, w build.gradle (Module: app) dodaj następujący wiersz kodu wewnątrz zależności:

dependencies 
{
   ...
   compile 'com.android.support:support-annotations:27.1.1'
}

U mnie zadziałało doskonale


1

Ważna aktualizacja

Przejdź do build.gradle na poziomie projektu, zdefiniuj zmienne globalne

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlinVersion = '1.2.61'

    ext.global_minSdkVersion = 16
    ext.global_targetSdkVersion = 28
    ext.global_buildToolsVersion = '28.0.1'
    ext.global_supportLibVersion = '27.1.1'
}

Przejdź do build.gradle na poziomie aplikacji i użyj zmiennych globalnych

app build.gradle

android {
    compileSdkVersion global_targetSdkVersion
    buildToolsVersion global_buildToolsVersion
    defaultConfig {
        minSdkVersion global_minSdkVersion
        targetSdkVersion global_targetSdkVersion
}
...

dependencies {
    implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
    implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
    // and so on...
}

jakaś biblioteka build.gradle

android {
    compileSdkVersion global_targetSdkVersion
    buildToolsVersion global_buildToolsVersion
    defaultConfig {
        minSdkVersion global_minSdkVersion
        targetSdkVersion global_targetSdkVersion
}
...

dependencies {
    implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
    implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
    // and so on...
}

Rozwiązaniem jest, aby Twoje wersje były takie same jak we wszystkich modułach. Abyś nie miał konfliktów.

Ważne wskazówki

Czułem, że kiedy mam zaktualizowane wersje wszystkiego - gradle, sdks, biblioteki itp., To napotykam mniej błędów. Ponieważ programiści ciężko pracują, aby ułatwić programowanie w Android Studio.

Zawsze mieć najnowszy ale wersje stabilne wersje są niestabilne alpha, betaarc ignoruje je w rozwoju.

Zaktualizowałem wszystko poniżej w moich projektach i nie napotykam już tych błędów.

Miłego kodowania! :)


0

Jeśli zmiana docelowej wersji sdk nie pomoże, jeśli masz jakiekolwiek zależności z wersją, 3.0.2zmień ją na 3.0.1.

np. zmiana

androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'

do

androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1'

0

Lepsze rozwiązanie jest wyjaśnione w oficjalnym wyjaśnieniu . Odpowiedź, której udzieliłem wcześniej, zostawiłem pod linią poziomą.

Zgodnie z tamtym rozwiązaniem:

Użyj zewnętrznego tagu i zapisz poniższy kod w pliku build.gradle najwyższego poziomu . Zamierzasz zmienić wersję na zmienną zamiast statycznego numeru wersji.

ext {
    compileSdkVersion = 26
    supportLibVersion = "27.1.1"
}

Zmień statyczne numery wersji w pliku build.gradle na poziomie aplikacji, ten ma (Module: app)bliski.

android {
    compileSdkVersion rootProject.ext.compileSdkVersion // It was 26 for example
    // the below lines will stay
}

// here there are some other stuff maybe

dependencies {
    implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
    // the below lines will stay
}

Zsynchronizuj swój projekt, a nie otrzymasz żadnych błędów.


Nie musisz niczego dodawać do skryptów Gradle. Zainstaluj niezbędne zestawy SDK, a problem zostanie rozwiązany.

W twoim przypadku zainstaluj poniższe biblioteki z Preferencje> Android SDK lub Narzędzia> Android> Menedżer SDK

wprowadź opis obrazu tutaj


0

Dodaj tę linię pod zależnościami w pliku gradle

compile 'com.android.support:support-annotations:27.1.1'
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.