Разрешенные версии для приложения (22.0.0) и тестового приложения (21.0.3) отличаются

После обновления до API 22 и поддержки версии 22 версии 22 я получаю следующее предупреждение:

Предупреждение: конфликт с зависимостью 'Com.android.support:support-annotations. Решенные версии для приложения (22.0.0) и тестовое приложение (21.0.3) отличаются.

Gradle сам более прощающий, но Android Studio, не так много.

У меня нет зависимостей, объявленных с 21.0.3... является одной из зависимых библиотек, использующих 21.0.3, и Google забыл обновить ее с остальной частью пакета?

My build.gradle с вырезанием дополнительных функций

android {
  compileSdkVersion 22
  buildToolsVersion '22'

  defaultConfig {
    applicationId "com.REDACTED.android"
    minSdkVersion 14
    targetSdkVersion 22
    renderscriptSupportModeEnabled true
    versionName '1.0.0'
    versionCode 100
  }

  buildTypes {
    release {
      minifyEnabled true
      zipAlignEnabled true
      signingConfig signingConfigs.release
    }

    debug {
      minifyEnabled false
      zipAlignEnabled true
      signingConfig signingConfigs.debug
    }
  }

  dependencies {
    provided 'org.projectlombok:lombok:1.16.2'
    googleCompile 'com.google.android.gms:play-services-base:6.5.87'
    compile 'com.android.support:support-v4:22.0.0'
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:support-v13:22.0.0'
    compile 'com.android.support:cardview-v7:22.0.0'
    compile 'com.android.support:palette-v7:22.0.0'
    compile 'com.android.support:support-annotations:22.0.0'
    compile 'com.github.chrisbanes.photoview:library:1.2.3'
    compile 'org.apache.commons:commons-lang3:3.3.2'
    compile 'commons-io:commons-io:2.4'
    compile 'commons-codec:commons-codec:1.10'
    compile 'com.jakewharton:butterknife:6.1.0'
    compile 'com.jakewharton:disklrucache:2.0.2'
    compile 'com.squareup:otto:1.3.6'
    compile 'com.squareup.picasso:picasso:2.5.0'
    compile 'com.squareup.retrofit:retrofit:1.9.0'
    compile 'com.squareup.okhttp:okhttp:2.2.0'
    compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
    compile 'com.squareup.okio:okio:1.2.0'
    compile 'com.flaviofaria:kenburnsview:1.0.6'
    compile 'com.edmodo:cropper:1.0.1'
    compile 'com.getbase:floatingactionbutton:1.8.0'
    compile 'com.nispok:snackbar:2.10.2'
    compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
    compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
    compile 'de.hdodenhof:circleimageview:1.2.2'
    compile fileTree(dir: 'libs', include: '*.jar')
    // Test Only Dependencies
    androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
    androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
    androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
  }

Обновление: (Спасибо)

Похоже на espresso-contrib

+--- com.android.support.test:testing-support-lib:0.1 (*)
\--- com.android.support.test.espresso:espresso-contrib:2.0
     +--- com.android.support:recyclerview-v7:21.0.3
     |    +--- com.android.support:support-annotations:21.0.3
     |    \--- com.android.support:support-v4:21.0.3
     |         \--- com.android.support:support-annotations:21.0.3
     +--- com.android.support:support-v4:21.0.3 (*)
     \--- com.android.support.test.espresso:espresso-core:2.0 (*)

Ответ 1

Шаг №1 при работе с подобными вещами заключается в том, чтобы получить удобство с командной строкой Gradle.

Шаг # 2 - запустить отчет о зависимостях Gradle (например, gradle -q app:dependencies от корня проекта). Это предоставит дерево ASCII, как показано в обновлении, и это поможет вам определить, что запрашивает конфликтующие версии артефакта.

Шаг №3 - решить, что нужно заменить. Вы решили заменить только конфликт (support-annotations). Лично я бы пошел с корнем дерева неправильной версии (recyclerview-v7), хотя для всех, кого я знаю, это может быть не лучший способ действий в этом случае.

Шаг №4 состоит в том, чтобы добавить директиву exclude, чтобы заблокировать то, что вы выбрали на шаге №3:

androidTestCompile ('com.android.support.test.espresso:espresso-contrib:2.0') {
    exclude module: 'support-annotations'
}

Шаг № 5 - это проверка этого изменения. То, что вы делаете, говорит о том, что espresso-contrib должен иметь дело с выпуском версии 22.0.0 support-annotations. Это может сработать. Это может и не быть. Это зависит от обратной совместимости конфликта. В этом случае support-annotations должен быть очень хорош.

Шаг № 6 состоит в том, чтобы потреблять напиток по вашему выбору, соответствующий вашему языку и времени суток.

Ответ 2

Что я сделал, чтобы решить эту проблему, добавьте строку ниже в мой build.gradle script

androidTestCompile 'com.android.support:support-annotations:xx.x.x'

Замените xx.x.x любой версией аннотаций поддержки, которую использует ваше приложение, - это будет показано в ваших зависимостях или сообщение синхронизации Gradle как: Resolved version for app (xx.x.x), если возникнет проблема синхронизации.

Ответ 3

На самом деле это ошибка новой версии обновления Espresso Contrib, вы можете ссылаться на этот обходной путь: android-testing/build.gradle

configurations.all {
    resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}

Ответ 4

Пожалуйста, обратитесь https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140

configurations.all {
  resolutionStrategy {
    force 'com.android.support:support-annotations:23.1.1'
  }
}

Это решило мою проблему.

В качестве альтернативы вы можете запускать gradlew на windows и. /gradlew для mac/linux, это будет загружать вашу зависимость при необходимости

Ответ 5

Я также столкнулся с этой проблемой, а также с другими конфликтами, связанными с appcompat, и решение, которое я нашел, заключалось в добавлении тестовых компиляций и их установке на используемый вами sdk. В моем случае это 25, поэтому он выглядит так:

androidTestCompile 'com.android.support:support-annotations:25.+'
androidTestCompile 'com.android.support:appcompat-v7:25.+'
androidTestCompile 'com.android.support:support-v4:25.+'
androidTestCompile 'com.android.support:recyclerview-v7:25.+'
androidTestCompile 'com.android.support:design:25.+'

Кроме того, как вы можете видеть, я добавил зависимость от дизайна, которая связана с Android Material Design.

Надеюсь, что это поможет =)

