Если я запускаю gradle assembleDebug
из командной строки, я внезапно получаю эту ошибку:
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dx.util.DexException: Multiple dex files define Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;
at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:592)
at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:550)
at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:531)
at com.android.dx.merge.DexMerger.mergeDexBuffers(DexMerger.java:168)
at com.android.dx.merge.DexMerger.merge(DexMerger.java:186)
at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:300)
at com.android.dx.command.dexer.Main.run(Main.java:232)
at com.android.dx.command.dexer.Main.main(Main.java:174)
at com.android.dx.command.Main.main(Main.java:91)
Если я grep для v4, я вижу два файла в моей папке сборки.
Binary file build/pre-dexed/debug/support-v4-19.0.0-2ba5fdd60a6c3836b3104a863fe42897da1fa9d1.jar matches
Binary file build/pre-dexed/debug/support-v4-r7-227d905d79b23b20866531d4f700446c040a2ccb.jar matches
Мой файл Gradle включает только эту библиотеку поддержки:
compile 'com.android.support:support-v13:19.0.0'
Я озадачен тем, как библиотека r7 включена как-то. Я запустился, gradle clean
и он всегда появляется там, когда я снова запускаю assemblyDebug.
Если я grep для r7 внутри каталога сборки, я вижу его внутри файла:
Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches
Если я не включу v13, то другие вещи не компилируются.
Но не включает ли v13 библиотеку поддержки v4?
Является ли это несовместимостью между пакетом AAR play services и библиотекой v13?
Я взял файл gradle с сайта gradleplease.appspot.com.
Удаление игровых сервисов не исправляет это; та же ошибка.
Мои зависимости внутри build.gradle:
dependencies {
// Google Play Services
//compile 'com.google.android.gms:play-services:4.0.30'
// Support Libraries
//compile 'com.android.support:support-v4:19.0.0'
///compile 'com.android.support:appcompat-v7:19.0.0'
//compile 'com.android.support:gridlayout-v7:19.0.0'
compile 'com.android.support:support-v13:19.0.0'
compile 'org.eclipse.mylyn.github:org.eclipse.egit.github.core:2.1.5'
compile 'commons-codec:commons-codec:1.9'
compile 'com.madgag:markdownj-core:0.4.1'
compile 'com.wu-man:android-oauth-client:0.0.2'
compile 'com.google.http-client:google-http-client-jackson2:1.17.0-rc'
compile 'org.apache.commons:commons-lang3:3.2'
compile 'com.google.code.gson:gson:2.2.4'
}
Ответы:
Запустите
gradle -q dependencies
(илиgradle -q :projectName:dependencies
), чтобы сгенерировать отчет о зависимостях. Вы должны увидеть, откудаr7
исходит, например:Затем используйте
exclude
директиву, чтобы заблокировать эту зависимость. В моем случае это из моей библиотеки CWAC-Camera, и поэтому я использую:(где второе
compile
утверждение указывает, какую версию вы на самом деле хотите)Это должно прояснить ситуацию, как вы увидите, если вы снова запустите отчет о зависимостях:
источник
gradle dependencies
Кажется, не сообщать о зависимостях, добавленных сcompile files('libs/example.jar')
libs/*.jar
зависимости с общим модулем, ни одна из которых не доступна в качестве артефакта. Любой способ выполнить подобную проверку зависимости / исключение класса?compile project(':foo')
вcompile(project(':foo')) { exclude module: 'support-v4' }
. Обратите внимание на круглые скобки.Я решил похожую ошибку, добавив следующий фрагмент кода в мой файл build.gradle внутри блока Android.
источник
Так как картина стоит тысячи слов
Чтобы было проще и быстрее справиться с этой задачей с такими новичками, как я. это скриншоты, на которых показан ответ @ edsappfactory.com, который работал для меня:
Сначала откройте вид Gradle на правой стороне Androidstudio, в пункте ходу вашего приложения , чтобы
Tasks
затемAndroid
щелкните правой кнопкой мышиandroidDependencies
выберитеRun
:Во-вторых, вы увидите что-то вроде этого:
Основная причина, по которой я написал это, заключалась в том, что было нелегко узнать, где выполнить
gradle
задачу или команды, опубликованные выше. Так что это то, где их можно извинить.ТАК, чтобы выполнить команду gradle:
Первый:
Во-вторых:
Легко как есть.
Это оно.
Спасибо.
источник
Также отметим, что вы можете увидеть свои зависимости Android, перейдя в представление Android Studio Gradle и выбрав цель «androidDependencies».
Еще один совет: у меня была эта проблема, пока я не удалил библиотеку поддержки v4 из папки libs как в проекте, так и в моем связанном проекте модуля / библиотеки.
источник
Я начал получать эту ошибку при обновлении до ButterKnife 8.5.1. Ни один из других ответов здесь не работал для меня.
Раньше я
gradle -q :app:dependencies
видел дерево, а затем просматривал файлы jar, пока не обнаружил конфликт. Конфликт состоял в том, что зависимость Butterknifecom.android.support:support-compat:25.1.0
содержит версию класса доступности, аcom.android.support:support-v4:23.1.1
также содержит класс.Я решил это, изменив мою зависимость от этого:
к этому:
Кажется, это пока не влияет на работу ButterKnife.
Изменить: есть лучшее решение, которое было обновить мои библиотеки поддержки Android, чтобы соответствовать ButterKnife:
источник
В случае, если кто-то узнает, что ответ от CommonsWare не может быть применен к проекту библиотеки Android, вот исправленный фрагмент
compile (project (': yourAndroidLibrary')) {исключить модуль: 'support-v13'}
Вы найдете проблемы
если вы используете проект компиляции (': yourAndroidLibrary') {исключить модуль: 'support-v13'}
Различия заключаются в браслете "(" и ")" перед "проектом" .
источник
У меня не получится работать с зависимостью проекта, единственный способ заставить его работать - использовать следующий синтаксис:
Где: Android-SDK - это название вашего проекта.
источник
У меня была та же проблема, и кажется, что в моем приложении было слишком много методов из-за библиотек: http://developer.android.com/tools/building/multidex.html
Решил это с помощью:
Подробнее здесь Ошибка: не удалось выполнить задачу ': app: dexDebug'. > команда завершилась с ненулевым значением выхода 2
источник
У меня была та же самая ошибка, но это было, потому что я недавно переключился с использования v4 на v13. Так что все, что мне нужно было сделать, это очистить проект.
источник
У меня была такая же ошибка на устаревшем проекте. Я виноват в том, что библиотека поддержки была включена дважды: однажды внутри библиотеки google-play-services, а другая как автономная.
Вот как я это исправил:
ПЛОХАЯ build.gradle:
ХОРОШИЙ build.gradle:
Надеюсь, это кому-нибудь поможет :-)
источник
Я пользуюсь
com.google.android.gms:play-services-analytics:8.3.0
и такandroid-support-v13.jar
и не смог получитьexclude module: 'support-v4'
до работы.То, что работало для меня, использовало
android-support-v13
артефакт, а неandroid-support-v13.jar
файл.Т.е. вместо
}
я использовал
}
источник
В моем случае проблема была вызвана несоответствием версий :
Решение было простым: сделать все версии 25
источник
Аналогично Dex вопрос решен метод
gradle.build содержал:
Проблема была решена, когда я удалил
Мой gradle теперь выглядит так:
В JAR-файле и скомпилированном проекте gradle была избыточность
Так что внимательно ищите файлы зависимостей и jar, имеющие одинаковые классы.
И удалить избыточность.
Это сработало для меня.
источник
Если вы импортировали свой проект из Eclipse .
Сценарий, с которым я столкнулся после импорта проекта Eclipse в Android-студию.
Надеюсь это поможет..
источник
Это раздражающая проблема, которая может занять некоторое время, чтобы выяснить основной случай. Вы должны продолжить, ответ @CommonsWare.
Я недавно столкнулся с этой проблемой, и мне было трудно ее решить.
Моя проблема заключалась в том, что я включал библиотеку по версии "+" в build.gradle. Последняя версия библиотеки содержала одну из старых версий dex и bang.
Я вернулся к старой версии библиотеки и решил ее.
Это хорошо, чтобы запустить ваши androidDependencies и посмотреть, что на самом деле происходит. Это также хорошо для поиска в вашей папке сборки.
Прежде всего, Android Studio 2.2 предоставляет встроенные функции для отслеживания этой проблемы.
Счастливые парни кодирования
источник
В Android Studio перейдите в свой build.gradle (проверьте файлы проекта и модулей build.gradle) и найдите дублирующиеся зависимости.
Удалить те, которые не нужны вашему проекту.
источник
Удаление всех файлов из кэша Gradle устранило мою проблему.
в Linux:
источник
Я удалил компиляцию 'com.android.support:support-v4:18.0.+' в зависимости, и это работает
источник
Я смог решить проблему в своем собственном проекте, просто добавив
в конце моего файла Android \ app \ build.gradle
источник
Наконец, я решил это, модифицируя эти атрибуты в файле модуля gradle.
источник
У меня была такая же проблема при добавлении
react-native-palette
в мой проект, вот мое дерево зависимостей:Я перепробовал много солютонов и не смог это исправить, пока не сменил
com.android.support:appcompat
версиюandroid/app/build.gradle
, хотелось бы, чтобы это помогло:кажется, что несколько записей не является большой проблемой, несоответствие версий
источник
Получил это работает для
compile file('...')
конфликта, увеличив minSdkVersion до 21 и включив мультидекс. Не уверен, что это лучшее решение, но единственный способ заставить его работать в моем случае.Примечание: поскольку
compile file('...')
кажется, что вы не можете вставитьexclude
предложение, чтобы опция была недоступна.источник
У меня была та же проблема, и мое решение - изменить версию поддержки «27. +» (27.1.0) на «27 .0.1».
источник
У меня была такая же проблема. В моем проекте у меня были следующие зависимости:
По устаревшим причинам appcompat был получен из репозитория Google Maven, тогда как поддержка android была локальной .jar.
Когда я понял это и заменил эту локальную ссылку на ссылку maven, это просто решило мою проблему сборки.
Вот разница моего приложения / build.gradle:
источник
Я решил все свои проблемы, добавив это в project.properties
источник
Получил следующую ошибку
Не удалось выполнить задачу ': app: transformDexArchiveWithDexMergerForDebug'.
Исправлено: перейти в Build -> Clean Project
источник