Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão

788

Depois de atualizar para o android studio 2.3, recebi esta mensagem de erro. Eu sei que é apenas uma dica, pois o aplicativo é executado normalmente, mas é realmente estranho.

Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão (a mistura de versões pode causar falhas no tempo de execução). Versões encontradas 25.1.1, 24.0.0. Os exemplos incluem com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

insira a descrição da imagem aqui

meu gradle:

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'
}
humazed
fonte
adicione isso aos subprojetos projectBuild.Gradle {project.configurations.all {resolutionStrategy.eachDependency {details -> if (details.requested.group == 'com.android.support' &&! details.requested.name.contains ('multidex ')) {details.useVersion "26. +"}}}}
Sunil Chaudhary

Respostas:

906

Você pode resolver isso com uma das seguintes soluções:

Atualizar:

A partir do Android studio 3.0, fica muito mais fácil, pois agora mostra uma dica mais útil, por isso precisamos apenas segui-la.
por exemplo: 1]

Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão (a mistura de versões pode causar falhas no tempo de execução). Versões encontradas 27.0.2, 26.1.0. Os exemplos incluem com.android.support:animated-vector-drawable:27.0.2 e com.android.support:customtabs:26.1.0

existem algumas combinações de bibliotecas, ou ferramentas e bibliotecas, que são incompatíveis ou podem levar a erros. Uma dessas incompatibilidades é compilar com uma versão das bibliotecas de suporte do Android que não é a versão mais recente (ou, em particular, uma versão inferior à sua targetSdkVersion.)

Solução:
adicione explicitamente a biblioteca com a versão antiga, mas com um novo número de versão.
no meu caso, com.android.support:customtabs:26.1.0então eu preciso adicionar:

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

ou seja: pegue a biblioteca do segundo item e implemente-a com o número da versão do primeiro.

Nota: não esqueça de pressionar sync agora, para que o gradle possa reconstruir o gráfico de dependência e veja se há mais conflitos.

Explicação:
você pode ficar confuso com a mensagem de erro, pois não a usa, customtabsentão como eu tenho um conflito !!
bem ... você não o usou diretamente, mas uma de suas bibliotecas usa uma versão antiga do customtabsinternamente, portanto, você deve solicitá-lo diretamente.

se você estiver curioso para saber qual das suas bibliotecas é responsável pela versão antiga e talvez pedir ao autor para atualizar sua biblioteca, execute um relatório de dependência Gradle, consulte a resposta antiga para saber como.

Observe isso


Resposta antiga:

inspirado na resposta do CommonsWare :

Execute um relatório de dependência Gradle para ver qual é a sua árvore completa de dependências.

A partir daí, você verá qual das suas bibliotecas está solicitando uma versão diferente das bibliotecas do Suporte Android. Para o que quer que seja solicitado, você pode solicitá-lo diretamente com a versão 25.2.0 ou usar as outras abordagens de resolução de conflitos de Gradle para obter as mesmas versões.


Atualizar:

A partir da versão do plugin gradle: 3.0 compilefoi substituída por implementationou apiveja esta resposta para ver a diferença.

portanto, use:

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

ou para janelas cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

e procure a versão em conflito.

Para mim, o erro desapareceu após a remoção com.google.android.gms:play-services:10.2.0

E apenas inclua com.google.android.gms:play-services-location:10.2.0e com.google.android.gms:play-services-maps:10.2.0como eles são os únicos dois serviços de play que eu uso.

Eu acho que gms:play-servicesdependem de alguns componentes antigos da biblioteca de suporte, então precisamos adicioná-los explicitamente.


para o AS 3.0 mais antigo.

Corre:

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

Exemplo:

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

se alguém souber uma maneira melhor no novo plugin gradle, por favor me avise.

