Все библиотеки com.android.support должны использовать одинаковую спецификацию версии

788

После обновления до андроид студии 2.3 я получил это сообщение об ошибке. Я знаю, что это просто подсказка, поскольку приложение работает нормально, но это действительно странно.

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 25.1.1, 24.0.0. Примеры включают com.android.support:animated-vector-drawable:25.1.1 и com.android.support:mediarouter-v7:24.0.0

введите описание изображения здесь

мой 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
источник
добавьте это к своим подпроектам projectBuild.Gradle {project.configurations.all {resolutionStrategy.eachDependency {details -> if (details.requested.group == 'com.android.support' &&! details.requested.name.contains ('multidex) ')) {details.useVersion "26. +"}}}}
Сунил Чаудхари

Ответы:

906

Вы можете решить эту проблему с помощью одного из следующих решений:

Обновить:

Начиная с Android Studio 3.0, это становится намного проще, так как теперь он показывает более полезный совет, поэтому нам нужно только следовать этому совету.
например: 1]

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 27.0.2, 26.1.0. Примеры включают com.android.support:animated-vector-drawable:27.0.2 и com.android.support:customtabs:26.1.0

Существуют некоторые комбинации библиотек или инструментов и библиотек, которые несовместимы или могут привести к ошибкам. Одной из таких несовместимостей является компиляция с версией библиотек поддержки Android, которая не является последней версией (или, в частности, версией ниже, чем ваша targetSdkVersion.)

Решение:
Добавьте явно библиотеку со старой версией, но с новым номером версии.
в моем случае, com.android.support:customtabs:26.1.0поэтому мне нужно добавить:

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

т.е.: взять библиотеку из второго элемента и реализовать ее с номером версии из первого.

Примечание: не забудьте нажать синхронизацию сейчас, чтобы gradle мог перестроить граф зависимостей и посмотреть, есть ли еще конфликты.

Объяснение:
вы можете быть смущены сообщением об ошибке, так как не используйте, customtabsтак как у меня конфликт !!
ну ... вы не использовали его напрямую, но одна из ваших библиотек использует внутреннюю старую версию customtabs, поэтому вам нужно запросить ее напрямую.

если вам интересно узнать, какая из ваших библиотек отвечает за старую версию, и, возможно, попросите автора обновить свою библиотеку, запустите отчет о зависимостях Gradle, посмотрите старый ответ, чтобы узнать как.

Обратите внимание на это


Старый ответ:

вдохновленный ответом CommonsWare :

Запустите отчет о зависимостях Gradle, чтобы увидеть, каково ваше полное дерево зависимостей.

Оттуда вы увидите, какая из ваших библиотек запрашивает другую версию библиотек поддержки Android. За то, что он просит, вы можете запросить его напрямую с версией 25.2.0 или использовать другие подходы Gradle для разрешения конфликтов, чтобы получить те же версии.


Обновить:

Начиная с версии плагина Gradle: 3.0 compileбыл заменен implementationили apiпосмотрите этот ответ на разницу.

следовательно используйте вместо:

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

или для windows cmd:

gradlew -q dependencies app:dependencies --configuration debugAndroidTestCompileClasspath

и искать конфликтующую версию.

Для меня ошибка исчезла после удаления com.google.android.gms:play-services:10.2.0

И только включить, com.google.android.gms:play-services-location:10.2.0и так com.google.android.gms:play-services-maps:10.2.0как они являются единственными двумя игровыми сервисами, которые я использую.

Я думаю, что они gms:play-servicesзависят от некоторых старых компонентов библиотеки поддержки, поэтому нам нужно добавить их явно самим.


для AS 3.0 старше.

Запустить:

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

Пример:

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

если кто-то знает лучший способ в новом плагине Gradle, пожалуйста, дайте мне знать.

