Несколько файлов dex определяют Landroid / support/v4 / accessibilityservice/AccessibilityServiceInfoCompat



если я запускаю 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 и он всегда появляется там, когда я перезапускаю assembleDebug.



если я grep для r7 внутри каталога сборки, я вижу его внутри файла:



Binary file build/exploded-bundles/ComGoogleAndroidGmsPlayServices4030.aar/classes.jar matches


если я не включаю v13, то другие вещи не компилируются.



но разве v13 не включает библиотеку поддержки v4?



это несовместимость между Play services AAR bundle и библиотекой v13?



Я схватил файл gradle из gradleplease.appspot.com.



удаление play services не исправляет его; та же ошибка.



мои зависимости внутри сборки.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'
}
720   25  

25 ответов:

выполнить gradle -q dependencies (или gradle -q :projectName:dependencies) для создания отчета о зависимостях. Вы должны увидеть, где r7 идет, например:

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    |    \--- com.google.android:support-v4:r7
|    +--- com.commonsware.cwac:camera:0.5.4
|    \--- com.android.support:support-v4:18.0.+ -> 18.0.0
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

затем используйте exclude директива для блокировки этой зависимости. В моем случае это происходит из моей библиотеки CWAC-Camera, и поэтому я использую:

dependencies {
    compile('com.commonsware.cwac:camera-v9:0.5.4') {
      exclude module: 'support-v4'
    }

    compile 'com.android.support:support-v4:18.0.+'
}

(где вторая compile заявление указывает, какую версию вы на самом деле хотите)

это должно прояснить ситуацию, как вы увидите, если вы запустите отчет о зависимости снова:

compile - Classpath for compiling the main sources.
+--- com.commonsware.cwac:camera-v9:0.5.4
|    +--- com.actionbarsherlock:actionbarsherlock:4.4.0
|    \--- com.commonsware.cwac:camera:0.5.4
\--- com.android.support:support-v4:18.0.+ -> 18.0.0

Я решил аналогичную ошибку, добавив следующий фрагмент кода в мой построить.gradle файл внутри блока android.

android {
    dexOptions {
        preDexLibraries = false
    }
}

Также обратите внимание, что вы можете увидеть свои зависимости от android, перейдя в свой Android Studio Gradle view и выбрав цель "androidDependencies".

еще один совет: у меня была эта проблема, пока я не удалил поддержку V4 lib из папки libs как в проекте, так и в связанных с ним проектах модуля/библиотеки.

С картинка стоит тысячи слов

чтобы сделать его проще и быстрее, чтобы получить эту задачу с новичками, как я. это скриншоты, которые показывают ответ, опубликованный @edsappfactory.com это сработало для меня:

первый откройте вид Gradle в правой части Androidstudio, в элементе вашего приложения перейдите к Tasks затем Android щелкните правой кнопкой мыши androidDependencies затем выбрать Run:

step 1

второй вы увидите что-то вроде этого :

Step 2

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

Итак, чтобы выполнить gradle команда:

первый:

first

второй:

second

просто, как это.

вот и все.

спасибо.

в случае, если кто-нибудь узнает, что ответ от CommonsWare не может быть применен к проекту библиотеки android, вот фрагмент для исправления