humazed
fonte
3
com.google.android.gms:play-services:10.2.0suportes SDK 14 e acima, se você quiser usar abaixo SDK 14, você precisa usar a versão 10.0.1conforme mencionado na stackoverflow.com/a/42315590/6248491
Sneh Pandya
2
@humazed noob pergunta, onde eu executo o comando no Android Studio?
Haikal Nashuha
1
no terminal, mas, primeiro, tentar tentar a coisa de serviços de jogo
humazed
1
Eu sou o único que pensa que isso é loucura? Eu só quero admob e facebook, e eles se recusam a trabalhar juntos ....
Jay
3
Pode ser útil ressaltar que o examples includetexto na mensagem de erro mostra exemplos reais de seu próprio projeto, não exemplos gerais vagos do tipo de problema. Pegue a biblioteca do segundo item e implemente-a com o número da versão do primeiro.
22718 Benjamin Kershner
203
  1. Vá para a project/.idea/librariespasta no seu sistema de arquivos e veja quais bibliotecas são diferentes.
  2. Você precisará incluir manualmente essas bibliotecas com a mesma versão no seu build.gradlearquivo.
  3. Em seguida, sincronize seu projeto.

Por exemplo:

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

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'
João Paulo Paiva
fonte
Bom ponto. Eu nunca pensei em dar uma olhada qual realmente era a errada. : S Obrigado!
Tobias Reich
funciona quando o método de resolução automática Gradle não, obrigado
Odaym
10
em / Arquivos de projeto / Meu projeto / .idea / libraries, existem vários arquivos de suporte com versão diferente. Agora, como eu saberia qual módulo ou dependência está usando isso?
Satpal Yadav
2
@SatpalYadav Procurei a versão que não corresponde à mais recente disponível (uso no meu aplicativo). Por exemplo, eu uso support: design: 25.3.1, mas os diálogos de materiais usam support-v13: 25.1.1. Então eu adicionei support-v13: 25.3.1 e o erro desaparece.
hardysim
1
Essa é a melhor solução para mim até agora, mas como posso substituir as bibliotecas mais recentes?
Mateusz Kaflowski 23/03
149

Para todos os casos, não apenas para estas versões ou bibliotecas:

Preste atenção na pequena janela de informações que diz algo sobre o erro, que diz os exemplos que você precisa alterar e adicionar .

Nesse caso:

Versões encontradas 25.1.1, 24.0.0. Os exemplos incluem com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

Seu

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

é a versão 25.1.1 e seu

com.android.support:mediarouter-v7:24.0.0

é a versão 24.0.0 , então você deve adicionar o mediarouter com a mesma versão:

com.android.support:mediarouter-v7:25.1.1

E faça isso para todos os exemplos que a pequena janela de informações diz, neste caso, todas as bibliotecas que não possuem a versão 25.1.1.

Você precisa sincronizar a gradle após corrigir a biblioteca indicada para ver a próxima biblioteca e pacote que precisa alterar.

IMPORTANTE:

Se você não estiver usando explicitamente uma ou mais bibliotecas especificadas e estiver fornecendo o erro, significa que está sendo usado internamente por outra biblioteca, compile-o explicitamente de qualquer maneira.

Você também pode usar outro método para ver a diferença das versões de todas as bibliotecas que está realmente compilando (como executar um relatório de dependência gradle ou acessar seus arquivos de bibliotecas), o objetivo real é compilar todas as bibliotecas que você está usando a mesma versão .

Brandon Zamudio
fonte
1
muito obrigado, você pode explicar o que support:mediarouterexatamente faz?
Mrid
1
Eu acho que isso é algo que você apontou que a maioria de nós já olhou. E ie- "Preste atenção na pequena janela de informações que diz algo sobre o erro ....". Obrigado, isso agora me deu uma melhor compreensão do que realmente está acontecendo.
Yo Apps
103

A melhor maneira de resolver o problema é implementar todos os 'com.android.support: ...' sugeridos pelo Android Studio

(Não importa quais versões de suporte você está usando - 27.1.1, 28.0.0 etc.)

Coloque o cursor na linha de erro, por exemplo

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

