Конфликт с зависимостью com.android.support:support-annotations в проекте: app. Разрешенные версии приложения (26.1.0) и тестового приложения (27.1.1) различаются

Я новичок в разработке приложений для Android. Когда я попытался создать новый проект Android Project ... появилось следующее сообщение ..

Ошибка: не удалось выполнить задачу ': app: preDebugAndroidTestBuild'.

Conflict with dependency 'com.android.support:support-annotations' in project ':app'. Resolved versions for app (26.1.0) and test app (27.1.1) differ. See https://d.android.com/r/tools/test-apk-dependency-conflicts.html for details. Information:Gradle tasks [:app:generateDebugSources, :app:generateDebugAndroidTestSources, :app:mockableAndroidJar]

Это скриншот моего проекта нажмите здесь, чтобы увидеть снимок экрана с полученной мной ошибкой

Я также попытался добавить этот код в свою зависимость .. androidTestCompile 'com.android.support:support-annotations:23.3.0' это не сработало. Еще пробовал 27.1.1 и 26.1.0 .. это тоже не сработало.

Отметьте этот вопрос: stackoverflow.com/q/43817004/9611523. Надеюсь, это поможет.

user9611523 01.05.2018 15:50

Обновление Android Studio (а также эмулятора и некоторых других вещей после этого) решило эту проблему для меня.

user3510955 13.06.2018 19:37

Проблема связана с аннотацией gradle, которая по умолчанию не используется при создании нового проекта Android Studio. Возможно, это поможет вам: readyandroid.wordpress.com/…

Ready Android 06.08.2018 08:16
106
3
146 648
15

Ответы 15

На основании вашего скриншота я нашел два рабочих решения:

Первое решение: добавьте в зависимости вашего модуля gradle эту строку

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

и синхронизируйте свой проект

Примечание:, если вы используете Android studio 3+, замените compile на implementation

Второе решение: настройка свойств проекта, найденных в документации https://developer.android.com/studio/build/gradle-tips.html#configure-project-wide-properties

в Gradle проекта добавьте эту строку:

// 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"
}

Затем для доступа к этому разделу измените compileSdkVersionline на

compileSdkVersion rootProject.ext.compileSdkVersion

и в разделе dependencies измените импортированную библиотеку так:

compile "com.android.support:appcompat-v7:${rootProject.ext.supportLibVersion}"

и синхронизируйте свой проект

Примечание:, если вы используете Android studio 3+, замените compile на implementation

Чтобы узнать разницу между compile и implementation, посмотрите на это В чем разница между реализацией и компиляцией в Gradle

Я бы предложил использовать "реализацию" вместо компиляции

SanVed 27.06.2018 07:57

Это связано с конфликтом версий, чтобы решить эту проблему, просто принудительно обновите свою версию поддержки-аннотаций, добавив эту строку в свой модуль: app gradle

implementation ('com.android.support:support-annotations:27.1.1')

Надеюсь, это решит вашу проблему;)

Редактировать

