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

Когда я обновил свою студию Android сегодня с версии 2.2.3 до 2.3, я неожиданно получил эту ошибку в своем build.gradle на первой строке компиляции в зависимостях

(Не имеет значения, какая зависимость будет на первом месте, но всегда будет давать мне эту ошибку):

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

Я просмотрел весь свой проект и не могу найти использование версий 24.0.0 (я посмотрел с помощью Ctrl + shift + F для поиска по всему проекту)

это мой build.gradle:

android {
    compileSdkVersion 25
    buildToolsVersion '25.0.2'
    useLibrary 'org.apache.http.legacy'

    defaultConfig {
        minSdkVersion 16
        targetSdkVersion 25
        versionName "1.0"
        versionCode 1
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        }
        debug {
            minifyEnabled true
            shrinkResources true
        }
    }
    dexOptions {
        javaMaxHeapSize "4g"
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:25.2.0'
    compile 'com.google.android.gms:play-services:+'
    compile 'com.squareup:otto:1.3.8'
    compile 'com.mcxiaoke.volley:library-aar:1.0.0'
    compile 'com.android.support:multidex:1.0.1'
}

Ответ 1

Я просмотрел весь проект и не могу найти использование версий 24.0.0

Он поступает как транзитивная зависимость от одной из ваших других зависимостей.

Во-первых, устраните другие проблемы в вашем файле build.gradle, так как они могут также устранить эту проблему:

  • Не используйте + для версии библиотеки. Используйте определенную версию.

  • Не используйте play-services. Используйте конкретные зависимости для определенных частей SDK Play Services, которые вы хотите. play-services включает в себя все сервисы Play Services, что делает ваше приложение намного больше, чем нужно, и замедляет время сборки.

  • Замените com.mcxiaoke.volley официальным артефактом Воли (com.android.volley:volley:1.0.0)

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

Ответ 2

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

Не просто добавляйте транзитивные зависимости в качестве прямых зависимостей, чтобы форсировать их версии; это семантически неправильно (если вы когда-либо удаляете зависимость, которая ввела транзитивную зависимость, теперь у вас есть остаточная зависимость, которую вы фактически не используете).

Выполните следующие действия:

В корневом каталоге build.gradle у вас уже есть

ext {
    supportlib_version = '25.2.0'
    ...
}

и использовать это свойство в своем, например. app/build.gradle как

dependencies {
    compile "com.android.support:appcompat-v7:$supportlib_version"
    compile "com.android.support:recyclerview-v7:$supportlib_version"
    ...
}

Теперь, в вашем корневом каталоге build.gradle,

subprojects {
    project.configurations.all {
        resolutionStrategy.eachDependency { details ->
            if (details.requested.group == 'com.android.support'
                    && !details.requested.name.contains('multidex') ) {
                details.useVersion "$supportlib_version"
            }
        }
    }
}

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

Ответ 3

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

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

Вы не можете видеть использование, потому что его использование, вероятно, является внутренним для другой библиотеки (например, сервисы google play или squareup).

Просто скомпилируйте все примеры, о которых говорит небольшое информационное окно, в вашем случае:

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

Ваш

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

- версия 25.2.0 и

com.android.support:mediarouter-v7:24.0.0

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

com.android.support:mediarouter-v7:25.2.0

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

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

Ответ 4

То же самое случилось со мной. То, что я только что сделал, добавил эти две строки

compile 'com.android.support:animated-vector-drawable:25.2.0'
compile 'com.android.support:customtabs:25.2.0'

проблема решена. Я также удалил предыдущую версию папки gradle.

Ответ 5

вы можете добавить

compile 'com.android.support:customtabs:25.2.0'

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

compile 'com.android.support:cardview-v7:25.2.0'
compile 'com.android.support:animated-vector-drawable:25.2.0'

Ответ 6

Здесь указано, что добавление этой строки приведет к удалению ошибки.

compile 'com.android.support:customtabs:25.2.0'

Ответ 7

Похоже, что для Android Studio 2.3 требуется явно объявлять внешние зависимости. Зависимости - это customtabs и palette-v7.

Вам нужно будет явно добавить следующие две внешние зависимости/пакеты в build.gradle

compile 'com.android.support:customtabs:25.2.0'
compile 'com.android.support:palette-v7:25.2.0'

Я думаю, что это решит проблему.

Ответ 8

Попробуйте заменить compile 'com.google.android.gms:play-services:+' на определенный пакет (ы), который вы используете (см. этот ответ: fooobar.com/questions/25642/...)

Ответ 9

Сделать все зависимости той же версии или последней версии в вашем случае заменой версии 1.0.0, 1.0.1 с 25.2.0. Если вы новичок в android, вы можете получить базовые знания о элементах на badassandroiddevlopers.blogspot.in

Ответ 10

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

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

Затем я пытаюсь:

./gradlew -q dependencies app --configuration compile