O Android Studio sugere que 'com.android.support: ...' é uma versão diferente de 'com.android.support:appcompat-v7:28.0.0'

Exemplo

Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão (a mistura de versões pode causar falhas no tempo de execução). Versões encontradas 28.0.0, 27.1.0, 27.0.2. Os exemplos incluem com.android.support:animated-vector-drawable:28.0.0 e com.android.support:exifinterface:27.1.0

Então adicione com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Agora sincronize o arquivo gradle.

Um por um, tente implementar todas as sugestões 'com.android.support: ...' até que não haja erro nesta linha implementation 'com.android.support:appcompat-v7:28.0.0'

No meu caso, eu adicionei

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'

Todas essas dependências podem ser diferentes para você.

Adarsh ​​Vijayan P
fonte
eu adicionei manualmente "implementação 'com.android.support:animated-vector-drawable:28.0.0'" e "implementação 'com.android.support:support-media-compat:28.0.0'", mas a "implementação" com.android.support:appcompat-v7:28.0.0 '"ainda é sublinhado por red
AAEM
@AAEM se você colocar o cursor na linha de erro, ele mostrará quais são as dependências que você deve adicionar a seguir. Adicione todas as dependências à mesma versão e sincronize o arquivo gradle. Se ele mostrar erro novamente, siga as etapas novamente até que não haja erro.
Adarsh ​​Vijayan P
100

Adicione isso ao final do seu build.gradle (Módulo: 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'
        }
     }

   }
}

Certifique-se de substituir '25 .3.1 'pela versão da biblioteca de suporte do Android que você deseja usar para todas as dependências, pois ela não deve ser inferior à sua versão sdk completa

do que re sincronizar gradle

ezzou
fonte
3
Era disso que eu precisava, uma das minhas dependências estava chegando na 27.0.1 de alguma forma, mesmo quando especifiquei uma versão menor no nível superior. Por curiosidade, por que você exclui o "multidex"?
ray
4
Isso salvou o dia para mim. Mas esse desenvolvimento android está se tornando ainda mais fragmentado a cada passagem. As pessoas precisam realmente verificar todas as bibliotecas de suporte perfeitamente antes de lançá-las. Nem sempre temos o luxo de passar por cada nova versão de suporte, porque queremos nos concentrar na construção de nossos produtos, em vez de passar por tudo isso. É sempre frustrante
larrytech 18 /
1
@ThinkTwiceCodeOnce Você pode ir aqui para saber mais sobre groovy, e seus plugins inteliji: jetbrains.com/help/idea/getting-started-with-groovy.html
ezzou
1
Você é um homem que salva vidas. Isso deve ser votado muitas e muitas vezes!
Imin
1
esta deve ser a solução ... votada #
Ast
54

Eu tive exatamente o mesmo problema depois de atualizar para o Android Studio 2.3

A adição desta linha às dependências resolveu meu problema:

compile 'com.android.support:customtabs:25.2.0'
Berat Baran Cevik
fonte
2
Eu tive exatamente o mesmo problema depois de atualizar para o Android Studio 2.3
Plugie 4/17/17
1
Para quem usa o RenderScript, defino renderscriptSupportModeEnabled falseisso como false. E acrescentou compilação 'com.android.support:customtabs:25.2.0'e erro foi embora.
Lei Gimenez
1
@LawGimenez E como devemos usar o renderscript se o desativamos?
precisa saber é o seguinte
3
Parece que o meu problema também é devido ao renderscript, mas e se eu precisar do renderscript para outra coisa, não para oabsabs?
HendraWD
46

A) Executar gradle dependenciesou./gradlew dependencies

B) Olhe para sua árvore e descubra qual de suas dependências está especificando uma versão diferente da biblioteca de suporte para uma dependência que você não controla.

