Conflitto con la dipendenza "com.android.support:support-annotations" nel progetto ": app". Le versioni risolte per app (26.1.0) e app di test (27.1.1) differiscono.


106

Sono nuovo nello sviluppo di app Android. Quando ho provato a creare un nuovo progetto, Android Project ... è apparso il seguente messaggio ..

Errore: esecuzione non riuscita per l'attività ": app: preDebugAndroidTestBuild".

Conflitto con la dipendenza "com.android.support:support-annotations" nel progetto ": app". Le versioni risolte per app (26.1.0) e app di test (27.1.1) differiscono. Vedi https://d.android.com/r/tools/test-apk-dependency-conflicts.html per i dettagli. Informazioni: attività Gradle [: app: generateDebugSources,: app: generateDebugAndroidTestSources,: app: mockableAndroidJar]

Questo è lo screenshot del mio progetto clicca qui per vedere lo screenshot dell'errore che ho ricevuto

Ho anche provato ad aggiungere questo codice alla mia dipendenza .. androidTestCompile 'com.android.support:support-annotations:23.3.0' non ha funzionato. Ho anche provato 27.1.1 e 26.1.0 .. che non ha funzionato neanche.


Controlla questa domanda: stackoverflow.com/q/43817004/9611523 . Spero possa aiutare.

1
L'aggiornamento di Android Studio (così come l'emulatore e altre cose successive) ha risolto il problema per me.

Il problema è dovuto al gradle di annotazione che non viene fornito per impostazione predefinita nella creazione di un nuovo progetto di Android Studio. Potrebbe esserti d'aiuto: readyandroid.wordpress.com/…
Pronto Android

Risposte:


182

Sulla base del tuo screenshot ho trovato due soluzioni funzionanti:

Prima soluzione : aggiungi questa riga alle dipendenze del tuo modulo gradle

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

e sincronizza il tuo progetto

Nota: se utilizzi Android Studio 3+, compilepassa aimplementation

Seconda soluzione : configura le proprietà a livello di progetto trovate nella documentazione https://developer.android.com/studio/build/gradle-tips.html#configure-project-wide-properties

nel gradle del progetto aggiungi questa riga:

// 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"
}

Quindi per accedere a questa sezione cambia la compileSdkVersionriga in essere

compileSdkVersion rootProject.ext.compileSdkVersion

e nella dependenciessezione cambia la libreria importata in questo modo:

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

e sincronizza il tuo progetto

Nota: se utilizzi Android Studio 3+, compilepassa aimplementation

Per la differenza tra compilee implementationguarda questo Qual è la differenza tra implementazione e compilazione in gradle


4
Suggerirei di usare "implementazione" invece di compilare
SanVed

60

Aggiungi la riga sottostante nel tuo file app.gradle prima del blocco delle dipendenze.

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

C'è anche uno screenshot qui sotto per una migliore comprensione.

Configurazioni. Tutto blocco

  1. il blocco configurations.all sarà utile solo se vuoi che il tuo SDK di destinazione sia 26. Se puoi cambiarlo in 27 l'errore sparirà senza aggiungere il blocco di configurazione nel file app.gradle.

  2. C'è un altro modo se si rimuovesse tutta l'implementazione del test dal file app.gradle si risolverebbe l'errore e anche in questo non è necessario aggiungere il blocco di configurazione né è necessario modificare la versione di targetdk.

Spero che aiuti.


Grazie, salva il mio tempo
Manikandan K

1
@ManikandanK felice di aiutarti!
Harsh Jain

Sia lode a te per aver dato istruzioni complete! (Così tante risposte su questo tipo di argomento sono come "Aggiungi questo:" force 'com.android.support:support-annotations:26.1.0' "con poco / nessun contesto! (Purtroppo, tuttavia continuo a ricevere lo stesso errore di compilazione, nel mio caso "Impossibile trovare com.android.support:support-annotations:27.0.0. Richiesto da: trainingiq: bugsnag-react-native: unspecified> com.bugsnag: bugsnag-android: 4.3.1"
Dronz

35

Se si utilizza la versione 26, la versione all'interno delle dipendenze dovrebbe essere 1.0.1 e 3.0.1 , ovvero come segue

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

Se si utilizza la versione 27, la versione all'interno delle dipendenze dovrebbe essere 1.0.2 e 3.0.2 , ovvero come segue

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

2
Dio ti benedica, che Android supporti il ​​controllo delle versioni delle librerie marcire all'inferno!
Muhammad Naderi

Quindi la procedura guidata di Android Studio crea un progetto da zero CON errori? ¬¬
Sebastian Breit

Che ne dici di 28 ?
alizulfuqar

27

Se utilizzi Android Studio 3.1. + O versioni successive

metti questo nelle tue dipendenze gradle:

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

Nel complesso in questo modo:

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'
}

Grazie amico, tanto amore
amilab

23

Ciò è dovuto a un conflitto di versioni, per risolverlo basta forzare un aggiornamento della versione delle annotazioni di supporto, aggiungendo questa riga sul modulo: app gradle

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

Spero che questo risolva il tuo problema;)

modificare

