Tutte le librerie com.android.support devono utilizzare la stessa specifica di versione


788

Dopo l'aggiornamento ad Android Studio 2.3 ho ricevuto questo messaggio di errore. So che è solo un suggerimento poiché l'app funziona normalmente ma è davvero strana.

Tutte le librerie com.android.support devono utilizzare esattamente le stesse specifiche di versione (il mix delle versioni può causare arresti anomali del runtime). Trovate versioni 25.1.1, 24.0.0. Gli esempi includono com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

inserisci qui la descrizione dell'immagine

il mio voto:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'

    compile 'com.android.support:appcompat-v7:25.1.1'
    compile 'com.android.support:support-v4:25.1.1'
    compile 'com.android.support:design:25.1.1'
    compile 'com.android.support:recyclerview-v7:25.1.1'
    compile 'com.android.support:cardview-v7:25.1.1'
    compile 'com.google.android.gms:play-services-maps:10.2.0'
    compile 'com.google.android.gms:play-services:10.2.0'

    compile 'io.reactivex.rxjava2:rxjava:2.0.1'
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.jakewharton:butterknife:8.4.0'
    annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
    compile 'com.blankj:utilcode:1.3.6'
    compile 'com.orhanobut:logger:1.15'
    compile 'com.facebook.stetho:stetho:1.4.2'

    provided 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.google.auto.value:auto-value:1.2'
    annotationProcessor 'com.ryanharter.auto.value:auto-value-parcel:0.2.5'

    compile 'com.mikepenz:iconics-core:2.8.2@aar'
    compile('com.mikepenz:materialdrawer:5.8.1@aar') { transitive = true }
    compile 'com.mikepenz:google-material-typeface:2.2.0.3.original@aar'
    compile 'me.zhanghai.android.materialprogressbar:library:1.3.0'
    compile 'com.github.GrenderG:Toasty:1.1.1'
    compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.8.0'
    compile 'com.github.MAXDeliveryNG:slideview:1.0.0'

    compile 'com.facebook.fresco:fresco:1.0.1'
    compile 'com.github.bumptech.glide:glide:3.7.0'

    compile 'com.google.maps.android:android-maps-utils:0.4.4'
    compile 'com.github.jd-alexander:library:1.1.0'
}