Ответ 6

для sdkversion 25

     androidTestCompile 'com.android.support:support-annotations:25.2.0'

Ответ 7

вы можете запускать gradlew на windows и. /gradlew для mac/linux, это будет загружать вашу зависимость, когда это необходимо.

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

compile ( "org.apache.maven: maven- ant -tasks: ${mavenAntTaskVer}" ) { исключить группу: 'junit' }

Ошибка: конфликт с зависимостью "junit: junit". Разрешенные версии для приложения (3.8.1) и тестового приложения (4.12) различаются. Подробнее см. G.co/androidstudio/app-test-app-conflict.

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

Ответ 8

Просто удалите эти строки в файле build.gradle:

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'

Ответ 9

Это обычная проблема в контрольно-измерительном тесте, как указано здесь, и ее можно решить, просто добавив зависимости для androidTestCompile внутри build.gradle. В моем случае конфликт возник в зависимостях appcompat, recyclerview и design. И разрешено путем добавления следующих строк

    androidTestCompile 'com.android.support:appcompat-v7:23.4.0'
    androidTestCompile 'com.android.support:recyclerview-v7:23.4.0'
    androidTestCompile 'com.android.support:design:23.4.0'

Ответ 10

У меня была такая же проблема с 26.0.0 и 27.1.1, и на самом деле просто обновление первой до поздней версии заставило ее работать.

Ответ 11

Добавление следующего в конец build.gradle (приложение) решило проблему для меня.

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-annotations:23.1.1'
    }
}