humazed
источник
3
com.google.android.gms:play-services:10.2.0поддерживает SDK 14 и выше, если вы хотите использовать ниже SDK 14, вам нужно использовать версию , 10.0.1как указано в stackoverflow.com/a/42315590/6248491
Сне Pandya
2
@humazed noob вопрос, где я могу запустить команду в Android Studio?
Хайкал Нашуха
1
в терминале, но сначала попробуйте попробовать сервис play-services
humazed
1
Я единственный, кто думает, что это безумие? Я просто хочу admob и facebook, и они отказываются работать вместе ...
Jay
3
Может быть полезно указать, что examples includeтекст в сообщении об ошибке показывает фактические примеры из вашего собственного проекта, а не расплывчатые общие примеры типа проблемы. Возьмите библиотеку из второго элемента и внедрите ее с номером версии из первого.
Бенджамин Кершнер
203
  1. Перейдите в project/.idea/librariesпапку в вашей файловой системе и посмотрите, какие библиотеки отличаются.
  2. Вам придется вручную включить эти библиотеки с одинаковой версией в ваш build.gradleфайл.
  3. Затем синхронизируйте ваш проект.

Например:

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

// Wrong library version found on 1st point
compile 'com.android.support:customtabs:25.2.0'
Жоау Пауло Пайва
источник
Хорошая точка зрения. Я никогда не думал о том, чтобы посмотреть, какой из них на самом деле был неправильным. : S Спасибо!
Тобиас Райх
работает, когда метод автоматического разрешения gradle не работает, спасибо
Odaym
10
в / Project Files / Мой проект / .idea / библиотеки есть несколько файлов поддержки с разными версиями. Теперь, как я узнаю, какой модуль или зависимость использует это?
Сатпал Ядав
2
@SatpalYadav Я искал версию, не соответствующую последней доступной версии (я использую в своем приложении). Например, я использую support: design: 25.3.1, но диалоги материалов используют support-v13: 25.1.1. Поэтому я добавил support-v13: 25.3.1 и ошибка исчезла.
Hardysim
1
Это лучшее решение для меня, но как я могу переопределить новые библиотеки?
Матеуш Кафловски
149

Для всех случаев, а не только для этих версий или библиотек:

Обратите внимание на небольшое информационное окно, которое говорит что-то об ошибке, оно говорит примеры, которые вы должны изменить и добавить .

В этом случае:

Найдено версии 25.1.1, 24.0.0. Примеры включают com.android.support:animated-vector-drawable:25.1.1 и com.android.support:mediarouter-v7:24.0.0

Ваш

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

это версия 25.1.1 , а ваша

com.android.support:mediarouter-v7:24.0.0

это версия 24.0.0 , поэтому вы должны добавить посредник с той же версией:

com.android.support:mediarouter-v7:25.1.1

И делайте это для каждого примера, о котором говорит маленькое информационное окно, в этом случае все библиотеки, которые не имеют версии 25.1.1.

Вы должны синхронизировать gradle после того, как вы исправите указанную библиотеку, чтобы увидеть следующую библиотеку и пакет, который вы должны изменить.

ВАЖНЫЙ:

Если вы явно не используете одну или несколько указанных библиотек и она выдает ошибку, это означает, что она используется внутри другой библиотеки, в любом случае явно скомпилируйте ее.

Вы также можете использовать другой метод, чтобы увидеть разницу версий всех библиотек, которые вы на самом деле компилируете (например, запустить отчет о зависимостях gradle или перейти к файлам ваших библиотек), реальная цель - скомпилировать все библиотеки, которые вы используете с та же версия .

Брэндон Самудио
источник
1
спасибо огромное, не могли бы вы объяснить, что support:mediarouterименно делает?
mrid
1
Я думаю, что это то, на что вы указали, что большинство из нас переусердствовали. И т. Е. «Обратите внимание на небольшое информационное окно, в котором говорится об ошибке ....». Спасибо, теперь это дает мне лучшее понимание того, что на самом деле происходит.
Yo Apps
103

Лучший способ решить эту проблему - реализовать все «com.android.support: ...», предложенные Android Studio.

(Не имеет значения, какие версии поддержки вы используете - 27.1.1, 28.0.0 и т. Д.)