Чуть не забыл, вы можете объявить одно дополнительное свойство (https://docs.gradle.org/current/userguide/writing_build_scripts.html#sec:extra_properties) для версии, перейти в свой проект (или ваш верхний) файл Gradle и объявить о своей поддержке или просто для этого примера, версию аннотации var

ext.annotation_version = "27.1.1"

Затем в вашем модуле gradle замените его на:

implementation ("com.android.support:support-annotations:$annotation_version")

Это очень похоже на решение @emadabel, которое является хорошей альтернативой для этого, но без блока или префикса rootproject.

Спасибо desgraci, это решение помогло мне

BharathRao 05.05.2018 10:40

после добавления этой строки теперь я получаю сообщение об ошибке «Ошибка: Выполнение не удалось для задачи ': app: processDebugManifest'.> Слияние манифеста не удалось с несколькими ошибками, см. журналы», пожалуйста, помогите мне, как я могу решить эту проблему

Basant 08.05.2018 08:45

@Basant Мне нужно было бы увидеть, в чем проблема, поскольку это проблема с выполнением вашего gradle, было бы лучше открыть вопрос для этого

desgraci 09.05.2018 23:57

Извините за поздний ответ @desgraci, я решил эту проблему, обновив IDE

Basant 16.05.2018 10:28

@Basant рад это слышать!

desgraci 16.05.2018 21:56

Добавление этого в build.gradle (приложение модуля) сработало для меня:
скомпилировать com.android.support:support-annotations:27.1.1

Еще один простой способ решить эту проблему - отредактировать build.gradle (приложение):

  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'

Добавьте приведенную ниже строку в файл 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.

Надеюсь, это поможет.

Спасибо, сэкономь мое время

Manikandan K 22.05.2018 08:50

@ManikandanK рад помочь!

Harsh Jain 22.05.2018 09:09

Хвала вам за то, что вы дали полные инструкции! (Многие ответы на подобные темы похожи на «Добавьте это:» force 'com.android.support:support-annotations:26.1.0' »с небольшим контекстом / без контекста! (К сожалению, я все еще получаю то же самое ошибка сборки, в моем случае "Не удалось найти com.android.support:support-annotations:27.0.0. Требуется: trainingiq: bugsnag-react-native: unspecified> com.bugsnag: bugsnag-android: 4.3.1"

Dronz 25.10.2018 00:16

Не волнуйтесь, это просто:

Перейдите в структуру директории «Project» и в ней перейдите к «Gradle Scripts», а внутри нее перейдите к «build.gradle (Module: app)» и дважды щелкните по нему.

Сейчас - Прокрутите программу вниз и перейдите в раздел зависимостей: Как показано ниже


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'

}


Теперь удалите последние две строки кода и перестройте приложение, и теперь оно будет работать.

Зависимости должны быть:


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'

}


ВОССТАНОВИТЕ ПРИЛОЖЕНИЕ, И ОНО РАБОТАЕТ !!

Вы не объяснили, что вы удалили / добавили. Что делать, если здесь нужны библиотеки тестов?

TheRealChx101 18.11.2018 21:01

Если изменение целевой версии 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'

У меня такая же проблема в build.gradle (Module: app) добавьте следующую строку кода внутри зависимостей:

dependencies 
{
   ...
   compile 'com.android.support:support-annotations:27.1.1'
}

У меня это сработало отлично

Перейдите в build.gradle (приложение-модуль) в своем проекте:

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

compileSdkVersion: 27
targetSdkVersion: 27

и если версия студии Android 2: Измените строку на эту строку:

compile 'com.android.support:appcompat-v7:27.1.1'

еще Измените строку на эту строку:

implementation 'com.android.support:appcompat-v7:27.1.1'

и, надеюсь, вы исправите свою ошибку.

Если вы используете Android Studio 3.1. + Или выше

просто поместите это в свои зависимости Gradle:

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'
}

Спасибо, приятель, с любовью

amilab 07.05.2019 10:28

Лучшее решение объясняется в официальное объяснение. Я оставил ответ, который дал ранее, под горизонтальной чертой.

По решению там:

Используйте внешний тег и запишите следующий код ниже в файле 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

Если вы используете версию 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'

Да благословит вас Бог, пусть библиотеки поддержки Android сгниют в аду!

Muhammad Naderi 20.01.2019 15:47

Значит мастер студии Android создает проект с нуля С ошибками? ¬¬

Sebastian Breit 18.02.2019 21:48

А что насчет 28 год?

alizulfuqar 15.10.2019 13:22

Важное обновление

Перейдите на уровень проекта 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...
}

Решение - сделать ваши версии такими же, как и во всех модулях. Чтобы у вас не было конфликтов.

Важные советы

I felt when I have updated versions of everything- gradle, sdks, libraries etc. then I face less errors. Because developers are working hard to make it easy development on Android Studio.

Всегда имейте последние, но стабильные версии Нестабильными версиями являются alpha, beta и rc, игнорируйте их при разработке.

Я обновил все нижеприведенные в моих проектах, и я больше не сталкиваюсь с этими ошибками.

Удачного кодирования! :)

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

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

Добавьте это в свой файл Gradle.

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

Другие вопросы по теме