Plusieurs fichiers dex définissent / BuildConfig, impossible de trouver la cause:

J’utilise le nouveau système de construction graduel et je suis confronté au problème suivant:

UNEXPECTED TOP-LEVEL EXCEPTION: com.android.dex.DexException: Multiple dex files define Lcom/kibo/mobi/BuildConfig; at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:594) at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:552) at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:533) at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:170) at com.android.dx.merge.DexMerger.merge(DexMerger.java:188) at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:439) at com.android.dx.command.dexer.Main.runMonoDex(Main.java:287) at com.android.dx.command.dexer.Main.run(Main.java:230) at com.android.dx.command.dexer.Main.main(Main.java:199) at com.android.dx.command.Main.main(Main.java:103) 

Imitant les dépendances, je ne vois rien, les voici:

  firstDebugComstack - ## Internal use, do not manually configure ## \--- KiboGradle:KiboSDK:unspecified +--- KiboGradle:TextInputAPI:unspecified +--- KiboGradle:VoiceImeUtils:unspecified +--- com.google.android.gms:play-services:5.0.77 | \--- com.android.support:support-v4:19.1.0 +--- com.squareup.picasso:picasso:2.3.2 +--- com.google.code.gson:gson:2.2.4 \--- com.crittercism:crittercism-android-agent:4.5.1 

J’ai essayé de vérifier que le problème n’était pas une bibliothèque de support dupliquée alors j’ai essayé d’append:

 comstack ('com.google.android.gms:play-services:5.0.77'){ exclude module: 'support-v4' } 

Ce qui entraînait des erreurs dans le fait que certaines des classes de la bibliothèque support-v4 étaient introuvables, de sorte que cette bibliothèque ne soit pas compilée depuis un autre emplacement.

Une chose que je pensais être à l’origine de ce problème est le fait que j’utilise les fonctions Flavors dans oreder pour créer plusieurs versions de mon application avec des fichiers de réponse différents.

Et quand je regarde le fichier qui est dans l’erreur, je vois ceci:

 ** * Automatically generated file. DO NOT MODIFY */ package com.kibo.mobi; public final class BuildConfig { public static final boolean DEBUG = Boolean.parseBoolean("true"); public static final Ssortingng PACKAGE_NAME = "com.kibo.mobi.test.official"; public static final Ssortingng BUILD_TYPE = "debug"; public static final Ssortingng FLAVOR = "liverpool"; public static final int VERSION_CODE = 1; public static final Ssortingng VERSION_NAME = "1.0"; } 

Le package dans le fichier et le package spécifié dans la valeur Ssortingng ne sont donc pas les mêmes.

Quelqu’un peut-il voir des problèmes dans ma configuration susceptibles de causer ce problème?

Dans mon cas, l’erreur similaire s’est produite car il y avait 2 modules avec le même nom de package dans les fichiers AndroidManifest.xml. L’utilisation de noms de packages différents dans les modules a résolu le problème.

La même chose se produit quand un fichier de bibliothèque est inclus deux fois (ou plus) dans plusieurs modules, en tant que dépendance. Dans ce cas, le message d’erreur dit à propos des configurations en double nommées après le nom du paquet de cette bibliothèque. Je l’ai résolu en incluant la bibliothèque en tant que dépendance dans un module, et le deuxième module en dépendait le premier module.

Ajoutez ceci à votre build.gradle:

 android { dexOptions { preDexLibraries = false } } 

Je suppose que de cette façon, il n’y a pas de conflit entre BuildConfig.java .

MODIFIER:

Pourquoi ce qui précède fonctionne-t-il: Le studio Android déxxera d’ abord les bibliothèques avant de déx-doser le module d’application. Si vous avez un module de bibliothèque avec le même nom de package que votre module d’application, ce pré- BuildConfig.java un BuildConfig.java dans le même package que celui de l’application.

Le ‘pre-dexing’ ne ralentira pas un peu votre processus de compilation, alors je vous suggère de modifier le nom du package de votre bibliothèque à la place.

Pour moi, le simple fait de nettoyer le projet a effacé cette erreur.

Je commençais à avoir ce problème en signant mon apk instantané . Le problème:

module / app / manifest.xml incorrect

   

bon: module / app / manifest.xml

   

Il suffit d’append le .app à la fin du nom du paquet