Поместите курсор на строку ошибки, например

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

Android Studio подскажет, какая версия com.android.support: ... отличается от версии com.android.support:appcompat-v7:28.0.0.

пример

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 28.0.0, 27.1.0, 27.0.2. Примеры включают com.android.support:animated-vector-drawable:28.0.0 и com.android.support:exifinterface:27.1.0

Так что добавь com.android.support:animated-vector-drawable:28.0.0 & com.android.support:exifinterface:28.0.0. Теперь синхронизируйте файл Gradle.

Один за другим пытайтесь реализовать все предложенные «com.android.support: ...», пока в этой строке не будет ошибки implementation 'com.android.support:appcompat-v7:28.0.0'

В моем случае я добавил

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'

Все эти зависимости могут отличаться для вас.

Адарш Виджаян П
источник
я вручную добавил и «реализацию» com.android.support:animated-vector-drawable:28.0.0 »и« реализацию »com.android.support:support-media-compat:28.0.0», но «реализацию» com.android.support:appcompat-v7:28.0.0 "по - прежнему подчеркивается красным
ААЭЙ
@AAEM, если вы поместите курсор на строку ошибки, она покажет, какие зависимости вы должны добавить дальше. Пожалуйста, добавьте все зависимости в одну версию и синхронизируйте файл Gradle. Если он снова показывает ошибку, следуйте инструкциям еще раз, пока ошибки не будет.
Адарш Виджаян П
100

Добавьте это в самый конец вашего build.gradle (Модуль: приложение):

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

   }
}

Убедитесь, что вы заменили «25 .3.1» версией библиотеки поддержки Android, которую вы хотите использовать для всех зависимостей, она не должна быть ниже, чем ваша версия SDK для компиляции.

чем повторно синхронизировать Gradle

ezzou
источник
3
Это то, что мне было нужно, одна из моих зависимостей как-то вытягивала 27.0.1, даже когда я указывал меньшую версию на верхнем уровне. Из любопытства, почему вы исключаете «мультидекс»?
луч
4
Это спасло день для меня. Но эта разработка для Android становится все более фрагментированной с каждым днем. Люди должны действительно проверять каждую библиотеку поддержки перед ее развертыванием. У нас не всегда есть время для прохождения каждого нового релиза поддержки, потому что мы хотим сосредоточиться на создании наших продуктов, а не на всем этом. Это всегда расстраивает
larrytech
1
@ThinkTwiceCodeOnce Вы можете зайти сюда, чтобы узнать больше о groovy и его подключаемых модулях: jetbrains.com/help/idea/getting-started-with-groovy.html
ezzou
1
Ты спасатель жизни. Это должно быть проголосовано много раз!
Имин
1
это должно быть решение ... Проголосовало
Аст
54

У меня была точно такая же проблема после обновления до Android Studio 2.3

Добавление этой строки в зависимости решило мою проблему:

compile 'com.android.support:customtabs:25.2.0'
Берат Баран Чевик
источник
2
У меня была точно такая же проблема после обновления до Android Studio 2.3
Plugie
1
Для тех, кто использует RenderScript, я установил renderscriptSupportModeEnabled falseэто в false. И добавил компиляцию 'com.android.support:customtabs:25.2.0'и ошибка ушла.
Закон
1
@LawGimenez И как мы должны использовать Renderscript, если мы просто отключили его?
dor506
3
похоже, моя проблема тоже из-за Renderscript, но что, если мне нужен Renderscript для чего-то другого, а не для пользовательских таблиц?
HendraWD
46

А) Беги gradle dependencies или./gradlew dependencies

Б) Посмотрите на свое дерево и выясните, какая из ваших зависимостей указывает другую версию библиотеки поддержки для зависимости, которую вы не контролируете.

Я не осознавал, что это предупреждение также отображается, если зависимость полностью не используется непосредственно вашим собственным кодом. В моем случае Facebook указывает некоторые библиотеки поддержки, которые я не использовал, вы можете видеть ниже, большинство этих зависимостей были переопределены моей собственной спецификацией 25.2.0, обозначенной символами -> XXX (*) . Вид карты и пользовательские вкладки не были изменены никем, поэтому мне нужно запросить 25.2.0 для них, даже если я ими не пользуюсь.