aggiungi questo al tuo projectBuild.Gradle sottoprogetti {project.configurations.all {ResolutionStrategy.eachDependency {dettagli -> if (details.requested.group == 'com.android.support' &&! details.requested.name.contains ('multidex ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary,

Risposte:


906

Puoi risolverlo con una delle seguenti soluzioni:

Aggiornare:

A partire da Android Studio 3.0, diventa molto più semplice in quanto ora mostra un suggerimento più utile, quindi dobbiamo solo seguire questo suggerimento.
per esempio: 1]

Tutte le librerie com.android.support devono utilizzare esattamente le stesse specifiche di versione (il mix delle versioni può causare arresti anomali del runtime). Trovate versioni 27.0.2, 26.1.0. Gli esempi includono com.android.support:animated-vector-drawable:27.0.2 e com.android.support:customtabs:26.1.0

ci sono alcune combinazioni di librerie, o strumenti e librerie, che sono incompatibili o possono portare a bug. Una di queste incompatibilità è la compilazione con una versione delle librerie di supporto di Android che non è l'ultima versione (o in particolare, una versione inferiore a targetSdkVersion).

Soluzione:
aggiungere esplicitamente la libreria con la versione precedente ma con un nuovo numero di versione.
nel mio caso com.android.support:customtabs:26.1.0quindi devo aggiungere:

implementation "com.android.support:customtabs:27.0.2"  

cioè: prendi la libreria dal secondo elemento e implementala con il numero di versione dal primo.

Nota: non dimenticare di premere Sincronizza ora in modo che Gradle possa ricostruire il grafico delle dipendenze e vedere se ci sono altri conflitti.

Spiegazione:
potresti essere confuso dal messaggio di errore poiché non lo uso, customtabsquindi come ho un conflitto !!
bene .. non l'hai usato direttamente ma una delle tue librerie usa una vecchia versione di customtabsinternamente, quindi devi richiederla direttamente.

se sei curioso di sapere quale delle tue librerie è responsabile della vecchia versione e magari chiedi all'autore di aggiornare la sua libreria, esegui un rapporto di dipendenza Gradle, vedi la vecchia risposta per sapere come fare.

Nota questo


Vecchia risposta:

ispirato dalla risposta CommonsWare :

Esegui un rapporto di dipendenza Gradle per vedere qual è il tuo albero delle dipendenze completo.

Da lì, vedrai quale delle tue librerie richiede una versione diversa delle librerie del supporto Android. Per qualunque cosa chieda, puoi richiederlo direttamente con la versione 25.2.0 o utilizzare gli altri approcci di risoluzione dei conflitti di Gradle per ottenere le stesse versioni.


Aggiornare:

A partire dalla versione gradle del plug-in: 3.0 compileè stato sostituito da implementationo apivedere questa risposta per la differenza.

quindi usa invece:

./gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

o per windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

e cerca la versione in conflitto.

Per me, l'errore è scomparso dopo la rimozione com.google.android.gms:play-services:10.2.0

E includo solo com.google.android.gms:play-services-location:10.2.0e com.google.android.gms:play-services-maps:10.2.0poiché sono gli unici due servizi di gioco che utilizzo.

Penso che gms:play-servicesdipenda da alcuni vecchi componenti della libreria di supporto, quindi dobbiamo aggiungerli esplicitamente noi stessi.


per AS 3.0 una versione precedente.

Correre:

./gradlew -q dependencies <module-name>:dependencies --configuration implementation

Esempio:

./gradlew -q dependencies app:dependencies --configuration implementation

se qualcuno conosce un modo migliore nel nuovo plug-in Gradle, per favore fatemelo sapere.


3
com.google.android.gms:play-services:10.2.0supporta SDK 14 e versioni successive, se si desidera utilizzare al di sotto dell'SDK 14, è necessario utilizzare la versione 10.0.1indicata in stackoverflow.com/a/42315590/6248491
Sneh Pandya,

2
@humazed noob question, dove posso eseguire il comando in Android Studio?
Haikal Nashuha,

1
nel terminal, ma prima, prova a provare la cosa dei servizi di gioco
humazed il

1
Sono l'unico a pensare che questa sia follia? Voglio solo AdMob e Facebook, e si rifiutano di lavorare insieme ....
Jay,

3
Potrebbe essere utile sottolineare che il examples includetesto nel messaggio di errore mostra esempi reali del proprio progetto, non vaghi esempi generali del tipo di problema. Prendi la libreria dal secondo elemento e implementala con il numero di versione dal primo.
Benjamin Kershner,

203
  1. Vai alla project/.idea/librariescartella sul tuo file system e vedi quali librerie sono diverse.
  2. Dovrai includere manualmente queste librerie con la stessa versione nel tuo build.gradlefile.
  3. Quindi sincronizza il tuo progetto.

Per esempio:

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

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'

Buon punto. Non ho mai pensato di dare un'occhiata a quale in realtà era quello sbagliato. : S Grazie!
Tobias Reich,

funziona quando il metodo di risoluzione automatica gradle non funziona, grazie
Odaym

10
in / Project Files / My project / .idea / libraries ci sono più file di supporto con versioni diverse. Ora come faccio a sapere quale modulo o dipendenza sta usando questo?
Satpal Yadav,

2
@SatpalYadav Ho cercato la versione che non corrisponde alla più recente disponibile (la uso nella mia app). Ad esempio, utilizzo support: design: 25.3.1 ma material-dialogs usa support-v13: 25.1.1. Quindi ho aggiunto support-v13: 25.3.1 e l'errore scompare.
hardysim,

1
Questa è la soluzione migliore per me finora, ma come posso ignorare le nuove librerie?
Mateusz Kaflowski,

149

Per tutti i casi, non solo per queste versioni o librerie:

Presta attenzione alla piccola finestra informativa che dice qualcosa sull'errore, dice gli esempi che devi modificare e aggiungere .

In questo caso:

Trovate versioni 25.1.1, 24.0.0. Gli esempi includono com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

Il tuo

com.android.support:animated-vector-drawable:25.1.1

è la versione 25.1.1 e la tua

com.android.support:mediarouter-v7:24.0.0

è la versione 24.0.0 , quindi è necessario aggiungere il mediarouter con la stessa versione:

com.android.support:mediarouter-v7:25.1.1

E lo fa per ogni esempio che dice la piccola finestra informativa, in questo caso tutte le librerie che non hanno la versione 25.1.1.

Devi sincronizzare il gradle dopo aver corretto la libreria indicata per vedere la libreria e il pacchetto successivi che devi modificare.

IMPORTANTE:

Se non stai utilizzando esplicitamente una o più librerie specificate e ti dà l'errore, significa che viene utilizzato internamente da un'altra libreria, compilalo comunque in modo esplicito.

Puoi anche usare un altro metodo per vedere la differenza tra le versioni di tutte le librerie che stai effettivamente compilando (come eseguire un rapporto di dipendenza graduale o andare ai file delle librerie), il vero obiettivo è compilare tutte le librerie che stai utilizzando la stessa versione .


1
grazie mille, puoi spiegare cosa support:mediarouterfa esattamente?
mrid

1
Penso che questo sia qualcosa che hai sottolineato che la maggior parte di noi ha guardato oltre. E cioè: "Presta attenzione alla piccola finestra informativa che dice qualcosa sull'errore ....". Grazie, ora mi viene data una migliore comprensione di ciò che sta realmente accadendo.
Yo Apps

103

Il modo migliore per risolvere il problema è implementare tutto 'com.android.support: ...' suggerito da Android Studio

(Non importa quali versioni di supporto si stanno utilizzando - 27.1.1, 28.0.0 ecc.)

Posizionare il cursore sulla riga di errore, ad es

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

Android Studio ti suggerirà quale "com.android.support: ..." è una versione diversa da "com.android.support:appcompat-v7:28.0.0"

Esempio

Tutte le librerie com.android.support devono utilizzare esattamente le stesse specifiche di versione (il mix delle versioni può causare arresti anomali del runtime). Trovate versioni 28.0.0, 27.1.0, 27.0.2. Gli esempi includono com.android.support:animated-vector-drawable:28.0.0 e com.android.support:exifinterface:27.1.0

Quindi aggiungi com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Ora sincronizza il file gradle.

Uno ad uno prova a implementare tutti i 'com.android.support: ...' suggeriti fino a quando non ci sono errori in questa riga implementation 'com.android.support:appcompat-v7:28.0.0'

Nel mio caso, ho aggiunto

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

implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:cardview-v7:28.0.0'
implementation 'com.android.support:customtabs:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

Tutte queste dipendenze, potrebbe essere diverso per te.


ho aggiunto manualmente "implementazione" com.android.support:animated-vector-drawable:28.0.0 '"e" implementazione "com.android.support:support-media-compat:28.0.0'" ma "implementazione" com.android.support:appcompat-v7:28.0.0 '"è ancora sottolineato dal rosso
AAEM

@AAEM se si posiziona il cursore sulla riga dell'errore, verranno visualizzate le dipendenze da aggiungere successivamente. Aggiungi tutte le dipendenze alla stessa versione e sincronizza il file gradle. Se mostra di nuovo l'errore, seguire di nuovo i passaggi fino a quando non si verifica alcun errore.
Adarsh ​​Vijayan P

100

Aggiungi questo alla fine del tuo build.gradle (Modulo: app):

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
    def requested = details.requested
    if (requested.group == 'com.android.support') {
        if (!requested.name.startsWith("multidex")) {
            details.useVersion '25.3.1'
        }
     }

   }
}

Assicurati di sostituire '25 .3.1 'con la versione della libreria di supporto Android che desideri utilizzare per tutte le dipendenze, non dovrebbe essere inferiore alla tua versione SDK completa

di ri-sincronizzare gradle


3
Questo è ciò di cui avevo bisogno, una delle mie dipendenze stava andando in qualche modo in 27.0.1, anche quando ho specificato una versione minore al livello più alto. Per curiosità, perché escludi il "multidex"?
raggio

4
Questo mi ha salvato la giornata. Ma questo sviluppo Android sta diventando ancora più frammentato ogni passaggio. Le persone devono davvero controllare perfettamente ogni libreria di supporto prima di distribuirla. Non sempre abbiamo il lusso di passare attraverso ogni nuova versione dell'assistenza perché vogliamo concentrarci sulla costruzione dei nostri prodotti piuttosto che su tutto questo. È sempre frustrante
larrytech,

1
@ThinkTwiceCodeOnce Puoi andare qui per saperne di più su groovy e sui suoi plugin inteliji
ezzou

1
Sei un uomo salvavita. Questo dovrebbe essere votato molte volte!
imin

1
questa dovrebbe essere la soluzione ... votata
Ast

54

Ho avuto lo stesso identico problema dopo l'aggiornamento ad Android Studio 2.3

L'aggiunta di questa linea alle dipendenze ha risolto il mio problema:

compile 'com.android.support:customtabs:25.2.0'

2
Ho avuto lo stesso identico problema dopo l'aggiornamento ad Android Studio 2.3
Plugie

1
Per chiunque utilizzi RenderScript, ho impostato renderscriptSupportModeEnabled falsequesto su false. E aggiunto compilazione 'com.android.support:customtabs:25.2.0'ed errore è andato via.
Legge Gimenez,

1
@LawGimenez E come dovremmo usare il renderscript se lo disabilitassimo?
Dor506

3
sembra che il mio problema sia dovuto anche al rendering in maiuscolo, ma se avessi bisogno di renderercript per qualcos'altro, non per i customtabs?
HendraWD,

46

A) Esegui gradle dependencieso./gradlew dependencies

B) Guarda il tuo albero e scopri quale delle tue dipendenze specifica una versione diversa della libreria di supporto per una dipendenza che non controlli.

