Java.lang.IllegalStateException: Dex archives: setting.Extension DEX uniquement pour.Les fichiers de CLASSE

je construis le projet à gitlab ci

./gradlew assembleDebug --stacktrace

et parfois, il renvoie une erreur:

FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:transformClassesWithDexBuilderForDebug'.
> com.android.build.api.transform.TransformException: java.lang.IllegalStateException: Dex archives: setting .DEX extension only for .CLASS files

À mon pc local il fonctionne correctement.

la version de kotlin est 1.2

multidex est activé

Quelle est la raison de cette erreur?

25
demandé sur m.myalkin 2017-12-13 13:51:51

8 réponses

./gradlew clean fixe la même erreur pour moi.

57
répondu mixel 2018-01-12 18:45:39

Il semble que j'ai trouvé la solution. Au moment de la construction Grad Le me mettait en garde:

Configuration 'compile' in project ':app' is deprecated. Use 'implementation' instead.

app: 'androidProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'com.arello-mobile:moxy-compiler:1.5.3' and apply the kapt plugin: "apply plugin: 'kotlin-kapt'".

j'ai fait une faute d'orthographe et j'ai oublié de supprimer les annotationProcessor pour la bibliothèque:

annotationProcessor "com.arello-mobile:moxy-compiler:$moxyVersion"
kapt "com.arello-mobile:moxy-compiler:$moxyVersion"

donc j'ai enlevé la première ligne.

Après que j'ai appliqué kapt plugin apply plugin: 'kotlin-kapt' et corrigé quelques erreurs de compilation dans le code après cela.

Après tout, j'ai réalisé que j'avais oublié de remplacer compileimplementation dans certains endroits. C'est bizarre, mais sans elle construire n'a pas fonctionné.

cette modification corrige mon erreur de compilation.

8
répondu m.myalkin 2017-12-25 17:38:09

la réponse ci-dessus est en grande partie juste mais dans mon cas, j'obtiens cette exception quand je crée le même nom java et kotlin file puis en supprime un.

Les Solutions sont: juste Build -> Nettoyage De Projet mon projet et il fonctionne. Et mon projet a également permis multiDex.

defaultConfig {
        ...
        // Enabling multidex support.
        multiDexEnabled true
    }
4
répondu Md Imran Choudhury 2018-01-26 14:56:06

j'ai pu résoudre le problème en fermant et en redémarrant Android Studio. Peut-être même un Projet de Reconstruction aurait aussi bien fait (n'essayez pas que si).

1
répondu dazed 2018-01-15 14:44:37

configurer pour multidexing n'a pas résolu ce problème pour moi.

cependant j'ai trouvé une résolution...de toutes sortes. Fondamentalement, il s'agissait de créer une demande de pull pour une deuxième branche sur le même commit que la construction qui échouait. La construction de cette requête pull a réussi, et puis Bitbucket a pensé que la requête pull originale était ok et nous a permis de fusionner, même si nous n'avions pas fait de changements sur cette branche. Il y a là quelque chose de bizarre inexpliqué, mais la technique a marché.

Voici comment j'ai fait:

supposons que la branche qui échoue s'appelle bad-branch.

j'ai créé une nouvelle branche appelée bad-branch-copy sur la Commission qui était commune entre bad-branch et develop. Puis j'ai fusionné bad-branch en bad-branch-copy. Le résultat final fut une progression rapide telle que bad-branch-copy fini sur la même livraison que bad-branch. Je m'attendais à un engagement séparé donc ce résultat m'a surpris, mais je m'accrochais à des pailles de toute façon donc j'ai continué.

j'ai ensuite poussé bad-branch-copy GitHub et créé une demande d'extraction de bad-branch-copydevelop. Cela a déclenché une construction sur , ce qui fut un succès.

À ce moment, buddybuild a montré une construction réussie sur et encore a montré une défaillance sur bad-branch ->develop. Cependant, Bitbucket a montré une construction réussie sur la demande de pull pour bad-branch. Oui, c'est vrai: buddybuild a montré un échec mais Bitbucket a dit que c'était ok.

nous avons alors pu fusionner les bad-branch pull request et tout allait bien avec le monde. Ne me demandez pas pourquoi, je ne répondrai pas. :)

je pense que la même chose peut être accompli grâce à

git checkout bad-build
git checkout -b bad-build-copy
git push origin bad-build-copy

suivi de la création d'une demande de pull pour une mauvaise copie de compilation.

1
répondu roobyroo 2018-01-19 17:42:44

Comme mentionné ci-dessus par @mixel nettoyage fait le travail. Mais comme une option pour ne pas le faire manuellement, il suffit d'ajouter la tâche gradle 'clean' dans la configuration d'exécution de l'application afin qu'elle soit faite tout le temps avant le lancement. De la source, il peut ralentir l'ensemble du processus un peu.

0
répondu oshurmamadov 2018-04-20 09:20:00

ce qui a résolu le problème pour moi était d'ajouter manuellement tous les fichiers en conflit. Par exemple dans mon gradle fichier que j'avais :

implementation 'com.android.support:support-compat:27.1.1'

il a été souligné à lire. J'ai survolé la ligne et android studio a dit qu'il y avait un conflit avec un autre fichier en utilisant une version moindre. L'erreur est semblable,

venir.Android.support: support-annotations: 26.0.1 conflits / mixage versions avec 27.1.1.

Il m'a donné les noms des les fichiers et je les ai ajoutés manuellement avec la version correspondante pour qu'ils correspondent tous

compile 'com.android.support:support-annotations:27.1.1'
compile 'com.android.support:support-compat:27.1.1'
compile 'com.android.support:support-core-ui:27.1.1'
compile 'com.android.support:animated-vector-drawable:27.1.1'
compile 'com.android.support:appcompat-v7:27.1.1'
compile 'com.android.support:design:27.1.1'
0
répondu JenniferG 2018-05-09 06:16:06

veuillez trouver ici la solution de ce problème,

 defaultConfig {
        ...
        minSdkVersion 14
        targetSdkVersion 21
        ...

        // Enabling multidex support.
        multiDexEnabled true
    }
dependencies {
  compile 'com.android.support:multidex:1.0.0'
}
-2
répondu Fenil Patel 2017-12-13 12:11:17