Разрешенные версии для приложения (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'
}
}