Конфликт с зависимостью '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 block

  1. Блок configurations.all будет полезен только в том случае, если вы хотите, чтобы целевой SDK был равен 26. Если вы можете изменить его на 27, ошибка исчезнет без добавления блока конфигурации в файл app.gradle.

  2. Есть еще один способ, если вы удалите всю реализацию теста из файла 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 (приложение модуля) в свой проект:

enter image description here

Следуйте рисунку и измените эту версию:

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):

  1. Перейти к тегу android и сменить compileSdkVersion 26 на compileSdkVersion 27
  2. Перейдите в тег defaultConfig и измените targetSdkVersion 26 на targetSdkVersion 27
  3. Получил тег 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"

enter image description here

Ответ 15

Добавьте эту строку под зависимости в вашем файле Gradle

compile 'com.android.support:support-annotations:27.1.1'