+--- 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 (*)

Если Gradle уже предупредил вас и привел примеры ...

Примеры включают com.android.support:animated-vector-drawable:25.1.1 и com.android.support:mediarouter-v7:24.0.0

... это даже проще, если вы добавите некоторую подсветку grep для более низкой версии, поскольку она gradle dependenciesможет быть довольно многословной:

./gradlew dependencies | grep --color -E 'com.android.support:mediarouter-v7|$'
Дэниел Уилсон
источник
1
Из вашего объяснения я понимаю, что XXX -> YYY (*) означает, что XXX переопределяется YYY, это полезно знать
Mercury
Буквально единственный верный ответ.
Stef
32

Используйте переменные : если вы сделаете что-то подобное, вам будет проще убедиться, что вы используете одну и ту же версию со всеми библиотеками.

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

Дополнительную информацию о том, как Google предлагает вам управлять этими версиями, можно найти в этой статье: https://developer.android.com/studio/build/index.html#top-level

Даниэль Ф
источник
спасибо Дорогой Даниэль Ф, я думаю, что это лучший способ избежать проблемы смешивания версий.
Ованес Мосоян
2
Пожалуйста, только одно примечание: как предложено в ссылке выше, мы должны определить переменные этого типа в файле GRADLE TOP LEVEL, еще раз спасибо)
Ованес Мосоян,
25

просто добавьте это:

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

Updated для новых версий SDK

compile 'com.android.support:mediarouter-v7:28.0.0-alpha3'
Мохен мохтари
источник
Это не решает проблему, что старая библиотека содержит старый SDK.
CoolMind
19

Если та же ошибка включена appcompat

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

тогда добавление designрешило это.

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

Для меня добавление

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

был в том числе appcompat-v7:23.1.1в

.idea / библиотеки

без vlc, appcompatодного достаточно.

Prabs
источник
Большое спасибо, это сработало, но какова роль «com.android.support:design:27.0.1»
Вессам Эль Махди
19

Как вы уже видели все ответы и комментарии выше, но этот ответ должен прояснить то, что новый разработчик может не получить легко.

./gradlew -q приложение зависимостей: зависимости --configuration compile

Вышеуказанная строка спасет вашу жизнь без сомнения, но как получить точную точку от результата вышеупомянутой линии.

Когда вы получаете всю диаграмму зависимостей или список из вышеприведенной команды, вам нужно искать конфликтующий номер версии, который вы получаете в своем коде. пожалуйста, смотрите изображение ниже.

введите описание изображения здесь

На изображении выше вы можете видеть, что 23.4.0 создает проблему, но мы не смогли найти ее в нашем файле Gradle. Так что теперь этот номер версии (23.4.0) спасет нас. Когда у нас будет этот номер, мы найдем его в результате выполнения команды выше и напрямую импортируем эту зависимость непосредственно в наш файл Gradle. Пожалуйста, смотрите изображение ниже, чтобы получить четкое представление.

Вы можете ясно видеть, что com.android.support:cardview-v7:23.4.0 и com.android.support:customtabs:23.4.0 используют версию, которая создает проблему. Теперь просто скопируйте эти строки из списка зависимостей и явно используйте их в нашем файле Gradle, но с обновленной ссылкой на версию

реализация "com.android.support:cardview-v7:26.1.0" реализация "com.android.support:customtabs:26.1.0"

anoopbryan2
источник
1
Спасибо! В новых версиях android studio его следует переключать на реализацию вместо компиляции
Avi Parshan
Да, вы правы @AviParshan, мы можем использовать компиляцию или API. Зависимости, появляющиеся в конфигурациях API, будут транзитивно предоставляться потребителям библиотеки и, как таковые, будут появляться на пути к классам компиляции потребителей. Зависимости, обнаруженные в конфигурации реализации, с другой стороны, не будут видны потребителям и, следовательно, не попадут в путь к классам компиляции потребителей.
anoopbryan2
используйте ./gradlew -q приложение зависимостей: зависимости
Sumit
15