compile (проект(':yourAndroidLibrary')){ исключить модуль: поддержка-версии V13' }

вы найдете проблемы

найден неподдерживаемый метод Gradle DSL: 'exclude ()'

Если вы используете скомпилировать проект (': yourAndroidLibrary'){ исключить модуль: поддержка-версии V13' }

различия браслет " (" и ")" до "проект".

Я начал получать эту ошибку при обновлении до ButterKnife 8.5.1. Ни один из других ответов здесь не работал для меня.

Я gradle -q :app:dependencies чтобы увидеть дерево, а затем просмотрел файлы jar, пока не нашел конфликт. Конфликт зависимостей, butterknife на com.android.support:support-compat:25.1.0 содержит версию класса специальных возможностей и com.android.support:support-v4:23.1.1 также содержит класс.

я ее решил, изменив свою зависимость от этого:

compile 'com.jakewharton:butterknife:8.5.1'

to это:

compile('com.jakewharton:butterknife:8.5.1') {
    exclude module: 'support-compat'
}

это, кажется, не влияет на работу ButterKnife до сих пор.

Edit: есть лучшее решение, которое состояло в том, чтобы обновить мои библиотеки поддержки android, чтобы соответствовать ButterKnife:

compile('com.android.support:appcompat-v7:25.2.0')
compile('com.android.support:design:25.2.0')
compile 'com.jakewharton:butterknife:8.5.1'

У меня была такая же проблема, и похоже, что мое приложение было слишком много методов из-за библиотек: http://developer.android.com/tools/building/multidex.html

решил его с помощью:

android {
   defaultConfig {
   ...
   multiDexEnabled = true
   }
}

здесь ошибка: выполнение не удалось для задачи': app: dexDebug'. > comcommand закончил с ненулевым значением выхода 2

exclude module: 'support-v4'

не будет работать для меня с зависимостью проекта, единственный способ, которым я мог бы заставить его работать, был через следующий синтаксис:

configurations {
    dependencies {
        compile(project(':Android-SDK')) {
            compile.exclude module: 'support-v4'
        }
    }
}

где: Android-SDK-это имя вашего проекта.

У меня была такая же ошибка, но это было потому, что я недавно изменил использование v4 на v13. Так что все, что мне нужно было сделать, это очистить проект.

у меня была такая же ошибка на устаревший проект. Моя вина заключалась в том, что библиотека поддержки была включена дважды: один раз внутри Google-play-services lib, а другой-как автономный.

вот как я это исправил:

плохая сборка.Gradle в:

dependencies {
   compile files('libs/android-support-v4.jar') 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.android.gms:play-services:3.2.65'
}

хорошая сборка.Gradle в:

dependencies {
   // compile files('libs/android-support-v4.jar')  // not needed 
   compile files('libs/core-2.2.jar')
   compile files('libs/universal-image-loader-1.8.5-with-sources.jar')
   compile 'com.google.android.gms:play-services:3.2.65'
}

надеюсь, что это поможет кому-то: -)

в моем случае проблема была вызвана версия непоследовательности:

Build tools 25
compileSdk 24
targetSdk 24
Support library 24

решение было простым: сделать все версии 25

A как dex проблема решена методом

gradle.сборка содержала:

compile files('libs/httpclient-4.2.1.jar')
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'

проблема была решена, когда я удалил

compile files('libs/httpclient-4.2.1.jar') 

мой gradle теперь выглядит так:

apply plugin: 'com.android.application'

android {

compileSdkVersion 24
buildToolsVersion "24.0.3"

defaultConfig {
    applicationId "com.mmm.ll"
    minSdkVersion 16
    targetSdkVersion 24
    useLibrary  'org.apache.http.legacy'
}

buildTypes {
    release {
        minifyEnabled true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
    }
}
}

dependencies {

compile 'com.google.android.gms:play-services:6.1.+'
compile files('libs/PayPalAndroidSDK.jar')
compile files('libs/ksoap2-android-assembly-3.0.0-RC.4-jar-with-dependencies.jar')
compile files('libs/picasso-2.1.1.jar')
compile files('libs/gcm.jar')
compile 'com.android.support:appcompat-v7:24.2.1'
compile 'org.apache.httpcomponents:httpclient:4.5'
compile group: 'org.apache.httpcomponents' , name: 'httpclient-android' , version: '4.3.5.1'
}

было избыточность в файле JAR и скомпилированном проекте gradle

так остро искать зависимость и jar файлы, имеющие же занятия.

и удалить избыточность.
Это сработало для меня.

Если вы импортировали свой проект из затмение.

1. The select project 
2. Go to File -> **Project Structure**
3. Select app in **module** section on left hand panel
4. Select **Dependency** tab
5. Your able to see jars you have added in eclipse project for v4 and v13.
6. Remove that jar by clicking on minus sign at bottom after selection
7. Click on Plus sign select **Library Dependency** 
8. Choose V4 and V13 if added
9. Press Ok and Clean and Rebuild your project

сценарий, с которым я столкнулся после импорта проекта Eclipse в Android studio.

надеюсь, что это помогает..

Я использую com.google.android.gms:play-services-analytics:8.3.0 и android-support-v13.jar и не мог получить exclude module: 'support-v4' на работу.

что работал для меня было использование android-support-v13 артефакт, а не .

то есть вместо

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile files('libs/android-support-v13.jar')

}

Я

dependencies {
compile ('com.google.android.gms:play-services-analytics:8.3.0')
compile ('com.google.android:android-support-v13')

}

удаление всех файлов из кэша Gradle исправлена моя проблема.

