Предупреждение: конфликт с зависимостью "com.android.support:support-annotations"
Я пробовал почти каждый трюк в книге.
- ResolutionStrategy.force
- Исключение модулей
Но ничего не работает, ниже мой build.gradle. Я использую Gradle версию 1.2.3. Может кто-то попросить пролить свет на то, что еще может быть неправильно с моим кодом.
Единственное, что я не пробовал, это изменить версию Gradle.
Это очень простой тестовый тест Espresso. Спасибо!
apply plugin: 'com.android.application'
android {
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:22.1.0'
}
compileSdkVersion 22
buildToolsVersion "21.1.2"
defaultConfig {
applicationId "com.example.rasika.job"
minSdkVersion 16
targetSdkVersion 22
versionCode 1
versionName "1.0"
testInstrumentationRunner "android.support.test.runner.AndroidUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
}
repositories {
mavenCentral()
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:22.1.1'
testCompile 'junit:junit:4.12'
androidTestCompile 'com.android.support.test:runner:0.3'
androidTestCompile 'com.android.support.test:rules:0.3'
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2'
androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
}
Ответы
Ответ 1
Я искал андроид-topeka google sample и обновил версию appcompat до 23.1.0, то же сообщение:
Предупреждение: конфликт с зависимостью 'Com.android.support:support-annotations. Решенные версии для приложения (23.1.0) и тестовое приложение (23.0.1) отличаются.
Я добавил:
androidTestCompile 'com.android.support:support-annotations:23.1.0'
Теперь оба разрешения до 23.1.0, предупреждение исчезло, и приложение и тесты все еще работают.
Я не уверен, что это лучшее решение, поэтому я ищу другого, но нашел ваш вопрос.
Обновление: Прочитайте это хорошее объяснение от PaulR.
Update2: Подтверждено, пример тестирования Google Android.
// Testing-only dependencies
// Force usage of support annotations in the test app, since it is internally used by the runner module.
androidTestCompile 'com.android.support:support-annotations:23.0.1'
Update3: Еще один хороший ответ от CommonsWare.
Проверьте свои конкретные версии/конфликты/разрешения, используя:
./gradlew -q yourmodule:dependencies
![введите описание изображения здесь]()
Appomppat - 22.1.1 в вашем случае, но вы форсируете 22.1.0.
Update4:
Конфликт зависимости объяснен в Android Build System (Android Dev Summit 2015).
![введите описание изображения здесь]()
Разрешение конфликтов между основным и тестовым APK
Когда проводятся контрольные испытания, как основной APK, так и тест APK совместно использовать один и тот же путь. Gradle сборка завершится неудачно, если основной APK и тест APK использует одну и ту же библиотеку (например, Guava), но в разных версии. Если Gradle не понял этого, ваше приложение может вести себя по-разному во время тестов и во время обычного прогона (включая сбой в один из случаев).
Чтобы сделать сборку успешной, просто убедитесь, что оба APK используют один и тот же версия. Если ошибка связана с косвенной зависимостью (библиотека, которую вы не упоминалось в вашем build.gradle), просто добавить зависимость для более новой версии в конфигурацию ( "компиляция" или "androidTestCompile" ) , который ему нужен. Вы также можете использовать стратегию разрешения Gradleмеханизм. Вы можете проверить дерево зависимостей, запустив. /gradlew: app: dependencies и. /gradlew: app: androidDependencies.
Ответ 2
Я решил конфликт, добавив зависимость:
androidTestCompile 'com.android.support:support-annotations:23.2.0'
Ответ 3
У меня была та же проблема, решенная этим:
// build.gradle
...
android {
...
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
...
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2') {
// Necessary if your app targets Marshmallow (since Espresso
// hasn't moved to Marshmallow yet)
exclude group: 'com.android.support', module: 'support-annotations'
}
androidTestCompile('com.android.support.test:runner:0.3') {
// Necessary if your app targets Marshmallow (since the test runner
// hasn't moved to Marshmallow yet)
exclude group: 'com.android.support', module: 'support-annotations'
}
}
Решение было найдено здесь:
https://github.com/codepath/android_guides/wiki/UI-Testing-with-Espresso
UPDATE:
блок finally блоков finally в моем файле build.gradle выглядит следующим образом:
dependencies {
...
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:support-v4:23.2.1'
compile 'com.android.support:design:23.2.1'
...
// Necessary if your app targets Marshmallow (since Espresso
// hasn't moved to Marshmallow yet)
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test.espresso:espresso-intents:2.2.2') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test:runner:0.5') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test:rules:0.5') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test.espresso:espresso-contrib:2.2.2') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support:support-annotations:23.2.1') {
exclude group: 'com.android.support'
}
androidTestCompile('com.android.support.test.uiautomator:uiautomator-v18:2.1.2') {
exclude group: 'com.android.support'
}
}
Ответ 4
Это случилось со мной в последнее время при добавлении uiautomator. Чтобы исправить эту проблему, вам нужно выяснить, какая зависимость или зависимости использует устаревший модуль. Вы можете сделать это, обернув каждую зависимость androidTestCompile в блок, например:
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2') {
transitive = false;
}
Это может сломать некоторые другие вещи, поэтому вам нужно быть осторожными. Я смог точно определить, какие две из зависимостей вызвали эту проблему для меня, и просто добавив к этому механизм блокировки.
Ответ 5
Добавьте это в свой основной файл build.gradle:
allprojects {
...
configurations.all {
resolutionStrategy.force 'com.android.support:support-annotations:23.1.1'
}
...
}
Ответ 6
Добавьте следующие коды в блок зависимостей в файле build.gradle
compile 'com.android.support:support-annotations:23.2.1'
testCompile 'com.android.support:support-annotations:23.2.1'
androidTestCompile 'com.android.support:support-annotations:23.2.1'
Ответ 7
Я решил конфликт, исключив библиотеку поддержки-аннотации из зависимостей runner и espresso-core:
androidTestCompile 'com.android.support.test:runner:0.5',{
exclude group: 'com.android.support', module: 'support-annotations'
}
androidTestCompile ('com.android.support.test.espresso:espresso-core:2.2.2'){
exclude group: 'com.android.support', module: 'support-annotations'
}
Ответ 8
androidTestCompile измените на test Скомпилируйте. И напомните, что не нужно его компилировать, просто нужно, чтобы эти зависимости были скомпилированы в наш отладочный APK или тест APK.
Ответ 9
Для меня это отлично работало
dependencies {
androidTestCompile 'com.android.support:support-annotations:23.1.1'
}
Ответ 10
Я решил конфликт, добавив зависимость:
compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:design:23.2.1'
...
androidTestCompile 'com.android.support:support-annotations:23.2.1'
Ответ 11
Кроме того, он попал в проблему, говоря
Не удалось разрешить
com.android.support:support-annotations:23.1.0
и попытался найти на других серверах,
Но что я решил добавить:
google-service.json
из
https://developers.google.com/mobile/add
и скопируйте и вставьте его в
YourAndroidProject/app
Затем перекомпилируйте его, и я надеюсь, что ваш код будет летать
Ответ 12
Используйте это для разрешения конфликта
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
Ответ 13
Я решил конфликт, добавив зависимость:
androidTestCompile "com.android.support:support-annotations:26.0.0-beta1"