Não percebi que esse aviso também é exibido se a dependência não for completamente usada diretamente pelo seu próprio código. No meu caso, o Facebook especifica algumas bibliotecas de suporte que eu não estava usando, como você pode ver abaixo, a maioria dessas dependências foi substituída pela minha própria especificação da 25.2.0, denotada pelos símbolos -> XXX (*) . A exibição do cartão e as guias das guias personalizadas não foram substituídas por ninguém, então eu preciso solicitar 25.2.0 para essas pessoalmente, mesmo que não as use.

+--- 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 já o avisou e lhe deu exemplos ...

Os exemplos incluem com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

... é ainda mais fácil se você colocar algum destaque grep para a versão inferior, pois gradle dependenciespode ser bem detalhado:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'
Daniel Wilson
fonte
1
De sua explicação eu entendo que XXX -> YYY (*) significa que XXX é substituído por YYY, que é bom saber
Mercury
Literalmente, a única resposta válida.
stef
32

Usar variáveis : Fazer algo como o seguinte facilitará a garantia de uso da mesma versão em todas as bibliotecas

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

Mais informações sobre como o Google sugere que você lide com esse controle de versão podem ser encontradas neste artigo: https://developer.android.com/studio/build/index.html#top-level

Daniel F
fonte
obrigado Caro Daniel F, Acho que esta é a melhor maneira de evitar o problema de mixagem de versões.
Hovanes Mosoyan
2
Apenas uma nota por favor: Como sugerido no link acima, devemos definir essas variáveis tipo no arquivo graças TOP LEVEL Gradle novamente)
Hovanes Mosoyan
25

basta adicionar isso:

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

Updated para novas versões do SDK

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'
Mohsen mokhtari
fonte
Não resolve um problema que a biblioteca antiga contenha SDK antigo.
CoolMind
19

Se o mesmo erro estiver ativado appcompat

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

então adicionando designresolveu.

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

Para mim, adicionando

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

estava incluindo appcompat-v7:23.1.1em

.idea / bibliotecas

sem vlc, appcompatsó é suficiente.

Prabs
fonte
Muito obrigado, funcionou, mas qual é o papel de 'com.android.support:design:27.0.1' #
Wessam El Mahdy
19

Como você já viu todas as respostas e comentários acima, mas esta resposta é para esclarecer algo que um novo desenvolvedor pode não conseguir facilmente.

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

A linha acima salvará sua vida sem dúvida, mas como obter o ponto exato do resultado da linha acima.

Ao obter o gráfico ou a lista de todas as dependências do comando acima, você deve procurar o número da versão conflitante que está recebendo no seu código. veja a imagem abaixo.

insira a descrição da imagem aqui

na imagem acima, você pode ver que o 23.4.0 está criando o problema, mas isso não conseguimos encontrar em nosso arquivo gradle. Então agora este número de versão (23.4.0) nos salvará. Quando tivermos esse número, encontraremos esse número no resultado do comando acima e importaremos diretamente essa dependência diretamente em nosso arquivo gradle. Por favor, veja a imagem abaixo para obter uma visão clara.

você pode ver claramente que com.android.support:cardview-v7:23.4.0 e com.android.support:customtabs:23.4.0 estão usando a versão que está criando o problema. Agora basta copiar essas linhas da lista de dependências e usar explicitamente em nosso arquivo gradle, mas com o link da versão atualizada

implementação "com.android.support:cardview-v7:26.1.0" implementação "com.android.support:customtabs:26.1.0"

anoopbryan2
fonte
1
Obrigado! Com versões mais recentes do estúdio android, ele deve ser transferido para a implementação, em vez de compilação
Avi Parshan
Sim, você está certo @AviParshan, podemos usar compilar ou API. As dependências que aparecem nas configurações da API serão expostas transitivamente aos consumidores da biblioteca e, como tal, aparecerão no caminho de classe de compilação dos consumidores. As dependências encontradas na configuração da implementação, por outro lado, não serão expostas aos consumidores e, portanto, não vazarão no caminho de classe de compilação dos consumidores.
anoopbryan2
use ./gradlew -q dependencies app: dependencies - implementação de configuração
Sumit
15

