Plusieurs fichiers dex définissent Landroid / support / v4 / accessibilityservice / AccessibilityServiceInfoCompat


Answers

J'ai résolu une erreur similaire en ajoutant le morceau de code suivant à mon fichier build.gradle dans le bloc android.

android {
    dexOptions {
        preDexLibraries = false
    }
}
Question

Si gradle assembleDebug de la ligne de commande, je reçois soudainement cette erreur:

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)

Si je grep pour v4, je vois deux fichiers dans mon dossier de construction.

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

Mon fichier Gradle inclut uniquement cette bibliothèque de support:

compile 'com.android.support:support-v13:19.0.0'

Je suis perplexe quant à la façon dont la bibliothèque r7 est incluse d'une manière ou d'une autre. J'ai exécuté gradle clean et il apparaît toujours quand je relance assembleDebug.

Si je grep pour r7 dans le répertoire de construction, je le vois dans le fichier:

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

Si je n'inclue pas v13, alors d'autres choses ne compilent pas.

Mais v13 ne comprend pas la bibliothèque de support v4?

Est-ce une incompatibilité entre le bundle AAR des services de jeu et la bibliothèque v13?

J'ai attrapé le fichier gradle de gradleplease.appspot.com.

La suppression des services de lecture ne le résout pas; même erreur.

Mes dépendances à l'intérieur de 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'
}



Dans Android Studio, accédez à build.gradle (vérifiez les fichiers build.gradle de projet et de module) et recherchez les dépendances en double.

Supprimez ceux dont votre projet n'a pas besoin.




Une méthode de résolution de problème similaire dex

Le fichier gradle.build contenait:

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'

Le problème a été résolu lorsque j'ai supprimé

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

Mon gradle ressemble maintenant à:

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'
}

Il y avait une redondance dans le fichier JAR et le projet gradle compilé

Alors, cherchez les dépendances et les fichiers jar ayant les mêmes classes.

Et supprimez la redondance.
Cela a fonctionné pour moi.




Depuis Une image vaut mille mots

Pour rendre la tâche plus facile et plus rapide aux débutants comme moi. ce sont les captures d'écran qui montrent la réponse postée par @ edsappfactory.com qui a fonctionné pour moi:

Commencez par ouvrir la vue Gradle sur le côté droit d'Androidstudio:

Deuxièmement, vous verrez quelque chose comme ceci:

La principale raison pour laquelle j'ai posté cela qu'il n'était pas facile de savoir où exécuter une tâche gradle ou les commandes affichées ci-dessus. Voilà donc où les excuter aussi.

SO, pour exécuter la commande gradle:

Premier:

Seconde:

Facile comme c'est.

C'est tout.

Je vous remercie.







J'ai résolu tous mes problèmes en ajoutant cela dans project.properties

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



J'ai eu le même problème, et ma solution change la version du support '27. + '(27.1.0) en '27 .0.1'




La suppression de tous les fichiers du cache Gradle a résolu mon problème.

sur Linux:

cd ~/.gradle  
rm -R -f *



exclude module: 'support-v4'

Ne fonctionnerait pas pour moi avec une dépendance de projet, la seule façon de le faire fonctionner était via la syntaxe suivante:

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

Où: Android-SDK est le nom de votre projet.




J'utilise com.google.android.gms:play-services-analytics:8.3.0 et android-support-v13.jar et ne peut pas obtenir le exclude module: 'support-v4' pour fonctionner.

Ce qui fonctionnait pour moi utilisait l'artefact android-support-v13 plutôt que le fichier android-support-v13.jar .

C'est à dire au lieu de

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

}

j'ai utilisé

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

}




J'ai eu la même erreur sur un projet hérité. Ma faute était que la bibliothèque de support a été incluse deux fois: une fois dans google-play-services lib, et une autre comme autonome.

Voici comment je l'ai réparé:

BAD build.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'
}

BONNE build.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'
}

J'espère que ça aide quelqu'un :-)




J'ai eu le même problème lors de l'ajout de react-native-palette à mon projet, voici mon arbre de dépendances:

./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 (*)

J'ai essayé beaucoup de solutons et je n'ai pas pu le réparer, avant de changer la version de com.android.support:appcompat dans android/app/build.gradle , je souhaite que cela aide:

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:+"
}

il semble que plusieurs entrées ne soit pas un gros problème, la différence de version est




Links