Quasi dimenticavo, puoi dichiarare una singola proprietà extra ( https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties ) per la versione, andare al tuo progetto (o il tuo primo) file gradle e dichiara il tuo supporto, o solo per questo esempio, annotation version var

ext.annotation_version = "27.1.1"

Quindi nel tuo modulo gradle sostituiscilo con:

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

Questo è molto simile alla soluzione @emadabel, che è una buona alternativa per farlo, ma senza il blocco o il rootprojectprefisso.


1
Grazie a desgraci la soluzione di cui sopra mi ha aiutato
BharathRao

dopo aver aggiunto questa riga ora ricevo l'errore "Errore: esecuzione non riuscita per l'attività": app: processDebugManifest ".> Unione manifest non riuscita con più errori, vedere i registri" per favore aiutami come posso risolverlo
Basant

@Basant avrei bisogno di vedere quale è il problema, dal momento che si tratta di un problema di eseguire il vostro Gradle, sarebbe meglio aprire una domanda per questo
desgraci

Ci scusiamo per la risposta in ritardo @desgraci, ho cortocircuitato questo problema aggiornando IDE
Basant

@Basant felice di sentirlo!
desgraci

9

L'aggiunta di questo al build.gradle (Modulo app) ha funzionato per me:
compilazione 'com.android.support:support-annotations:27.1.1'


7

Non ti preoccupare È semplice:

Vai alla struttura della directory "Progetto" e in quella vai su "Gradle Scripts" e al suo interno vai su "build.gradle (Modulo: app)" e fai doppio clic su di esso.

Ora - Scorri verso il basso il programma e in quello vai alla sezione delle dipendenze: Come sotto


dipendenze {

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'

}


Ora in questo Elimina le ultime due righe di codice e ricostruisci l'app e ora funzionerà

Le dipendenze dovrebbero essere:


dipendenze {

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'

}


RICOSTRUISCI L'APP E FUNZIONA !!


Non hai spiegato cosa hai eliminato / aggiunto. E se le librerie di test fossero necessarie qui?
TheRealChx101

3

Vai a build.gradle (Module App) nel tuo progetto:

inserisci qui la descrizione dell'immagine

Segui l'immagine e cambia la versione:

compileSdkVersion: 27
targetSdkVersion: 27

e se android studio versione 2: cambia la riga con questa riga:

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

altro Cambia la linea con questa linea:

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

e si spera che risolverai il tuo bug.


2

Aggiungilo al tuo file gradle.

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

1

Un altro modo semplice per risolvere questo problema è modificare la tua build.gradle(app):

  1. Vai al androidtag e cambia compileSdkVersion 26incompileSdkVersion 27
  2. Vai al defaultConfigtag e cambia targetSdkVersion 26intargetSdkVersion 27
  3. Devo dependenciestaggare e cambiare implementation 'com.android.support:appcompat-v7:26.1.0'inimplementation 'com.android.support:appcompat-v7:27.1.1'

1

Ho lo stesso problema, in build.gradle (Modulo: app) aggiungi la seguente riga di codice all'interno delle dipendenze:

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

Ha funzionato perfettamente per me


1

Aggiornamento importante

Vai a livello di progetto build.gradle, definisci le variabili globali

// 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'
}

Vai a build.gradle a livello di app e usa le variabili globali

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...
}

alcune librerie 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...
}

La soluzione è rendere le tue versioni uguali a tutti i moduli. In modo da non avere conflitti.

Suggerimenti importanti

Ho sentito che quando ho aggiornato le versioni di tutto - gradle, sdks, librerie ecc. Allora ho dovuto affrontare meno errori. Perché gli sviluppatori stanno lavorando sodo per semplificare lo sviluppo su Android Studio.

Avere sempre le versioni più recenti ma stabili Le versioni instabili sono alpha, betae rcignorarle durante lo sviluppo.

Ho aggiornato tutto di seguito nei miei progetti e non affronto più questi errori.

Buona programmazione! :)


0

Se la modifica della versione sdk di destinazione non aiuta, se hai qualche dipendenza dalla versione, 3.0.2modificala in 3.0.1.

ad esempio cambiamento

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

per

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

0

Una soluzione migliore è spiegata nella spiegazione ufficiale . Ho lasciato la risposta che ho dato prima sotto la linea orizzontale.

Secondo la soluzione lì:

Utilizza un tag esterno e annota il seguente codice di seguito nel file build.gradle di primo livello . Stai per cambiare la versione in una variabile piuttosto che in un numero di versione statico.

ext {
    compileSdkVersion = 26
    supportLibVersion = "27.1.1"
}

Cambia i numeri di versione statica nel tuo file build.gradle a livello di app , quello ha (Module: app)near.

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
}

Sincronizza il tuo progetto e non otterrai errori.


Non è necessario aggiungere nulla agli script Gradle. Installa gli SDK necessari e il problema verrà risolto.

Nel tuo caso, installa le librerie seguenti da Preferenze> Android SDK o Strumenti> Android> SDK Manager

inserisci qui la descrizione dell'immagine


0

Aggiungi questa riga sotto le dipendenze nel tuo file gradle

compile 'com.android.support:support-annotations:27.1.1'
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.