Все библиотеки 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'
}

добавьте это к своим подпроектам 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, пожалуйста, дайте мне знать.


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


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одного достаточно.


Большое спасибо, это сработало, но какова роль «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"


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


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

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'

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и работает


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

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'

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.


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

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


5

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.