Outra maneira de resolver conflitos é forçar a versão correta para todas as dependências como esta:

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

Gainder
fonte
As regras de resolução de dependência são difíceis de manter. Eles precisam ser mantidos manualmente para o número da versão e qualquer alteração nas bibliotecas de suporte implementadas. Por exemplo, o Android Studio destaca as versões mais recentes da lib disponíveis, mas não interpreta essas regras.
Manuel
12

Use support-v13 em vez de support-v4

compile 'com.android.support:support-v13:25.2.0'
Mehmet Hanoğlu
fonte
Estou ficando problema com esta: 'com.android.support:recyclerview-v7:25.2.0' compilação
Crime_Master_GoGo
Exatamente o mesmo erro acima: -> todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão Recyclerview
Crime_Master_GoGo 14/17
@Googli, escreva compileSdkVersion , buildToolsVersion e dependências que usei. Não há 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 14/03
12

adicione-os nas dependências no nível do aplicativo

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'
Mohammad Maaz
fonte
9

Meu problema é semelhante ao seu. Aqui existe um erro!

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

Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão (a mistura de versões pode causar falhas no tempo de execução). Versões encontradas 25.3.0, 24.0.0. Os exemplos incluem 'com.android.support:animated-vector-drawable:25.3.0' e 'com.android.support:mediarouter-v7:24.0.0'

Veja estes exemplos incluem 'com.android.support:animated-vector-drawable:25.3.0' e 'com.android.support:mediarouter-v7:24.0.0'

Ao adicionar esses códigos nas dependências, verifique se as versões são iguais.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'
Yanbin Hu
fonte
9

Eu recebi o mesmo erro depois de adicionar compile 'com.google.android.gms:play-services:10.2.4'com a compilação 'com.android.support:appcompat-v7:25.3.1'.

Adicionando animated-vector-drawablee mediarouter libscorrigindo o 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'
Sandeep
fonte
9

Eu tive isso:

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 recebeu este erro: insira a descrição da imagem aqui

As soluções foram fáceis - as dependências primárias estavam todas corretas, portanto as folhas foram deixadas - quaisquer dependências de terceiros. Removido um por um até encontrar o culpado, e acaba sendo o facebook! está usando a versão 27.0.2 das bibliotecas de suporte do Android. Tentei adicionar a versão 27.1.1 do cardview, mas isso não funcionou, e a solução ainda era bastante simples.

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'
}
Sagar Patel
fonte
9

Eu enfrentei esse problema depois de atualizar para o android studio 3.4 e a versão sdk para 28.0.0. A aplicação da dependência abaixo resolveu o problema para mim.

    implementation 'com.android.support:exifinterface:28.0.0'
Shaon
fonte
8

Eu usei esses dois para resolver o meu problema depois de atualizar para o android studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
Aparajita Sinha
fonte
8

Eu já tinha o mesmo problema e consegui a solução.

Acabei de adicionar as bibliotecas que tinham a outra versão, mas com a mesma versão da minha support:appcompat.

Para o seu erro, por exemplo:

Todas as bibliotecas com.android.support devem usar exatamente a mesma especificação de versão (a mistura de versões pode causar falhas no tempo de execução). Versões encontradas 25.1.1, 24.0.0. Os exemplos incluem com.android.support:animated-vector-drawable:25.1.1 e com.android.support:mediarouter-v7:24.0.0

* A solução é compilar as versões dessas bibliotecas assim:

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

-se outra biblioteca tiver o mesmo problema e outra versão, compile-a com o seu support:appcompat versão

Isso resolveu meu problema e espero que resolva o seu.

Muitas felicidades :)

Hesham Morsy
fonte
8

Depois de pesquisar e combinar respostas, versão 2018 desta pergunta e funcionou para mim:

1) Na guia de navegação, altere-a para a visualização do projeto