Non mi rendevo conto che questo avviso mostra anche se la dipendenza è completamente inutilizzata direttamente dal tuo codice. Nel mio caso, Facebook specifica alcune librerie di supporto che non stavo usando, puoi vedere di seguito la maggior parte di quelle dipendenze sono state ignorate dalle mie specifiche di 25.2.0, indicate dai simboli -> XXX (*) . La visualizzazione delle carte e le schede personalizzate non sono state ignorate da nessuno, quindi devo chiedere 25.2.0 per quelle stesse anche se non le uso.

+--- com.facebook.android:facebook-android-sdk:4.17.0
|    +--- com.android.support:support-v4:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:appcompat-v7:25.0.0 -> 25.2.0 (*)
|    +--- com.android.support:cardview-v7:25.0.0
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    +--- com.android.support:customtabs:25.0.0
|    |    +--- com.android.support:support-compat:25.0.0 -> 25.2.0 (*)
|    |    \--- com.android.support:support-annotations:25.0.0 -> 25.2.0
|    \--- com.parse.bolts:bolts-android:1.4.0 (*)

Se Gradle ti ha già avvertito e ti ha dato degli esempi ...

Gli esempi includono com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

... è ancora più semplice se si mette in evidenza un po 'di grep per la versione inferiore poiché gradle dependenciespuò essere abbastanza dettagliato:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'

