Хобрук: Ваш путь к мастерству в программировании

Версии микширования Gradle 27.1.1 и 26.1.0

Я получаю сообщение об ошибке в моем build.gradle на уровне приложения, где в первой библиотеке поддержки, которую я использую, мне сообщается, что все библиотеки com.android.support должны использовать одну и ту же спецификацию версии и что найдены версии 27.1.1. и 26.0.2. В моем build.gradle на уровне приложения нет строки с использованием 26.1.0. Кроме того, все операторы compile были изменены на implementation, compileSdkVersion — 27, а targetSdkVersion — 27. Чтобы попытаться найти виновника, я запустил:

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

И получил следующий вывод:

registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)
registerResGeneratingTask is deprecated, use registerGeneratedResFolders(FileCollection)

------------------------------------------------------------
Root project
------------------------------------------------------------

No configurations

------------------------------------------------------------
Project :app
------------------------------------------------------------

debugAndroidTestCompileClasspath - Resolved configuration for compilation for variant: debugAndroidTest
+--- com.android.support.test:runner:1.0.1
|    +--- com.android.support:support-annotations:25.4.0 -> 27.1.1
|    +--- junit:junit:4.12
|    |    \--- org.hamcrest:hamcrest-core:1.3
|    \--- net.sf.kxml:kxml2:2.3.0
+--- com.android.support.test.espresso:espresso-core:3.0.1
|    +--- com.android.support.test:runner:1.0.1 (*)
|    +--- com.android.support.test:rules:1.0.1
|    |    \--- com.android.support.test:runner:1.0.1 (*)
|    +--- com.android.support.test.espresso:espresso-idling-resource:3.0.1
|    +--- com.squareup:javawriter:2.1.1
|    +--- javax.inject:javax.inject:1
|    +--- org.hamcrest:hamcrest-library:1.3
|    |    \--- org.hamcrest:hamcrest-core:1.3
|    +--- org.hamcrest:hamcrest-integration:1.3
|    |    \--- org.hamcrest:hamcrest-library:1.3 (*)
|    \--- com.google.code.findbugs:jsr305:2.0.1
+--- com.android.support:appcompat-v7:27.1.1
|    +--- com.android.support:support-annotations:27.1.1
|    +--- com.android.support:support-core-utils:27.1.1
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    \--- com.android.support:support-compat:27.1.1
|    |         +--- com.android.support:support-annotations:27.1.1
|    |         \--- android.arch.lifecycle:runtime:1.1.0
|    |              +--- android.arch.lifecycle:common:1.1.0
|    |              \--- android.arch.core:common:1.1.0
|    +--- com.android.support:support-fragment:27.1.1
|    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    +--- com.android.support:support-core-ui:27.1.1
|    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    |    \--- com.android.support:support-core-utils:27.1.1 (*)
|    |    +--- com.android.support:support-core-utils:27.1.1 (*)
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    +--- android.arch.lifecycle:livedata-core:1.1.0
|    |    |    +--- android.arch.lifecycle:common:1.1.0
|    |    |    +--- android.arch.core:common:1.1.0
|    |    |    \--- android.arch.core:runtime:1.1.0
|    |    |         \--- android.arch.core:common:1.1.0
|    |    \--- android.arch.lifecycle:viewmodel:1.1.0
|    +--- com.android.support:support-vector-drawable:27.1.1
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    \--- com.android.support:support-compat:27.1.1 (*)
|    \--- com.android.support:animated-vector-drawable:27.1.1
|         +--- com.android.support:support-vector-drawable:27.1.1 (*)
|         \--- com.android.support:support-core-ui:27.1.1 (*)
+--- com.android.support:design:27.1.1
|    +--- com.android.support:support-v4:27.1.1
|    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    +--- com.android.support:support-media-compat:27.1.1
|    |    |    +--- com.android.support:support-annotations:27.1.1
|    |    |    \--- com.android.support:support-compat:27.1.1 (*)
|    |    +--- com.android.support:support-core-utils:27.1.1 (*)
|    |    +--- com.android.support:support-core-ui:27.1.1 (*)
|    |    \--- com.android.support:support-fragment:27.1.1 (*)
|    +--- com.android.support:appcompat-v7:27.1.1 (*)
|    +--- com.android.support:recyclerview-v7:27.1.1
|    |    +--- com.android.support:support-annotations:27.1.1
|    |    +--- com.android.support:support-compat:27.1.1 (*)
|    |    \--- com.android.support:support-core-ui:27.1.1 (*)
|    \--- com.android.support:transition:27.1.1
|         +--- com.android.support:support-annotations:27.1.1
|         \--- com.android.support:support-compat:27.1.1 (*)
+--- com.android.support.constraint:constraint-layout:1.1.0
|    \--- com.android.support.constraint:constraint-layout-solver:1.1.0
+--- com.android.support:support-vector-drawable:27.1.1 (*)
+--- com.android.support:support-v4:27.1.1 (*)
+--- com.android.support:cardview-v7:27.1.1
|    \--- com.android.support:support-annotations:27.1.1
+--- com.android.support:recyclerview-v7:27.1.1 (*)
+--- com.google.android.gms:play-services-ads:15.0.0
|    +--- com.android.support:customtabs:26.1.0
|    |    +--- com.android.support:support-compat:26.1.0 -> 27.1.1 (*)
|    |    \--- com.android.support:support-annotations:26.1.0 -> 27.1.1
|    +--- com.google.android.gms:play-services-ads-base:[15.0.0] -> 15.0.0
|    +--- com.google.android.gms:play-services-ads-identifier:[15.0.0,16.0.0) -> 15.0.0
|    |    \--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0
|    |         \--- com.android.support:support-v4:26.1.0 -> 27.1.1 (*)
|    +--- com.google.android.gms:play-services-ads-lite:[15.0.0] -> 15.0.0
|    |    +--- com.google.android.gms:play-services-ads-base:[15.0.0] -> 15.0.0
|    |    \--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|    \--- com.google.android.gms:play-services-gass:[15.0.0] -> 15.0.0
|         +--- com.google.android.gms:play-services-ads-base:[15.0.0] -> 15.0.0
|         \--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
+--- com.google.firebase:firebase-core:15.0.0
|    \--- com.google.firebase:firebase-analytics:[15.0.0,16.0.0) -> 15.0.0
|         +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|         +--- com.google.android.gms:play-services-measurement-base:[15.0.0] -> 15.0.0
|         +--- com.google.android.gms:play-services-stats:[15.0.0,16.0.0) -> 15.0.0
|         |    \--- com.google.android.gms:play-services-basement:[15.0.0] -> 15.0.0 (*)
|         +--- com.google.firebase:firebase-analytics-impl:[15.0.0] -> 15.0.0
|         |    +--- com.google.android.gms:play-services-ads-identifier:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |    +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |    +--- com.google.android.gms:play-services-measurement-base:[15.0.0] -> 15.0.0
|         |    +--- com.google.android.gms:play-services-stats:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |    +--- com.google.android.gms:play-services-tasks:[15.0.0,16.0.0) -> 15.0.0
|         |    |    \--- com.google.android.gms:play-services-basement:[15.0.0] -> 15.0.0 (*)
|         |    +--- com.google.firebase:firebase-common:[15.0.0,16.0.0) -> 15.0.0
|         |    |    +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |    |    \--- com.google.android.gms:play-services-tasks:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |    \--- com.google.firebase:firebase-iid:[15.0.0] -> 15.0.0
|         |         +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |         +--- com.google.android.gms:play-services-measurement-base:[15.0.0] -> 15.0.0
|         |         +--- com.google.android.gms:play-services-stats:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |         +--- com.google.android.gms:play-services-tasks:[15.0.0,16.0.0) -> 15.0.0 (*)
|         |         \--- com.google.firebase:firebase-common:[15.0.0,16.0.0) -> 15.0.0 (*)
|         \--- com.google.firebase:firebase-common:[15.0.0,16.0.0) -> 15.0.0 (*)
+--- com.google.firebase:firebase-database:15.0.0
|    +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.android.gms:play-services-tasks:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.firebase:firebase-common:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.firebase:firebase-database-collection:[15.0.0,16.0.0) -> 15.0.0
|    |    \--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|    \--- com.google.firebase:firebase-database-connection:[15.0.0] -> 15.0.0
|         +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|         +--- com.google.firebase:firebase-analytics:[15.0.0,16.0.0) -> 15.0.0 (*)
|         \--- com.google.firebase:firebase-common:[15.0.0,16.0.0) -> 15.0.0 (*)
+--- com.google.firebase:firebase-firestore:15.0.0
|    +--- com.google.android.gms:play-services-basement:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.android.gms:play-services-tasks:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.firebase:firebase-analytics:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.firebase:firebase-common:[15.0.0,16.0.0) -> 15.0.0 (*)
|    +--- com.google.firebase:firebase-database-collection:[15.0.0,16.0.0) -> 15.0.0 (*)
|    \--- com.squareup.okhttp:okhttp:2.7.2
|         \--- com.squareup.okio:okio:1.6.0
+--- com.aurelhubert:ahbottomnavigation:2.1.0
|    \--- com.android.support:design:25.3.1 -> 27.1.1 (*)
+--- com.github.bumptech.glide:glide:4.5.0
|    +--- com.github.bumptech.glide:gifdecoder:4.5.0
|    |    \--- com.android.support:support-annotations:27.0.2 -> 27.1.1
|    +--- com.github.bumptech.glide:disklrucache:4.5.0
|    +--- com.github.bumptech.glide:annotations:4.5.0
|    \--- com.android.support:support-fragment:27.0.2 -> 27.1.1 (*)
+--- de.hdodenhof:circleimageview:2.2.0
+--- me.tankery.lib:circularSeekBar:1.1.4
+--- com.github.fiskurgit:ChipCloud:3.0.5
|    \--- com.android.support:appcompat-v7:25.1.1 -> 27.1.1 (*)
\--- com.google.android:flexbox:0.3.2

