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

106

Я новичок в разработке приложений для 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 .. это тоже не сработало.

hashTag_bibu
источник
Отметьте этот вопрос: stackoverflow.com/q/43817004/9611523 . Надеюсь, это поможет.
1
Обновление Android Studio (а также эмулятора и некоторых других вещей после этого) решило эту проблему для меня.
Проблема связана с аннотацией gradle, которая не входит по умолчанию при создании нового проекта Android Studio. Может быть, это поможет вам: readyandroid.wordpress.com/…
Готовый Android

Ответы:

182

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

Первое решение : добавьте к зависимостям вашего модуля 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"
}

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

compileSdkVersion rootProject.ext.compileSdkVersion

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

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

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

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

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

Emadabel
источник
4
Я бы предложил использовать «реализацию» вместо компиляции
SanVed
60

Добавьте приведенную ниже строку в файл app.gradle перед блоком зависимостей.

configurations.all {
    resolutionStrategy {
        force 'com.android.support:support-annotations:26.1.0'
    }
}

Ниже также приведен снимок экрана для лучшего понимания.

Конфигурации. Весь блок

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

  2. Есть еще один способ, если вы удалите всю тестовую реализацию из файла app.gradle, это устранит ошибку, и в этом также вам не нужно добавлять блок конфигурации или изменять версию targetdk.

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

Суровый джайн
источник
Спасибо, сэкономьте мое время
Manikandan K
1
@ManikandanK рад помочь!
Harsh Jain
Хвала вам за то, что вы дали полные инструкции! (Многие ответы на подобные темы похожи на «Добавьте это:» 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
35

Если вы используете версию 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'
Хариш
источник
2
Да благословит вас Бог, пусть библиотеки поддержки Android сгниют в аду!
Мухаммад Надери
Значит мастер студии Android создает проект с нуля С ошибками? ¬¬
Себастьян
А как насчет 28 ?
alizulfuqar
27

Если вы используете 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'
}
Урай Фебри
источник
Спасибо, дружище, с любовью
амилаб
23

Это связано с конфликтом версий, чтобы решить эту проблему, просто принудительно обновите свою версию поддержки-аннотаций, добавив эту строку в свой модуль: 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"

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

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

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

Desgraci
источник
1
Спасибо desgraci, это решение помогло мне
BharathRao
после добавления этой строки теперь я получаю сообщение об ошибке «Ошибка: выполнение не выполнено для задачи ': app: processDebugManifest'.> Не удалось объединить манифест с несколькими ошибками, см. журналы», пожалуйста, помогите мне, как я могу решить эту проблему
Basant
@Basant Мне нужно было бы узнать, в чем проблема, поскольку это проблема с выполнением вашего gradle, было бы лучше открыть вопрос для этого
desgraci
Извините за поздний ответ @desgraci, я решил эту проблему, обновив IDE
Basant
@Basant рад это слышать!
desgraci
9

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

Сан Аскарулы
источник
7

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

Перейдите в структуру каталогов «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
3

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

введите описание изображения здесь

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

compileSdkVersion: 27
targetSdkVersion: 27

и если android studio версии 2: измените строку на эту строку:

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

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

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

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

Майзид Хасан Шуво
источник
2

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

implementation 'com.android.support:support-annotations:27.1.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'
Realdinho
источник
1

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

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

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

Мохаммед Х. Ханнуш
источник
1

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

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

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

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

Я чувствовал, что когда я обновляю версии всего - gradle, sdks, библиотеки и т. Д., Я сталкиваюсь с меньшим количеством ошибок. Поскольку разработчики прилагают все усилия, чтобы сделать его легко разрабатывать на Android Studio.

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

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

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

Хемрадж
источник
0

Если изменение целевой версии 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'
Харшад
источник
0

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

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

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

введите описание изображения здесь

Онур тунец
источник
0

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

compile 'com.android.support:support-annotations:27.1.1'
Павита
источник