Другой способ разрешить конфликты - просто установить правильную версию для всех зависимостей, например так:

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
источник
Правила разрешения зависимости трудно поддерживать. Они должны поддерживаться вручную для номера версии и любых изменений в реализованных библиотеках поддержки. Например, Android Studio выделяет более новые доступные версии lib, но не интерпретирует эти правила.
Мануэль
12

Используйте support-v13 вместо support-v4

compile 'com.android.support:support-v13:25.2.0'
Мехмет Ханоглу
источник
У меня проблема с этим: compile 'com.android.support:recyclerview-v7:25.2.0'
Crime_Master_GoGo
Точно такая же ошибка, как указано выше: -> все библиотеки com.android.support должны использовать точно такую ​​же спецификацию версий. Recyclerview
Crime_Master_GoGo
@Googli, пожалуйста, напишите compileSdkVersion , buildToolsVersion и зависимости, которые я использовал. Нет проблемcompile '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'
Мехмет Ханоглу
12

добавить их в зависимости уровня приложения

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

Моя проблема похожа на вашу. Здесь существует ошибка!

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

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 25.3.0, 24.0.0. Примеры включают в себя «com.android.support:animated-vector-drawable:25.3.0» и «com.android.support:mediarouter-v7:24.0.0».

Просмотр этих примеров включает в себя «com.android.support:animated-vector-drawable:25.3.0» и «com.android.support:mediarouter-v7:24.0.0».

просто добавьте эти коды в зависимости, убедитесь, что версии совпадают.

compile 'com.android.support:animated-vector-drawable:25.3.0'
compile 'com.android.support:mediarouter-v7:25.3.0'
Янбин Ху
источник
9

Я получил ту же ошибку после добавления compile 'com.google.android.gms:play-services:10.2.4'с компиляцией 'com.android.support:appcompat-v7:25.3.1'.

Добавление animated-vector-drawableи mediarouter libsисправление проблемы.

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
источник
9

У меня было это:

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

и получил эту ошибку: введите описание изображения здесь

Решения были просты - все основные зависимости были правильными, но все же оставались - любые сторонние зависимости. Удален один за другим, пока не найден виновник, и оказывается Facebook! он использует версию 27.0.2 библиотек поддержки Android. Я попытался добавить версию 27.1.1 cardview, но это не сработало, и решение все еще было достаточно простым.

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

Я столкнулся с этой проблемой после обновления до Android Studio 3.4 и SDK версии до 28.0.0. Применение ниже зависимости решило проблему для меня.

    implementation 'com.android.support:exifinterface:28.0.0'
Shaon
источник
8

Я использовал эти два, чтобы решить мою проблему после обновления до Android Studio 2.3

compile 'com.android.support:animated-vector-drawable:25.0.0'
compile 'com.android.support:mediarouter-v7:25.0.0'
Апараджита Синха
источник
8

У меня была такая же проблема раньше, и я получил решение для нее.

Я только добавил библиотеки, которые имели другую версию, но с той же самой моей версией support:appcompat.

Для вашей ошибки, например:

Все библиотеки com.android.support должны использовать одну и ту же спецификацию версий (смешивание версий может привести к сбоям во время выполнения). Найдено версии 25.1.1, 24.0.0. Примеры включают com.android.support:animated-vector-drawable:25.1.1 и com.android.support:mediarouter-v7:24.0.0

* Решение состоит в том, чтобы скомпилировать версии этих библиотек следующим образом:

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

-Если другая библиотека имела такую ​​же проблему и имела другую версию, просто скомпилируйте ее с вашим support:appcompat версией

Это решило мою проблему, и я надеюсь, что это решит вашу.

С наилучшими пожеланиями :)

Хешам Морси
источник
8

После поиска и объединения ответов, у 2018 года появилась версия этого вопроса и у меня сработало:

1) На вкладке навигации измените его на вид проекта

2) Перейдите к [YourProjectName] /. Idea / library /

3) Удалите все файлы, начиная с Gradle__com_android_support_ [имя_библиотеки]

Например: Gradle__com_android_support_animated_vector_drawable_26_0_0.xml

4) В вашем файле Gradle определите переменную и используйте ее для замены номера версии, например, $ {variableName}

Переменная Def:

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

Используйте переменную:

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

пример 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
Этот ответ требует большего объяснения. Читатель может быть уверен, что ему следует скопировать и вставить весь файл Gradle в свой проект. Вы должны объяснить, почему вы добавили расширение и почему вы установили некоторые библиотеки поддержки для версии gplaysvcs, другие для версии supportlib, а некоторые не изменились.
jungledev
8

Очень просто с новой версией андроид студии 3.x.

Просто скопируйте версию, которая меньше текущей версии, и добавьте ее явно с тем же номером версии, что и текущая версия.

пример

Найдено версии 27.1.1, 27.1.0. Примеры включают com.android.support:animated-vector-drawable:27.1.1 и com.android.support:exifinterface:27.1.0

Просто скопируйте версию com.android.support:exifinterface:27.1.0и измените ее com.android.support:exifinterface:27.1.1так, чтобы она стала равной текущей версии, которую вы используете, и добавьте ее в зависимости от gradle следующим образом.

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

Примечание. По завершении не забудьте нажать « Синхронизировать» вверху редактора.

Мухаммед
источник
7

в обновлении 2018 для этой ошибки добавить реализацию из структуры проекта

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

в режиме проекта -> Внешние библиотеки вы можете найти свою проблему, в моем случае я использую версию 28 и внешние библиотеки, которые я нашел com.android.support:support-media-compat-26.0.0 и здесь была ошибка.

после внедрения support v13и работает

Alwayss Bijoy
источник
Красное подчеркивание исчезло с этой реализацией.
Чыонг Хиеу
6

Вы определили любую другую зависимость для компиляции с версией 24.0.0вместо 25.1.1. Пожалуйста, установите все версии зависимостей так же, как 25.1.1.

Снех Пандя
источник
Я обновил свой ответ, все версии поддержки имеют одинаковую версию 25.1.1
humazed
6

Мне пришлось добавить следующие строки в Gradle, чтобы удалить ошибку

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
источник
6

Я запустил задачи ./gradlew --all и проверил наличие зависимостей, отличных от целевой версии (25.3.1). Вы получите что-то вроде этого:

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

В этом случае я использовал таргетинг на 25.3.1 и имел некоторые зависимости, ориентированные на разные версии, когда я запускал эту команду. Хитрость заключается в том, чтобы определить зависимости в этом списке, которые нацелены на предыдущие версии, и переопределить это, импортировав самую последнюю версию зависимости в Gradle.

Мэтт W
источник
6

У меня та же проблема, но я решил это, добавив эти три линии

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'

Теперь все работает отлично

Хамза Рахман
источник
6

Вот мой поток, чтобы исправить это предупреждение

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

Для просмотра / проверки dependenciesвсей библиотеки в вашем приложении
Откройте терминал и запустите./gradlew app:dependencies

Чтобы просмотреть dependenciesконкретную библиотеку в вашем приложении, следуйте инструкциям здесь: - Как исключить зависимости конкретной зависимости в Gradle

Надеюсь, это поможет

Фан Ван Линь
источник
5

Откройте внешнюю библиотеку вашего проекта, вы увидите, что какая-то библиотека все еще использует предыдущую версию, хотя вы не упомянули эту библиотеку, поэтому я предлагаю просто использовать конкретную версию библиотеки для тех, кто решит вашу проблему.

Subho
источник
5

Я просто обновляю свой репозиторий поддержки Android до (ревизия: 44.0.0); затем инструменты Android SDK и эмулятор до последней версии 25.3.1 из sdk manager> инструменты SDK И это решило мою проблему.

Аджит Тхапа
источник