+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
|    \--- com.android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
|    \--- com.android.support:recyclerview-v7:23.4.0
|         +--- com.android.support:support-annotations:23.4.0 -> 25.3.1
|         \--- com.android.support:support-v4:23.4.0 -> 25.3.1
|              +--- com.android.support:support-compat:25.3.1
|              |    \--- com.android.support:support-annotations:25.3.1
|              +--- com.android.support:support-media-compat:25.3.1
|              |    +--- com.android.support:support-annotations:25.3.1
|              |    \--- com.android.support:support-compat:25.3.1 (*)
|              +--- com.android.support:support-core-utils:25.3.1
|              |    +--- com.android.support:support-annotations:25.3.1
|              |    \--- com.android.support:support-compat:25.3.1 (*)
|              +--- com.android.support:support-core-ui:25.3.1
|              |    +--- com.android.support:support-annotations:25.3.1
|              |    \--- com.android.support:support-compat:25.3.1 (*)
|              \--- com.android.support:support-fragment:25.3.1
|                   +--- com.android.support:support-compat:25.3.1 (*)
|                   +--- com.android.support:support-media-compat:25.3.1 (*)
|                   +--- com.android.support:support-core-ui:25.3.1 (*)
|                   \--- com.android.support:support-core-utils:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
|    \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
|    \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
|    +--- com.jakewharton:butterknife-annotations:8.4.0
|    |    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
|    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.android.support:appcompat-v7:25.3.1
|    +--- com.android.support:support-annotations:25.3.1
|    +--- com.android.support:support-v4:25.3.1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1
|    |    \--- com.android.support:support-compat:25.3.1 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.1
|         \--- com.android.support:support-vector-drawable:25.3.1 (*)

библиотека base-rvadapter не включает 25.3.1:

com.zhy:base-rvadapter:3.0.3
|    \--- com.android.support:recyclerview-v7:23.4.0

Наконец, я добавляю строку:

compile 'com.android.support:design:25.3.1'

дизайн включает appcompat-v7 и base-rvadapter ссылку 25.3.1.

+--- project :lib
+--- com.jonathanfinerty.once:once:1.2.2
|    \--- com.android.support:support-annotations:25.3.1
+--- com.zhy:base-rvadapter:3.0.3
|    \--- com.android.support:recyclerview-v7:23.4.0 -> 25.3.1
|         +--- com.android.support:support-annotations:25.3.1
|         +--- com.android.support:support-compat:25.3.1
|         |    \--- com.android.support:support-annotations:25.3.1
|         \--- com.android.support:support-core-ui:25.3.1
|              +--- com.android.support:support-annotations:25.3.1
|              \--- com.android.support:support-compat:25.3.1 (*)
+--- com.squareup.okhttp3:okhttp:3.6.0
|    \--- com.squareup.okio:okio:1.11.0
+--- com.squareup.okhttp3:logging-interceptor:3.6.0
|    \--- com.squareup.okhttp3:okhttp:3.6.0 (*)
+--- com.google.code.gson:gson:2.8.0
+--- com.jakewharton:butterknife:8.4.0
|    +--- com.jakewharton:butterknife-annotations:8.4.0
|    |    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
|    \--- com.android.support:support-annotations:24.1.0 -> 25.3.1
+--- com.github.bumptech.glide:glide:3.7.0
+--- org.litepal.android:core:1.5.1
+--- com.orhanobut:logger:1.15
+--- com.android.support:appcompat-v7:25.3.1
|    +--- com.android.support:support-annotations:25.3.1
|    +--- com.android.support:support-v4:25.3.1
|    |    +--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-media-compat:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-core-utils:25.3.1
|    |    |    +--- com.android.support:support-annotations:25.3.1
|    |    |    \--- com.android.support:support-compat:25.3.1 (*)
|    |    +--- com.android.support:support-core-ui:25.3.1 (*)
|    |    \--- com.android.support:support-fragment:25.3.1
|    |         +--- com.android.support:support-compat:25.3.1 (*)
|    |         +--- com.android.support:support-media-compat:25.3.1 (*)
|    |         +--- com.android.support:support-core-ui:25.3.1 (*)
|    |         \--- com.android.support:support-core-utils:25.3.1 (*)
|    +--- com.android.support:support-vector-drawable:25.3.1
|    |    +--- com.android.support:support-annotations:25.3.1
|    |    \--- com.android.support:support-compat:25.3.1 (*)
|    \--- com.android.support:animated-vector-drawable:25.3.1
|         \--- com.android.support:support-vector-drawable:25.3.1 (*)
\--- com.android.support:design:25.3.1
     +--- com.android.support:support-v4:25.3.1 (*)
     +--- com.android.support:appcompat-v7:25.3.1 (*)
     +--- com.android.support:recyclerview-v7:25.3.1 (*)
     \--- com.android.support:transition:25.3.1
          +--- com.android.support:support-annotations:25.3.1
          \--- com.android.support:support-v4:25.3.1 (*)

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

Ответ 11

Удалить или обновить следующую зависимость

 compile 'com.google.android.gms:play-services:9.6.1'

или добавьте только такие выборочные сервисы, как это

compile 'com.google.android.gms:play-services-fitness:10.2.4'
compile 'com.google.android.gms:play-services-wearable:10.2.4'

Ответ 12

Добавьте это к самому концу вашего build.gradle(Module: app):

configurations.all {
    resolutionStrategy.eachDependency { DependencyResolveDetails details ->
        def requested = details.requested
        if (requested.group == 'com.android.support') {
            if (!requested.name.startsWith("multidex")) {
                details.useVersion '25.3.1'
            }
        }
    }
}

Ответ 13

Используйте специальные версии вместо +. Например, "com.google.android.gms: play-services: 10.2.0"

И используйте определенные SDK, которые вы используете, вместо добавления всего пакета Play-SDK. Например:

'com.google.android.gms:play-services-gcm:10.2.0'
'com.google.android.gms:play-services-maps:10.2.0'
'com.google.android.gms:play-services-location:10.2.0'

Это помогло мне решить проблему.