1
Dalla tua spiegazione capisco che XXX -> YYY (*) significa che XXX viene ignorato da YYY, questo è buono a sapersi
Mercurio

Letteralmente l'unica risposta valida.
stef

32

Usa variabili : fare qualcosa di simile al seguente ti renderà più semplice assicurarti di utilizzare la stessa versione con tutte le librerie

dependencies {

    ext {
        support_library_version = '25.2.0'
        google_play_services_version = '10.2.0'
    }

    //#####################################################################
    //          Support Library
    //#####################################################################
    compile "com.android.support:appcompat-v7:${support_library_version}"
    compile "com.android.support:palette-v7:${support_library_version}"
    compile "com.android.support:design:${support_library_version}"

    //#####################################################################
    //          Google Play Services
    //#####################################################################
    compile "com.google.android.gms:play-services-auth:${google_play_services_version}"
    compile "com.google.android.gms:play-services-ads:${google_play_services_version}"
    compile "com.google.android.gms:play-services-analytics:${google_play_services_version}"

    //#####################################################################
    //          Firebase
    //#####################################################################
    compile "com.google.firebase:firebase-core:${google_play_services_version}"
    compile "com.google.firebase:firebase-auth:${google_play_services_version}"
    compile "com.google.firebase:firebase-messaging:${google_play_services_version}"

Ulteriori informazioni su come Google suggerisce di gestire questo controllo delle versioni sono disponibili in questo articolo: https://developer.android.com/studio/build/index.html#top-level


grazie Caro Daniel F, penso che questo sia il modo migliore per evitare il problema del mixaggio delle versioni.
Hovanes Mosoyan,

2
Solo una nota per favore: come suggerito nel link sopra, dovremmo definire questo tipo di variabili nel FILE DI LIVELLO IN ALTO LIVELLO grazie ancora)
Hovanes Mosoyan

25

aggiungi questo:

compile 'com.android.support:mediarouter-v7:25.2.0'

Updated per le nuove versioni dell'SDK

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'

Non risolve un problema che la vecchia libreria contiene il vecchio SDK.
CoolMind,

19

Se lo stesso errore è attivo appcompat

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

quindi aggiungendolo designrisolto.

implementation 'com.android.support:appcompat-v7:27.0.1'
implementation 'com.android.support:design:27.0.1'

Per me, aggiungendo

implementation 'de.mrmaffen:vlc-android-sdk:2.0.6'

è stato incluso appcompat-v7:23.1.1in

.idea / librerie

senza vlc, appcompatda solo è abbastanza.


Molte grazie, ha funzionato, ma qual è il ruolo di "com.android.support:design:27.0.1"
Wessam El Mahdy,

19

Come hai già visto tutte le risposte e i commenti sopra, ma questa risposta è per cancellare qualcosa che un nuovo sviluppatore potrebbe non ottenere facilmente.

./gradlew -q app dipendenze: dipendenze - compilazione configurazione

La linea sopra ti salverà la vita senza dubbio ma come ottenere il punto esatto dal risultato della linea sopra.

Quando si ottiene il grafico o l'elenco di tutte le dipendenze dal comando precedente, è necessario cercare il numero di versione in conflitto che si sta ottenendo nel codice. si prega di vedere l'immagine qui sotto.

inserisci qui la descrizione dell'immagine

nell'immagine sopra puoi vedere che 23.4.0 sta creando il problema ma questo non siamo in grado di trovare nel nostro file gradle. Quindi ora questo numero di versione (23.4.0) ci salverà. Quando abbiamo questo numero, troveremo questo numero nel risultato del comando precedente e importeremo direttamente quella dipendenza direttamente nel nostro file gradle. Si prega di vedere l'immagine qui sotto per ottenere la visione chiara.

