Конфликт с зависимостью 'com.android.support:support-annotations' в проекте ': app'. Разрешенные версии для приложения (26.1.0) и тестового приложения (27.1.1) различаются.
Я новичок в разработке приложений для Android. Когда я попытался создать новый проект, Android Project... появилось следующее сообщение.
Ошибка: выполнение выполнено для задачи ': app: preDebugAndroidTestBuild'.
Конфликт с зависимостью 'com.android.support:support-annotations' в проекте ': app'. Разрешенные версии для приложения (26.1.0) и тестового приложения (27.1.1) различаются. Подробнее см. Https://d.android.com/r/tools/test-apk-dependency-conflicts.html. Информация: задачи Gradle [: app: generateDebugSources,: app: generateDebugAndroidTestSources,: app: mockableAndroidJar]
Это скриншот моего проекта, нажмите здесь, чтобы посмотреть снимок экрана об ошибке, которую я получил
Я также попытался добавить этот код к моей зависимости.. androidTestCompile 'com.android.support:support-annotations:23.3.0' это не сработало. Я также пробовал 27.1.1 и 26.1.0.. это тоже не сработало.
Ответы
Ответ 1
Основываясь на скриншоте, я нашел два рабочих решения:
Первое решение: добавьте к зависимостям вашего модуля градации эту строку
compile 'com.android.support:support-annotations:27.1.1'
и синхронизируйте свой проект
Примечание: если вы используете Android студии 3+ изменение compile
для implementation
Второе решение. Настройте свойства всего проекта, найденные в документации https://developer.android.com/studio/build/gradle-tips.html#configure-project-wide-properties.
в графе проекта добавьте эту строку:
// This block encapsulates custom properties and makes them available to all
// modules in the project.
ext {
// The following are only a few examples of the types of properties you can define.
compileSdkVersion = 26
// You can also use this to specify versions for dependencies. Having consistent
// versions between modules can avoid behavior conflicts.
supportLibVersion = "27.1.1"
}
Затем для доступа к этому разделу измените строку compileSdkVersion
чтобы
compileSdkVersion rootProject.ext.compileSdkVersion
и в разделе dependencies
измените импортированную библиотеку так:
compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
и синхронизируйте свой проект
Примечание: если вы используете Android студии 3+ изменение compile
для implementation
За разницу между compile
и implementation
взгляните на это. В чем разница между реализацией и компиляцией в gradle
Ответ 2
Добавьте строку ниже в ваш файл app.gradle перед блокировкой зависимостей.
configurations.all {
resolutionStrategy {
force 'com.android.support:support-annotations:26.1.0'
}
}
Там также скриншот ниже для лучшего понимания.
-
Блок configurations.all будет полезен только в том случае, если вы хотите, чтобы целевой SDK был равен 26. Если вы можете изменить его на 27, ошибка исчезнет без добавления блока конфигурации в файл app.gradle.
-
Есть еще один способ, если вы удалите всю реализацию теста из файла app.gradle, это устранит ошибку, и в этом вам также не нужно добавлять блок конфигурации или менять версию targetdk.
Надеюсь, это поможет.
Ответ 3
Если вы используете версию 26, то внутри зависимостей версия должна быть 1.0.1 и 3.0.1, т.е.
androidTestImplementation 'com.android.support.test:runner:1.0.1'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
Если вы используете версию 27, то внутри зависимостей версия должна быть 1.0.2 и 3.0.2, т.е.
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
Ответ 4
Если вы используете Android Studio 3.1. + Или выше
просто поставьте это в свои зависимости от градиента:
implementation 'com.android.support:support-annotations:27.1.1'
В целом, вот так:
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
implementation 'com.android.support:support-annotations:27.1.1'
}
Ответ 5
Это связано с конфликтом версий, чтобы решить эту проблему, просто принудительно обновить версию поддержки-аннотации, добавив эту строку в свой модуль: app gradle
implementation ('com.android.support:support-annotations:27.1.1')
Надеюсь, это решает вашу проблему;)
редактировать
Почти забыл, вы можете объявить одно дополнительное свойство (https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties) для версии, перейдите в свой проект (или ваш верхний) файл градиента и объявите свою поддержку или просто для этого примера, версию аннотации var
ext.annotation_version = "27.1.1"
Затем в градиенте модуля замените его:
implementation ("com.android.support:support-annotations:$annotation_version")
Это очень похоже на решение @emadabel, что является хорошей альтернативой для этого, но без блока или префикса rootproject
.
Ответ 6
Добавление этого в build.gradle (приложение модуля) сработало для меня:
compile 'com.android.support:support-annotations:27.1.1'
Ответ 7
Не беспокойтесь, это просто:
Перейдите в структуру "Project" Directory, и в этом перейдите к "Gradle Scripts" и внутри нее перейдите к "build.gradle(Module: app)" и дважды щелкните по нему.
Теперь - прокрутите вниз программу и в этом перейдите в раздел зависимостей: Как ниже
зависимостей {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
}
Теперь в этом Удалить последние две строки кода и перестроить приложение, и теперь он будет работать
Зависимости должны быть:
зависимостей {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.android.support.constraint:constraint-layout:1.1.2'
testImplementation 'junit:junit:4.12'
}
ОТПРАВЛЯЙТЕ АПП И ЭТО РАБОТАЕТ !!
Ответ 8
Перейдите в build.gradle (приложение модуля) в свой проект:
Следуйте рисунку и измените эту версию:
compileSdkVersion: 27
targetSdkVersion: 27
и если версия для Android версии 2: измените строку на эту строку:
compile 'com.android.support:appcompat-v7:27.1.1'
else Изменить строку с помощью этой строки:
implementation 'com.android.support:appcompat-v7:27.1.1'
и, надеюсь, вы решите свою ошибку.
Ответ 9
Еще один простой способ решить эту проблему - отредактировать файл build.gradle
(app):
- Перейти к тегу
android
и сменить compileSdkVersion 26
на compileSdkVersion 27
- Перейдите в тег
defaultConfig
и измените targetSdkVersion 26
на targetSdkVersion 27
- Получил тег
dependencies
и изменил implementation 'com.android.support:appcompat-v7:26.1.0'
для implementation 'com.android.support:appcompat-v7:27.1.1'
Ответ 10
У меня такая же проблема, в build.gradle(Module: app) добавьте следующую строку кода внутри зависимостей:
dependencies
{
...
compile 'com.android.support:support-annotations:27.1.1'
}
Он отлично работал для меня
Ответ 11
Перейти на уровень проекта build.gradle, определить глобальные переменные
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlinVersion = '1.2.61'
ext.global_minSdkVersion = 16
ext.global_targetSdkVersion = 28
ext.global_buildToolsVersion = '28.0.1'
ext.global_supportLibVersion = '27.1.1'
}
Перейдите на уровень приложения build.gradle и используйте глобальные переменные
приложение build.gradle
android {
compileSdkVersion global_targetSdkVersion
buildToolsVersion global_buildToolsVersion
defaultConfig {
minSdkVersion global_minSdkVersion
targetSdkVersion global_targetSdkVersion
}
...
dependencies {
implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
// and so on...
}
какая-то библиотека build.gradle
android {
compileSdkVersion global_targetSdkVersion
buildToolsVersion global_buildToolsVersion
defaultConfig {
minSdkVersion global_minSdkVersion
targetSdkVersion global_targetSdkVersion
}
...
dependencies {
implementation "com.android.support:appcompat-v7:$global_supportLibVersion"
implementation "com.android.support:recyclerview-v7:$global_supportLibVersion"
// and so on...
}
Решение состоит в том, чтобы сделать ваши версии такими же, как во всех модулях. Так что у вас нет конфликтов.
Важные советы
Я почувствовал, что когда я обновил версии everything- gradle, sdks, библиотек и т.д., Я столкнулся с меньшим количеством ошибок. Потому что разработчики прилагают все усилия, чтобы упростить разработку на Android Studio.
Всегда имейте последние, но стабильные версии. Нестабильные версии - это alpha
, beta
и rc
, игнорируйте их при разработке.
Я обновил все ниже в моих проектах, и я больше не сталкиваюсь с этими ошибками.
Удачного кодирования! :)
Ответ 12
Добавьте это в свой файл Gradle.
implementation 'com.android.support:support-annotations:27.1.1'
Ответ 13
Если изменение целевой версии sdk не поможет, если у вас есть зависимость от версии 3.0.2
то измените ее на 3.0.1
.
например, изменение
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.2'
в
androidTestImplementation 'com.android.support.test.espresso:espresso-contrib:3.0.1'
Ответ 14
Лучшее решение объясняется в официальном объяснении. Я оставил ответ, который я дал раньше по горизонтальной линии.
В соответствии с решением:
Используйте внешний тег и запишите следующий код ниже в файле build.gradle верхнего уровня. Вы собираетесь изменить версию на переменную, а не на статическую версию.
ext {
compileSdkVersion = 26
supportLibVersion = "27.1.1"
}
Измените статические номера версий в файле build.gradle на уровне приложения, рядом с которым есть (Module: app)
.
android {
compileSdkVersion rootProject.ext.compileSdkVersion // It was 26 for example
// the below lines will stay
}
// here there are some other stuff maybe
dependencies {
implementation "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"
// the below lines will stay
}
Синхронизируйте свой проект, и вы не получите никаких ошибок.
Вам не нужно ничего добавлять к сценариям Gradle. Установите необходимые SDK, и проблема будет решена.
В вашем случае установите библиотеки ниже в разделе "Настройки"> "Android SDK" или "Инструменты"> "Android"> "Менеджер SDK"
Ответ 15
Добавьте эту строку под зависимости в вашем файле Gradle
compile 'com.android.support:support-annotations:27.1.1'