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.

hashTag_bibu
źródł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

emadabel
źródło
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.

Harsh Jain
źródło
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'
Harish
źródło
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'
}
Uray Febri
źródło
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.

desgraci
źródło
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”

San Askaruly
źródło
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 !!

Manika Agrawal
źródło
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.

Maizied Hasan Shuvo
źródło
2

Dodaj to do swojego pliku gradle.

implementation 'com.android.support:support-annotations:27.1.1'
Jeffy
źródło
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'
Realdinho
źródło
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

Mohammed H. Hannoush
źródło
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! :)

Khemraj
źródło
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'
Harshad
źródło
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

Tuńczyk Onur
źródło
0

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

compile 'com.android.support:support-annotations:27.1.1'
Pavitha
źródło