puoi vedere chiaramente che com.android.support:cardview-v7:23.4.0 e com.android.support:customtabs:23.4.0 stanno usando la versione che sta creando il problema. Ora basta semplicemente copiare quelle righe dall'elenco delle dipendenze e utilizzarle esplicitamente nel nostro file gradle ma con il collegamento alla versione aggiornata

implementazione "com.android.support:cardview-v7:26.1.0" implementazione "com.android.support:customtabs:26.1.0"


1
Grazie! Con le nuove versioni di Android Studio, dovrebbe essere passato all'implementazione anziché alla compilazione
Avi Parshan

Sì hai ragione @AviParshan possiamo usare compilare o api. Le dipendenze che compaiono nelle configurazioni API saranno esposte in modo transitorio ai consumatori della biblioteca e come tali appariranno sul percorso di compilazione della classe dei consumatori. Le dipendenze rilevate nella configurazione dell'implementazione, d'altra parte, non saranno esposte ai consumatori, e quindi non penetreranno nel percorso di compilazione dei consumatori.
anoopbryan2,

utilizzare ./gradlew -q app per le dipendenze: dipendenze
configurazione

15

Un altro modo per risolvere i conflitti è solo quello di forzare la versione corretta per tutte le dipendenze come questa:

dependencies {
            configurations.all {
                resolutionStrategy.eachDependency { DependencyResolveDetails details ->
                    if (details.requested.group == 'com.android.support' && details.requested.name == 'support-v4') {
                        details.useVersion "27.0.2"
                    }
                }
    ...
    }

https://docs.gradle.org/current/userguide/customizing_dependency_resolution_behavior.html


Le regole di risoluzione delle dipendenze sono difficili da mantenere. Devono essere gestiti manualmente per il numero di versione e qualsiasi modifica nelle librerie di supporto implementate. Ad esempio Android Studio evidenzia le versioni lib più recenti disponibili, ma non interpreta queste regole.
Manuel,

12

Usa support-v13 invece di support-v4

compile 'com.android.support:support-v13:25.2.0'

Sto avendo problemi con questo: compila 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo

Esatto stesso errore di cui sopra: -> tutte le librerie com.android.support devono utilizzare la stessa specifica di versione Recyclerview
Crime_Master_GoGo

@Googli, per favore scrivi compileSdkVersion , buildToolsVersion e dipendenze che ho usato questo. Nessun problemacompile 'com.android.support:appcompat-v7:25.2.0' compile 'com.android.support:design:25.2.0' compile 'com.android.support:support-v13:25.2.0' compile 'com.android.support:recyclerview-v7:25.2.0'
Mehmet Hanoğlu

12

aggiungili nelle dipendenze a livello di app

implementation 'com.android.support:asynclayoutinflater:28.0.0'
implementation 'com.android.support:exifinterface:28.0.0'
implementation 'com.android.support:animated-vector-drawable:28.0.0'
implementation 'com.android.support:support-media-compat:28.0.0'
implementation 'com.android.support:support-v4:28.0.0'

9

Il mio problema è simile al tuo. Qui esiste un errore!

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

Tutte le librerie com.android.support devono utilizzare esattamente le stesse specifiche di versione (il mix delle versioni può causare arresti anomali del runtime). Trovate versioni 25.3.0, 24.0.0. Gli esempi includono "com.android.support:animated-vector-drawable:25.3.0" e "com.android.support:mediarouter-v7:24.0.0"

I seguenti esempi includono "com.android.support:animated-vector-drawable:25.3.0" e "com.android.support:mediarouter-v7:24.0.0"

basta aggiungere questi codici nelle dipendenze, assicurarsi che le versioni siano uguali.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'

9

Ho avuto lo stesso errore dopo aver aggiunto compile 'com.google.android.gms:play-services:10.2.4'con la compilazione 'com.android.support:appcompat-v7:25.3.1'.

Aggiunta animated-vector-drawablee mediarouter libsrisoluzione del problema.

compile 'com.google.android.gms:play-services:10.2.4'
compile 'com.android.support:appcompat-v7:25.3.1'
compile 'com.android.support:animated-vector-drawable:25.3.1'
compile 'com.android.support:mediarouter-v7:25.3.1'

9

Ho avuto questo:

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation'com.facebook.android:facebook-login:[4,5)'
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

e ho ottenuto questo errore: inserisci qui la descrizione dell'immagine

Le soluzioni erano facili - le dipendenze primarie erano tutte corrette, quindi le foglie - eventuali dipendenze di terzi. Rimosso uno per uno fino a quando non ha trovato il colpevole, e risulta essere Facebook! sta usando la versione 27.0.2 delle librerie di supporto Android. Ho provato ad aggiungere la versione 27.1.1 di cardview ma che non ha funzionato finora, la soluzione era ancora abbastanza semplice.

dependencies {
   implementation fileTree(dir: 'libs', include: ['*.jar'])
   implementation 'com.android.support:appcompat-v7:27.1.1'
   implementation 'com.android.support:design:27.1.1'
   implementation 'com.android.support:support-v4:27.1.1'
   implementation 'com.google.firebase:firebase-auth:12.0.1'
   implementation 'com.google.firebase:firebase-firestore:12.0.1'
   implementation 'com.google.firebase:firebase-messaging:12.0.1'
   implementation 'com.google.android.gms:play-services-auth:12.0.1'
   implementation('com.facebook.android:facebook-login:[4,5)'){
       // contains com.android.support:v7:27.0.2, included required com.android.support.*:27.1.1 modules
    exclude group: 'com.android.support'
   }
   implementation 'com.android.support:cardview-v7:27.1.1' // to replace facebook sdk's cardview-v7:27.0.2.
   implementation 'com.twitter.sdk.android:twitter:3.1.1'
   implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3'
   implementation 'org.jetbrains:annotations-java5:15.0'
   implementation project(':vehiclesapi')
   testImplementation 'junit:junit:4.12'
   androidTestImplementation 'com.android.support.test:runner:1.0.1'
   androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

9

Ho riscontrato questo problema dopo l'aggiornamento a Android Studio 3.4 e alla versione SDK a 28.0.0. L'applicazione sotto dipendenza ha risolto il problema per me.

    implementation 'com.android.support:exifinterface:28.0.0'

8

Ho usato questi due per risolvere il mio problema dopo l'aggiornamento a Android Studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'

8

Ho avuto lo stesso problema prima e ho ottenuto la soluzione per questo.

Ho appena aggiunto le librerie che avevano un'altra versione ma con la stessa versione della mia support:appcompat.

Ad esempio, per il tuo errore:

Tutte le librerie com.android.support devono utilizzare esattamente le stesse specifiche di versione (il mix delle versioni può causare arresti anomali del runtime). Trovate versioni 25.1.1, 24.0.0. Gli esempi includono com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

* La soluzione è compilare le versioni di queste librerie in questo modo:

compile 'com.android.support:mediarouter-v7:25.1.1'

-se un'altra libreria aveva lo stesso problema e un'altra versione, basta compilarla con la propria support:appcompatversione

Questo ha risolto il mio problema e spero che risolva il tuo.

Auguri :)


8

Dopo aver cercato e combinato le risposte, la versione 2018 di questa domanda e ha funzionato per me:

1) Nella scheda di navigazione, cambiarlo in vista progetto

