После обновления до API 22 и поддержки lib revision 22 я получаю следующее предупреждение:
Предупреждение: конфликт с зависимостью 'com.android.support:support-annotations'. Разрешенные версии для приложения (22.0.0) и тестового приложения (21.0.3) отличаются.
Сам Gradle более щадящий, но Android Studio не так уж и много.
У меня нет зависимостей, объявленных с помощью 21.0.3 ... одна из зависимых библиотек использует 21.0.3, и Google забыл обновить ее до конца пакета?
Мой build.gradle
с дополнениями вырезан
android {
compileSdkVersion 22
buildToolsVersion '22'
defaultConfig {
applicationId "com.REDACTED.android"
minSdkVersion 14
targetSdkVersion 22
renderscriptSupportModeEnabled true
versionName '1.0.0'
versionCode 100
}
buildTypes {
release {
minifyEnabled true
zipAlignEnabled true
signingConfig signingConfigs.release
}
debug {
minifyEnabled false
zipAlignEnabled true
signingConfig signingConfigs.debug
}
}
dependencies {
provided 'org.projectlombok:lombok:1.16.2'
googleCompile 'com.google.android.gms:play-services-base:6.5.87'
compile 'com.android.support:support-v4:22.0.0'
compile 'com.android.support:appcompat-v7:22.0.0'
compile 'com.android.support:support-v13:22.0.0'
compile 'com.android.support:cardview-v7:22.0.0'
compile 'com.android.support:palette-v7:22.0.0'
compile 'com.android.support:support-annotations:22.0.0'
compile 'com.github.chrisbanes.photoview:library:1.2.3'
compile 'org.apache.commons:commons-lang3:3.3.2'
compile 'commons-io:commons-io:2.4'
compile 'commons-codec:commons-codec:1.10'
compile 'com.jakewharton:butterknife:6.1.0'
compile 'com.jakewharton:disklrucache:2.0.2'
compile 'com.squareup:otto:1.3.6'
compile 'com.squareup.picasso:picasso:2.5.0'
compile 'com.squareup.retrofit:retrofit:1.9.0'
compile 'com.squareup.okhttp:okhttp:2.2.0'
compile 'com.squareup.okhttp:okhttp-urlconnection:2.2.0'
compile 'com.squareup.okio:okio:1.2.0'
compile 'com.flaviofaria:kenburnsview:1.0.6'
compile 'com.edmodo:cropper:1.0.1'
compile 'com.getbase:floatingactionbutton:1.8.0'
compile 'com.nispok:snackbar:2.10.2'
compile 'com.github.ksoichiro:android-observablescrollview:1.5.0'
compile 'in.srain.cube:grid-view-with-header-footer:1.0.9'
compile 'de.hdodenhof:circleimageview:1.2.2'
compile fileTree(dir: 'libs', include: '*.jar')
// Test Only Dependencies
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.0'
androidTestCompile 'com.android.support.test:testing-support-lib:0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.0'
}
Обновление: (спасибо Марк)
Похоже, это эспрессо
+--- com.android.support.test:testing-support-lib:0.1 (*)
\--- com.android.support.test.espresso:espresso-contrib:2.0
+--- com.android.support:recyclerview-v7:21.0.3
| +--- com.android.support:support-annotations:21.0.3
| \--- com.android.support:support-v4:21.0.3
| \--- com.android.support:support-annotations:21.0.3
+--- com.android.support:support-v4:21.0.3 (*)
\--- com.android.support.test.espresso:espresso-core:2.0 (*)
android
android-support-library
copolii
источник
источник
dependencies
Задание Gradle может помочь вам определить виновника: gradle.org/docs/current/userguide/…espresso-contrib
это причина ...exclude
заблокировать редакциюrecyclerview-v7
21.0.3, самостоятельно загрузить версию 22.0.0 и помолиться, чтобы они были достаточно совместимы для вашихespresso-contrib
нужд. Лично я поражен, что вы поддерживаете здравый смысл с этим длинным списком зависимостей ... :-)Ответы:
Шаг № 1, когда имеешь дело с такими вещами, это освоиться с командной строкой Gradle.
Шаг № 2 - запустить отчет о зависимостях Gradle (например,
gradle -q app:dependencies
из корня проекта). Это обеспечит дерево ASCII, как показано в обновлении вопроса, и должно помочь вам определить, что запрашивает конфликтующие версии артефакта.Шаг № 3 - решить, что нужно заменить. Вы решили заменить только конфликт (
support-annotations
). Лично я бы пошел с рутом дерева неправильной версии (recyclerview-v7
), хотя, насколько я знаю, это может быть не лучшим вариантом действий в этом случае.Шаг № 4 - добавить
exclude
директиву, чтобы заблокировать то, что вы выбрали в Шаге № 3:Шаг № 5, чтобы проверить черт из этого изменения. То, что вы делаете, говорит, что
espresso-contrib
имеет дело с выпуском 22.0.0support-annotations
. Это может сработать. Это не может. Это зависит от обратной совместимости конфликта. В этом случаеsupport-annotations
должно быть довольно хорошо об этом.Шаг № 6 состоит в том, чтобы потреблять напиток по вашему выбору, один подходящий для вашего региона и времени суток.
источник
exclude group: 'com.android.support', module: 'support-annotations'
так как ваша версия вызвала предупреждение «не могу определить типы аргументов» от gradledependencies
. Смотрите этот образец от Чиу-Ки Чан.Я решил добавить следующую строку в мой скрипт build.gradle.
Замените
xx.x.x
на любую версию аннотаций поддержки, которую использует ваше приложение - это будет показано в ваших зависимостях или в сообщении синхронизации Gradle следующим образом:Resolved version for app (xx.x.x)
при возникновении проблем с синхронизацией.источник
Junit
но вполне возможно, что я могу сделать это и для других зависимостей.androidTestCompile 'com.android.support:support-annotations:23.1.1'
На самом деле это ошибка новой версии Espresso Contrib, вы можете обратиться к этому временному решению : android-testing / build.gradle
источник
androidTestCompile 'com.android.support.test:runner:0.5'
Пожалуйста, обратитесь https://github.com/JakeWharton/u2020/blob/05a57bf43b9b61f16d32cbe8717af77cd608b0fb/build.gradle#L136-L140
Это решило мою проблему.
В качестве альтернативы вы можете запустить gradlew в Windows и ./gradlew для mac / linux, чтобы при необходимости загрузить вашу зависимость
источник
Я также столкнулся с этой проблемой, а также с другими конфликтами, связанными с appcompat, и решением, которое я нашел, было добавление тестовых компиляций и установка их в SDK, который вы используете в настоящее время. В моем случае это 25, так что это выглядит так:
Кроме того, как вы можете видеть, я добавил зависимость дизайна, которая связана с Android Material Design.
Надеюсь, это поможет =)
источник
для сдкверсион 25
источник
вы можете запустить gradlew в Windows и ./gradlew для mac / linux, чтобы при необходимости загрузить вашу зависимость.
Вы можете проверить, зависит ли одна из библиотек от аннотации поддержки или какая-либо библиотека с ошибкой названа, и попытаться исключить ее в gradle, как показано ниже
compile ("org.apache.maven: maven-ant-tasks: $ {mavenAntTaskVer} ") {исключить группу: 'junit'}
Ошибка: конфликт с зависимостью «junit: junit». Разрешенные версии для приложения (3.8.1) и тестового приложения (4.12) отличаются. См. G.co/androidstudio/app-test-app-conflict для деталей.
это была ошибка, которую я получал, поэтому я использовал выше градли, чтобы исправить проблему
источник
Просто удалите эти строки в вашем файле build.gradle:
источник
Это распространенная проблема в тестировании инструментария, как указано здесь, и ее можно решить, просто добавив зависимости для androidTestCompile в build.gradle. В моем случае конфликт возник в зависимостях appcompat, recyclerview и design. И решается добавлением следующих строк
источник
У меня была та же проблема с 26.0.0 и 27.1.1, и фактически я просто обновлял предыдущую, чтобы позже заставить ее работать.
источник