на Linux:

cd ~/.gradle  
rm -R -f *

Это раздражает проблема, которая может занять некоторое время, чтобы узнать корневой случай. Способ, которым вы должны действовать, - это ответ @CommonsWare.

Я столкнулся с этой проблемой недавно и нашел его трудно решить.

моя проблема заключалась в том, что я включал библиотеку по версии "+" в сборку.градля. Последняя версия библиотеки содержала один из старых dex и bang.

Я вернулся к старой версии библиотеки и решить ее.

хорошо работать ваши андроидзависимости и посмотреть, что происходит на самом деле. Его также хорошо искать в папке сборки.

прежде всего Android Studio 2.2 обеспечить в функции сборки для отслеживания этой проблемы.

Счастливые Ребята Кодирования

В Android Studio, перейдите к вашей сборке.gradle (проверьте как проект, так и модули сборки.gradle files) и поиск повторяющихся зависимостей.

удалите те, которые не нужны вашему проекту.

Я удалил компиляции в COM.андроид.поддержка: поддержка-v4: 18.0.+' в зависимостях, и это работает

наконец, я решил его, модифицируя эти атрибуты в файле модуля gradle

  1. compileSdkVersion 25
  2. targetSdkVersion 25
  3. compile ' com.андроид.поддержка: appcompat-v7:+'
  4. compile ' com.андроид.поддержка: recyclerview-v7:+'

у меня была такая же проблема при добавлении react-native-palette для моего проекта, вот мое дерево зависимостей:

./gradlew app:dependencies
+--- project :react-native-palette
|    +--- com.facebook.react:react-native:0.20.+ -> 0.44.2
|    |    +--- javax.inject:javax.inject:1
|    |    +--- com.android.support:appcompat-v7:23.0.1
|    |    |    \--- com.android.support:support-v4:23.0.1
|    |    |         \--- com.android.support:support-annotations:23.0.1 -> 24.2.1
...
|    \--- com.android.support:palette-v7:24.+ -> 24.2.1
|         +--- com.android.support:support-compat:24.2.1
|         |    \--- com.android.support:support-annotations:24.2.1
|         \--- com.android.support:support-core-utils:24.2.1
|              \--- com.android.support:support-compat:24.2.1 (*)
+--- com.android.support:appcompat-v7:23.0.1 (*)
\--- com.facebook.react:react-native:+ -> 0.44.2 (*)

Я пробовал много растворов и не мог это исправить, пока не изменил com.android.support:appcompat версия android/app/build.gradle, Я хочу, чтобы это может помочь:

dependencies {
    compile project(':react-native-palette')
    compile project(':react-native-image-picker')
    compile project(':react-native-camera')
    compile fileTree(dir: "libs", include: ["*.jar"])
    // compile "com.android.support:appcompat-v7:23.0.1"
    compile "com.android.support:appcompat-v7:24.2.1"
    compile "com.facebook.react:react-native:+"
}

кажется, что несколько записей не является большой проблемой, несоответствие версии

Он работает для compile file('...') конфликт путем увеличения minSdkVersion до 21 и включения multidex. Не уверен, что это лучшее решение, но единственный способ заставить его работать в моем случае.

Примечание:compile file('...') похоже, что вы не можете положить в exclude предложение, так что этот вариант не был доступен.

У меня была та же проблема, и мое решение меняет версию поддержки '27.+'(27.1.0) до 27.0.1'

У меня была такая же проблема. В моем проекте, у меня были следующие зависимости :

  • appcompat-v7
  • android-поддержка-v13

по устаревшим причинам appcompat был извлечен из репозитория Google Maven, в то время как поддержка android была локальной .сосуд.

когда я понял это и заменил эту локальную ссылку ссылкой maven, она просто решила мою проблему сборки.

вот разница моего приложения / сборки.Gradle в :

enter image description here

Я решил все мои проблемы, добавив это в проект.свойства

cordova.system.library.7=com.android.support:appcompat-v7:27.1.0

получено следующее сообщение об ошибке

не удалось выполнить задачу': app: transformDexArchiveWithDexMergerfordebug'.

com.андроид.строить.прикладной программный интерфейс.преобразиться.TransformException: com.андроид.Декс.DexException: несколько файлов dex определяют Landroid / support / constraint/ConstraintSet$1

исправить: перейти к Build - > Clean Project

Comments

    Ничего не найдено.