2) Vai a [YourProjectName] /. Idea / librerie /

3) Elimina tutti i file che iniziano con Gradle__com_android_support_ [nome libreria]

Ad esempio: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) Nel tuo file gradle definisci una variabile e usala per sostituire il numero di versione come $ {variabileName}

Def variabile:

ext {
    support_library_version = '28.0.0' //use the version of choice
}

Usa variabile:

implementation "com.android.support:cardview-v7:${support_library_version}"

esempio gradle:

dependencies {
    ext {
        support_library_version = '28.0.0' //use the version of choice
    }

    implementation fileTree(include: ['*.jar'], dir: 'libs')

    implementation "com.android.support:animated-vector-drawable:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:customtabs:${support_library_version}"
    implementation "com.android.support:cardview-v7:${support_library_version}"
    implementation "com.android.support:support-compat:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
    implementation "com.android.support:support-core-utils:${support_library_version}"
    implementation "com.android.support:support-core-ui:${support_library_version}"
    implementation "com.android.support:support-fragment:${support_library_version}"
    implementation "com.android.support:support-media-compat:${support_library_version}"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:recyclerview-v7:${support_library_version}"
    implementation "com.android.support:design:${support_library_version}"

}

1
Questa risposta richiede ulteriori spiegazioni. Un lettore potrebbe essere indotto a credere di dover copiare e incollare l'intero file gradle nel loro progetto. Dovresti spiegare perché hai aggiunto l'estensione e perché hai impostato alcune librerie di supporto sulla versione gplaysvcs, altre sulla versione supportlib e alcune sono invariate.
jungledev,

8

Molto semplice con la nuova versione di Android Studio 3.x.

Basta copiare la versione che è inferiore alla versione corrente e aggiungerla esplicitamente con lo stesso numero di versione della versione corrente.

Esempio

Trovate versioni 27.1.1, 27.1.0. Gli esempi includono com.android.support:animated-vector-drawable:27.1.1 e com.android.support:exifinterface:27.1.0