2) Navegue para [YourProjectName] /. Idea / libraries /

3) Exclua todos os arquivos começando com Gradle__com_android_support_ [libraryName]

Por exemplo: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) No seu arquivo gradle, defina uma variável e use-a para substituir o número da versão, como $ {variableName}

Variável de definição:

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

Usar variável:

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

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

}
Ali Karaca
fonte
1
Esta resposta precisa de mais explicações. Um leitor pode ser levado a acreditar que deve copiar e colar todo o arquivo gradle em seu projeto. Você deve explicar por que adicionou a extensão e por que define algumas bibliotecas de suporte para a versão gplaysvcs, outras para a versão supportlib e algumas permanecem inalteradas.
jungledev
8

Muito simples com a nova versão do android studio 3.x.

Apenas copie a versão que é menor que a versão atual e adicione-a explicitamente com o mesmo número de versão da versão atual.

Exemplo

Versões encontradas 27.1.1, 27.1.0. Os exemplos incluem com.android.support:animated-vector-drawable:27.1.1 e com.android.support:exifinterface:27.1.0

Apenas copie a versão com.android.support:exifinterface:27.1.0e altere-a com.android.support:exifinterface:27.1.1para que fique igual à versão atual que você está usando e adicione-a às suas dependências de classificação da seguinte forma.

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

Nota: Quando terminar, não esqueça de clicar em Sincronizar agora, na parte superior do editor.

Maomé
fonte
7

na atualização de 2018 para este erro, adicione implementação da estrutura do projeto

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

no modo de projeto -> Bibliotecas externas , você pode encontrar o seu problema, no meu caso, estou usando a versão 28 e bibliotecas externas que encontrei com.android.support:support-media-compat-26.0.0e aqui estava o erro.

após a implementação support v13e está funcionando

Alwayss Bijoy
fonte
O sublinhado vermelho desapareceu com esta implementação.
Truong Hieu
6

Você definiu qualquer outra dependência para compilar com a versão em 24.0.0vez de 25.1.1. Defina todas as versões de dependências da mesma forma que 25.1.1.

Sneh Pandya
fonte
Atualizei minha resposta: todas as versões de suporte têm a mesma versão 25.1.1
humazed
6

Eu tive que adicionar as seguintes linhas no gradle para remover o erro

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'
Shrikant
fonte
6

Executei as tarefas ./gradlew --todos e verifiquei as dependências com uma versão diferente da versão de destino (25.3.1). Você obterá algo como isto:

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

Nesse caso, eu estava direcionado para 25.3.1 e tinha algumas dependências direcionadas para versões diferentes quando executei este comando. O truque é identificar as dependências nesta lista que estão direcionadas para versões anteriores e substituí-la importando a versão mais recente da dependência em Gradle.

Matt W
fonte
6

Eu tenho o mesmo problema, mas resolvi isso adicionando essas três linhas

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'

agora Tudo funciona perfeitamente

Hamza Rahman
fonte
6

Aqui está o meu fluxo para corrigir esse aviso

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

Para visualizar / verificar dependenciestodas as bibliotecas do seu aplicativo
Abra o terminal e execute./gradlew app:dependencies

Para visualizar o dependenciesde uma biblioteca específica em seu aplicativo, siga o tutorial aqui: - Como excluir dependências de uma dependência específica no Gradle

Espero que ajude

Phan Van Linh
fonte
5

Abra a biblioteca externa do seu projeto, você verá que alguma biblioteca ainda está usando a versão anterior, embora não tenha mencionado essa biblioteca, então minha sugestão é apenas usar a versão específica da biblioteca para aqueles que resolverão o seu problema.

Subho
fonte
5

Acabei de atualizar meu Repositório de Suporte do Android para (revisão: 44.0.0); em seguida, ferramentas Android SDK e Emulador para a versão mais recente 25.3.1 do sdk manager> Ferramentas SDK E isso resolveu o meu problema.

Ajit Thapa
fonte