(*) - dependencies omitted (listed previously)

Здесь показано, что com.android.support:customtabs:26.1.0 в com.google.android.gms:play-services-ads:15.0.0 использует 26.1.0, но в развертке у него есть -> 27.1.1 (*), что, как я предполагаю, означает, что вместо этого используется 27.1.1? Я получаю то же самое от com.android.support:support-v4:26.1.0 в игровых сервисах. Что может быть причиной этой ошибки?

24.04.2018

Ответы:


1

Линия

+--- com.android.support:customtabs:26.1.0

не имеет -> 27.1.1 в конце, что означает, что он не обновляется автоматически до 27.1.1 (он отображается под транзитивными зависимостями, поскольку эти транзитивные зависимости обновляются автоматически).

Вы можете заставить его использовать версию 27.1.1, вручную добавив эту зависимость в файл build.gradle:

implementation 'com.android.support:customtabs:27.1.1'
24.04.2018

2

Вы можете найти несоответствующий номер версии (26.1.0) в файле app.iml и добавить эти зависимости в build.gradle на уровне приложения, заставив использовать последнюю версию (в данном случае 27.1.1)

06.06.2018
Новые материалы

Аргументы прогрессивного улучшения почти всегда упускают суть
В наши дни в кругах веб-разработчиков много болтают о Progressive Enhancement — PE, но на самом деле почти все аргументы с обеих сторон упускают самую фундаментальную причину, по которой PE..

