Усі бібліотеки com.android.support повинні використовувати точно таку ж специфікацію версії


788

Після оновлення до андроїд-студії 2.3 я отримав це повідомлення про помилку. Я знаю, що це лише підказка, оскільки програма працює нормально, але це дуже дивно.

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

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

мій градул:

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.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-dravable: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
Sneh Pandya

2
@humazed noob питання, де я запускаю команду в Android Studio?
Хайкал Нашуха

1
в терміналі, але спочатку спробуйте випробувати річ з послугами play-services
гумав

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 не працює, спасибі
Одайм

10
в / Файли проекту / Мій проект / .idea / бібліотеки є кілька файлів підтримки з різною версією. Тепер, як я можу знати, який модуль або залежність використовує це?
Satpal Yadav

2
@SatpalYadav Я шукав версію, яка не відповідає найновішій доступній (я використовую у своєму додатку). Наприклад, я використовую підтримку: design: 25.3.1, але в діалогах матеріалів використовується підтримка-v13: 25.1.1. Тому я додав support-v13: 25.3.1 і помилка зникає.
хардісім

1
Це найкраще рішення для мене поки що, але як я можу змінити нові лібси?
Матеуш Кафловський

149

У всіх випадках, не тільки для цих версій або бібліотек:

Зверніть увагу на невелике інформаційне вікно, яке щось говорить про помилку, воно містить приклади, які вам потрібно змінити та додати .

В цьому випадку:

Знайдено версії 25.1.1, 24.0.0. Приклади включають com.android.support:animated-vector-dravable:25.1.1 та com.android.support:mediarouter-v7:24.0.0

Ваша

com.android.support:animated-vector-dravable: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-dravable: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-dravable:28.0.0 "", і "імплементацію" com.android.support:support-media-compat:28.0.0 '", але" реалізацію " com.android.support:appcompat-v7:28.0.0 '"все ще підкреслено червоним
AAEM

@AAEM, якщо ви помістите курсор у рядок помилок, він покаже, які залежності ви повинні додати далі. Додайте всі залежності до тієї ж версії та синхронізуйте файл Gradle. Якщо вона знову виявиться помилкою, виконайте кроки ще раз, поки не буде помилки.
Adarsh ​​Vijayan P

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
Це врятувало мені день. Але цей розвиток андроїдів стає ще більш фрагментарним з кожним тихом. Людям потрібно справді перевірити кожну бібліотеку підтримки, перш ніж розгорнути її. У нас не завжди є час, щоб пройти кожен новий реліз підтримки, оскільки ми хочемо зосередитись на створенні нашої продукції, а не на всьому цьому. Це засмучує завжди
larrytech

1
@ThinkTwiceCodeOnce Ви можете зайти сюди, щоб дізнатись більше про groovy та його плагіни inteliji
ezzou

1
Ти людина, яка рятує життя. На це слід звертати увагу багато разів!
imin

1
це повинно бути рішення ... upvoted
Ast

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 А як нам використовувати рендериф, якщо ми його просто відключили?
dor506

3
схоже, що моя проблема пов’язана і з рендериптом, але що робити, якщо мені потрібен рендерскрипт для чогось іншого, а не для користувацьких вкладок?
HendraWD

46

А) Виконати gradle dependenciesабо./gradlew dependencies

B) Подивіться на своє дерево і з’ясуйте, яка з ваших залежностей визначає іншу версію бібліотеки підтримки для залежності, яку ви не контролюєте.

Я не розумів, що це попередження також з’являється, якщо залежність повністю не використовується безпосередньо вашим власним кодом. У моєму випадку 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-dravable:25.1.1 та com.android.support:mediarouter-v7:24.0.0

... це ще простіше, якщо ви вкажіть якісь греппові виділення для нижньої версії, оскільки gradle dependenciesможуть бути досить багатослівними:

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

1
З вашого пояснення я розумію, що XXX -> YYY (*) означає, що XXX перекрито YYY, що добре знати
Меркурій

Буквально єдина правильна відповідь.
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
Лише одна примітка, будь ласка: Як було запропоновано у посиланні вище, ми повинні визначити цей тип змінних у ТОПЛІВ РОЗВИТКУ РОЗВИТКУ РОЗВИТКУ ще раз спасибі)
Hovanes Mosoyan,

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"
Wessam El Mahdy,

19

Як ви вже бачили всі відповіді та коментарі вище, але ця відповідь полягає в тому, щоб очистити те, що новому розробнику може не легко отримати.

./gradlew -q залежність додаток: залежності - компіляція конфігурації

Вищенаведений рядок врятує ваше життя без сумнівів, але як отримати точну точку від результату вищевказаної лінії.

Коли ви отримуєте діаграму або список усіх залежностей з вищевказаної команди, вам доведеться шукати суперечливий номер версії, який ви отримуєте у своєму коді. дивіться нижче зображення.

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

на наведеному вище зображенні ви бачите, що 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
Дякую! З новішими версіями андроїд-студії його слід переключити на реалізацію замість компіляції
Avi Parshan

Так, ви праві @AviParshan, ми можемо використовувати компіляцію або api. Залежності, що з'являються в конфігураціях api, будуть транзитивно піддаватися споживачам бібліотеки і як такі з'являться на компілюваному класі споживачів. З іншого боку, залежність, виявлена ​​в конфігурації реалізації, не буде піддаватися споживачам, а отже, не просочиться до компіляційного класу споживачів.
anoopbryan2

використовувати ./gradlew -q залежностей програми: залежностей --configuration реалізація
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 виділяє новіші версії ліб, які доступні, але ці правила не інтерпретують.
Мануель

12

Використовуйте підтримку-v13 замість support-v4

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

У мене
виникають

Точна помилка, як і вище: -> всі бібліотеки 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-dravable:25.3.0" та "com.android.support:mediarouter-v7:24.0.0"

Цей приклад включає: "com.android.support:animated-vector-dravable: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'
}

і отримала цю помилку: введіть тут опис зображення

Рішення було легко - первинні залежності були всі правильні, тому залишаються - будь-які сторонні залежності. Видаляли по черзі, поки не знайшли винуватця, і виявляється у фейсбуці! його використовується версія 27.0.2 бібліотек підтримки Android. Я спробував додати карту версії 27.1.1, але це не спрацювало, і рішення все ще було досить простим.

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

Я зіткнувся з цією проблемою після оновлення до андроїд-студії 3.4 та версії sdk до 28.0.0. Застосування нижче залежності вирішило проблему для мене.

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

8

Я використав ці два, щоб вирішити свою проблему після оновлення до андроїд-студії 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-dravable: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] /. Ідея / бібліотеки /

3) Видаліть усі файли, починаючи з Gradle__com_android_support_ [libraryName]

Напр .: Gradle__com_android_support_animated_vector_dravable_26_0_0.xml

4) У вашому файлі gradle визначте змінну і використовуйте її для заміни номера версії типу $ { }

Змінна 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-dravable: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і це працює


Червоне підкреслення зникло з цією реалізацією.
Truong Hieu

6

Ви визначили будь-яку іншу залежність для компіляції із версією 24.0.0замість 25.1.1. Будь ласка, встановіть всі версії залежностей такими, як 25.1.1.


Я оновив свою відповідь, всі версії підтримки мають ту саму версію 25.1.1
гумав

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 - всі і перевіряв, чи не залежать вони від іншої версії (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> інструменти SDK І це вирішило мою проблему.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.