Basta copiare la versione com.android.support:exifinterface:27.1.0e cambiarla in com.android.support:exifinterface:27.1.1modo che diventi uguale alla versione corrente in uso e aggiungerla alle dipendenze del gradle come segue.

implementation 'com.android.support:exifinterface:27.1.1'

Nota: una volta terminato, non dimenticare di fare clic su Sincronizza ora nella parte superiore dell'editor.


7

nel 2018 l'aggiornamento per questo errore aggiunge l'implementazione dalla struttura del progetto

implementation 'com.android.support:support-v13:28.0.0'

in modalità progetto -> Librerie esterne lì puoi trovare il tuo problema, nel mio caso sto usando la versione 28 e le librerie esterne che ho trovato com.android.support:support-media-compat-26.0.0ed ecco l'errore.

dopo l'implementazione support v13e funziona


La sottolineatura rossa è scomparsa con questa implementazione.
Truong Hieu,

6

Hai definito qualsiasi altra dipendenza da compilare con la versione 24.0.0anziché 25.1.1. Si prega di impostare tutte le versioni delle dipendenze come 25.1.1.


Ho aggiornato la mia risposta, tutte le versioni di supporto hanno la stessa versione 25.1.1
humazed

6

Ho dovuto aggiungere le seguenti righe in gradi per rimuovere l'errore

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:preference-v7:25.2.0'
compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:cardview-v7:25.2.0'

6

Ho eseguito attività ./gradlew - tutte e verificato la presenza di dipendenze che erano una versione diversa dalla versione di destinazione (25.3.1). Otterrai qualcosa del genere:

app:prepareComAndroidSupportAnimatedVectorDrawable2531Library - Prepare com.android.support:animated-vector-drawable:25.3.1
app:prepareComAndroidSupportAppcompatV72531Library - Prepare com.android.support:appcompat-v7:25.3.1
app:prepareComAndroidSupportCardviewV72531Library - Prepare com.android.support:cardview-v7:25.3.1
app:prepareComAndroidSupportCustomtabs2531Library - Prepare com.android.support:customtabs:25.3.1
app:prepareComAndroidSupportDesign2531Library - Prepare com.android.support:design:25.3.1
app:prepareComAndroidSupportMediarouterV72531Library - Prepare com.android.support:mediarouter-v7:25.3.1
app:prepareComAndroidSupportPaletteV72531Library - Prepare com.android.support:palette-v7:25.3.1
app:prepareComAndroidSupportRecyclerviewV72531Library - Prepare com.android.support:recyclerview-v7:25.3.1
app:prepareComAndroidSupportSupportCompat2531Library - Prepare com.android.support:support-compat:25.3.1
app:prepareComAndroidSupportSupportCoreUi2531Library - Prepare com.android.support:support-core-ui:25.3.1
app:prepareComAndroidSupportSupportCoreUtils2531Library - Prepare com.android.support:support-core-utils:25.3.1
app:prepareComAndroidSupportSupportFragment2531Library - Prepare com.android.support:support-fragment:25.3.1
app:prepareComAndroidSupportSupportMediaCompat2531Library - Prepare com.android.support:support-media-compat:25.3.1
app:prepareComAndroidSupportSupportV42531Library - Prepare com.android.support:support-v4:25.3.1
app:prepareComAndroidSupportSupportVectorDrawable2531Library - Prepare com.android.support:support-vector-drawable:25.3.1
app:prepareComAndroidSupportTransition2531Library - Prepare com.android.support:transition:25.3.1
app:prepareComAndroidVolleyVolley100Library - Prepare com.android.volley:volley:1.0.0
app:prepareComCrashlyticsSdkAndroidAnswers1312Library - Prepare com.crashlytics.sdk.android:answers:1.3.12
app:prepareComCrashlyticsSdkAndroidBeta124Library - Prepare com.crashlytics.sdk.android:beta:1.2.4
app:prepareComCrashlyticsSdkAndroidCrashlytics267Library - Prepare com.crashlytics.sdk.android:crashlytics:2.6.7
app:prepareComCrashlyticsSdkAndroidCrashlyticsCore2316Library - Prepare com.crashlytics.sdk.android:crashlytics-core:2.3.16
app:prepareComFacebookAndroidFacebookAndroidSdk4161Library - Prepare com.facebook.android:facebook-android-sdk:4.16.1
app:prepareComGoogleAndroidGmsPlayServicesAnalytics1026Library - Prepare com.google.android.gms:play-services-analytics:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAnalyticsImpl1026Library - Prepare com.google.android.gms:play-services-analytics-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuth1026Library - Prepare com.google.android.gms:play-services-auth:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesAuthBase1026Library - Prepare com.google.android.gms:play-services-auth-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBase1026Library - Prepare com.google.android.gms:play-services-base:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesBasement1026Library - Prepare com.google.android.gms:play-services-basement:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesCast1026Library - Prepare com.google.android.gms:play-services-cast:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesLocation1026Library - Prepare com.google.android.gms:play-services-location:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesMaps1026Library - Prepare com.google.android.gms:play-services-maps:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTagmanagerV4Impl1026Library - Prepare com.google.android.gms:play-services-tagmanager-v4-impl:10.2.6
app:prepareComGoogleAndroidGmsPlayServicesTasks1026Library - Prepare com.google.android.gms:play-services-tasks:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalytics1026Library - Prepare com.google.firebase:firebase-analytics:10.2.6
app:prepareComGoogleFirebaseFirebaseAnalyticsImpl1026Library - Prepare com.google.firebase:firebase-analytics-impl:10.2.6
app:prepareComGoogleFirebaseFirebaseAppindexing1024Library - Prepare com.google.firebase:firebase-appindexing:10.2.4
app:prepareComGoogleFirebaseFirebaseCommon1026Library - Prepare com.google.firebase:firebase-common:10.2.6
app:prepareComGoogleFirebaseFirebaseCore1026Library - Prepare com.google.firebase:firebase-core:10.2.6
app:prepareComGoogleFirebaseFirebaseIid1026Library - Prepare com.google.firebase:firebase-iid:10.2.6
app:prepareComGoogleFirebaseFirebaseMessaging1026Library - Prepare com.google.firebase:firebase-messaging:10.2.6
app:prepareComMindorksPlaceholderview027Library - Prepare com.mindorks:placeholderview:0.2.7
app:prepareDebugAndroidTestDependencies
app:prepareDebugDependencies
app:prepareDebugUnitTestDependencies
app:prepareInfoHoang8fAndroidSegmented105Library - Prepare info.hoang8f:android-segmented:1.0.5
app:prepareIoFabricSdkAndroidFabric1316Library - Prepare io.fabric.sdk.android:fabric:1.3.16
app:prepareNoNordicsemiAndroidLog211Library - Prepare no.nordicsemi.android:log:2.1.1
app:prepareNoNordicsemiAndroidSupportV18Scanner100Library - Prepare no.nordicsemi.android.support.v18:scanner:1.0.0

