Подтвердить что ты не робот

Предупреждение: конфликт с зависимостью "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'
}
4b9b3361

Ответ 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"