Введение в Джанго Фреймворк
Схема «работать умно, а не усердно» В этой и последующих статьях я познакомлю вас с тем, что такое фреймворк Django и как создать свое первое приложение с помощью простых и понятных шагов, а..

Настольный ПК как «одно кольцо, чтобы править всеми» домашних компьютеров
Вид после 9 месяцев использования С настольных компьютеров все началось, но в какой-то момент они стали «серверами», и мы все перешли на ноутбуки. В прошлом году я столкнулся с идеей настольных..

Расширенные методы безопасности для VueJS: реализация аутентификации без пароля
Руководство, которое поможет вам создавать безопасные приложения в долгосрочной перспективе Безопасность приложений часто упускается из виду в процессе разработки, потому что основная..

стройный-i18следующий
Представляем стройную оболочку для i18next. Эта библиотека, основанная на i18next, заключает экземпляр i18next в хранилище svelte и отслеживает события i18next, такие как languageChanged,..

Обзор 20 основных и современных методов работы с массивами в JavaScript
Вы знаете их всех? В этом коротком посте я покажу сводку методов, доступных в JavaScript для работы с массивами. Я надеюсь, что вы найдете это полезным! В конце поста вы найдете ссылку на..

Да, но я чувствую необходимость указать, что это или не единственные два.
Да, но я чувствую необходимость указать, что это или не единственные два. Обучение с подкреплением (в качестве примера) также является важным.