Все ком.андроид.библиотеки поддержки должны использовать точно такую же версию [дубликат]


этот вопрос уже есть ответ здесь:

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

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

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

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

Это моя сборка.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'
}
13 64

13 ответов:

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

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

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

сделать следующее:

в корневом build.gradle, вы уже должны есть!--9-->

ext {
    supportlib_version = '27.1.1'
    ...
}

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

dependencies {
    implementation "com.android.support:appcompat-v7:$supportlib_version"
    implementation "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.

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

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

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

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

примеры включают com.андроид.поддержка: анимированные-вектор-рисование: 25.2.0 и com.андроид.поддержка: mediarouter-v7: 24.0.0

код

com.андроид.поддержка: анимированные-вектор-рисование: 25.2.0

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

com.андроид.поддержка: mediarouter-v7: 24.0.0

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

com.android.support:mediarouter-v7:25.2.0

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

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

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

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

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

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

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

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

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

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

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

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

похоже, Android Studio 2.3 требует явного объявления внешних зависимостей. Зависимости customtabs и палитра-В7.

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

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

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

у меня такая же проблема в Android studio 2.3

перед: enter image description here

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

./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 link 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 (*)

после:enter image description here

попробуйте заменить compile 'com.google.android.gms:play-services:+' с конкретным пакетом(пакетами), который вы используете (см. Этот ответ:https://stackoverflow.com/a/42374426/3495069)

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

 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'

сделайте все зависимости одной версии или последней версии в вашем случае замените версии библиотеки поддержки на 25.2.0 .

используйте конкретные версии вместо +. Например, ' com.гуглить.андроид.gms: play-services: 10.2.0'

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

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

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