In questo caso, stavo prendendo di mira il 25.3.1 e avevo alcune dipendenze destinate a versioni diverse quando ho eseguito questo comando. Il trucco è identificare le dipendenze in questo elenco che hanno come target le versioni precedenti e sovrascriverle importando la versione più recente della dipendenza in Gradle.


6

Ho lo stesso problema ma ho risolto questo aggiungendo quelle tre righe

implementation 'com.android.support:design:27.1.1'
implementation "com.android.support:customtabs:27.1.1"
implementation 'com.android.support:mediarouter-v7:27.1.1'

ora Ogni cosa funziona perfettamente


6

Ecco il mio flusso per correggere questo avviso

build.gradle

android {
    compileSdkVersion ... // must same version (ex: 26)
    ...
}

dependencies {
    ...
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)
    compile 'any com.android.support... library'  // must same version (ex: 26.0.1)

    ...
    compile ('a library B which don't use 'com.android.support...' OR use SAME version of 'com.android.support'){
         // do nothing 
    }

    ...
    compile ('a library C which use DIFFERENT 'com.android.support...' (ex:27.0.1) { 
        // By default, if use don't do anything here your app will choose the higher com.android.support... for whole project (in this case it is 27.0.1)

        // If you want to use 26.0.1 use
        exclude group: 'com.android.support', module: '...' (ex module: 'appcompat-v7') 
        exclude group: 'com.android.support', module: 'another module'
        ...

        // If you want to use 27.0.1 do 
        Upgrade `compileSdkVersion` and all 'com.android.support' to 27.0.1.
        (It may be a good solution because the best practice is always use latest `compileSdkVersion`.  
        However, use 26 or 27 is base on you for example higher library may have bug)
    }
}

Per visualizzare / verificare la dependenciestotalità della libreria nella tua app
Apri terminale ed esegui./gradlew app:dependencies

Per visualizzare la dependencieslibreria specifica di un'app, segui il tutorial qui: - Come escludere le dipendenze di una particolare dipendenza in Gradle

Spero che sia d'aiuto


5

Apri la libreria esterna del tuo progetto e vedrai che alcune librerie usano ancora la versione precedente anche se non hai menzionato quelle librerie, quindi il mio suggerimento è di usare solo la versione particolare della libreria per quelle che risolverà il tuo problema.


5

Ho appena aggiornato il mio repository di supporto Android su (revisione: 44.0.0); quindi gli strumenti Android SDK e l'emulatore all'ultima versione 25.3.1 da sdk manager> Strumenti SDK E ha risolto il mio problema.

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.