web-dev-qa-db-fra.com

Erreur lors de la conversion du bytecode en dex: cause: Java.lang.RuntimeException: classes d'analyse des exceptions - Android studio 2.0 beta 6

J'ai mis à jour la dernière version d'Android Studio 2.0 Bêta 6 avec le diplôme:

dependencies {
    classpath 'com.Android.tools.build:gradle:2.0.0-beta6'
}

L'application fonctionne parfaitement sur les émulateurs et les périphériques. J'ai tout testé et tout fonctionne bien.

J'ai eu beaucoup d'erreurs seulement quand j'essaie de générer l'APK signé,

J'ai eu quelques erreurs dans les dépendances, toutes résolues quand j'ai exclu vector drawable, vector animate drawable et bibliothèque Support-v4

Maintenant, je n'ai pas d'erreur de dépendance.

maintenant mon gradle.build pour le module d'application ressemble à ceci:

apply plugin: 'com.Android.application'

Android {
    configurations {
        //all*.exclude group: 'com.Android.support', module: 'support-v4'
        all*.exclude module: 'animated-vector-drawable'
        all*.exclude module: 'support-vector-drawable'
        //all*.exclude module: 'support-v4'

    }
    repositories {
        maven { url "https://jitpack.io" }

    }
    compileSdkVersion 23
    buildToolsVersion '23.0.2'
    defaultConfig {
        applicationId "com.test.test"
        minSdkVersion 11
        targetSdkVersion 23
        versionCode 1
        versionName "1"

//        multiDexEnabled true
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
        }
    }
    productFlavors {
    }

}

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    compile('com.github.afollestad.material-dialogs:commons:0.8.5.5@aar') {
        transitive = true
        exclude module: 'support-v4'
        exclude module: 'appcompat-v7'
        exclude module: 'recyclerview-v7'
    }
    compile('com.google.Android.gms:play-services-ads:8.4.0') {
        exclude module: 'support-v4'
    }
    compile('com.google.Android.gms:play-services-analytics:8.4.0') {
        exclude module: 'support-v4'
    }
    compile('com.Android.support:appcompat-v7:23.2.0') {
        exclude module: 'support-v4'
        exclude module: 'animated-vector-drawable'
        exclude module: 'support-vector-drawable'
    }
    compile('com.Android.support:support-v4:23.2.0') {
        exclude module: 'animated-vector-drawable'
        exclude module: 'support-vector-drawable'
    }
    compile('com.Android.support:palette-v7:23.2.0') {
        exclude module: 'support-v4'
    }
    compile('com.Android.support:cardview-v7:23.2.0') {
        exclude module: 'support-v4'
    }
    compile('com.Android.support:recyclerview-v7:23.2.0') {
        exclude module: 'support-v4'
    }
    compile('com.Android.support:design:23.2.0') {
        exclude module: 'support-v4'
    }
    compile('com.nineoldandroids:library:2.4.0') {
        exclude module: 'support-v4'
    }
    compile('com.baoyz.swipemenulistview:library:1.2.1') {
        exclude module: 'support-v4'
        exclude module: 'appcompat-v7'
        exclude module: 'recyclerview-v7'
    }
    compile('com.squareup.picasso:picasso:2.5.2') {
        exclude module: 'support-v4'
    }
    compile('com.nononsenseapps:filepicker:2.5.0') {
        exclude module: 'support-v4'
        exclude module: 'appcompat-v7'
        exclude module: 'recyclerview-v7'

    }
    compile 'com.google.code.gson:gson:2.6.1'
}

Les erreurs n'apparaissent que lorsque je compile pour la publication:

C'est l'erreur quand j'active multiDex:

Error:Execution failed for task ':app:transformClassesWithMultidexlistForRelease'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1

Et c'est l'erreur quand je l'éteins:

:app:transformClassesWithDexForRelease
Error:Error converting bytecode to dex:
Cause: Java.lang.RuntimeException: Exception parsing classes

Error:Execution failed for task ':app:transformClassesWithDexForRelease'.

> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1

J'ai essayé de changer le buildToolsVersion '23.0.2' à chaque version possible et rien n'a changé.

quand j'ai mis la version 22.0.1 j'ai eu cette erreur:

Error:Error converting bytecode to dex:
Cause: com.Android.dx.cf.iface.ParseException: name already added: string{"a"}

Error:Execution failed for task ':app:transformClassesWithDexForRelease'.
> com.Android.build.api.transform.TransformException: com.Android.ide.common.process.ProcessException: Java.util.concurrent.ExecutionException: com.Android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Process 'command '/Library/Java/JavaVirtualMachines/jdk1.7.0_80.jdk/Contents/Home/bin/Java'' finished with non-zero exit value 1

J'ai essayé avec toutes les versions de bibliothèques de support possibles et le même résultat.

J'ai essayé avec Java 1.6 et 1.7 et rien n'a changé!

que peut être une autre solution possible s'il vous plaît?

23
MBH

J'ai également fait face à la même erreur, et je cherchais dans de nombreuses réponses existantes avec des dépendances en double ou multidex, etc., mais aucune ne fonctionnait. (Android studio 2.0 Beta 6, Outils de compilation 23.0.2, pas de multidex)

Il s'est avéré qu'une fois, j'ai utilisé un nom de paquet qui ne correspond pas à celui qui est décrit dans le manifeste.

Dans d'autres lignes de ParseException, j'ai découvert que j'avais des fichiers dans différents modules avec des noms/chemins de paquetages similaires pouvant éventuellement être en conflit avec le dexer.

Exemple:

Module A: com.example.xyz.ticketing.modulea.Interface.Java

Module B: com.example.Xyz.ticketing.moduleb.Enumerations.Java

Module C: A des dépendances sur A et B

Après avoir mis "Xyz" en minuscule, le dexer était à nouveau en ordre.

Comment savoir:

Quand j'ai regardé à travers la sortie de la console Gradle pour le ParseExceptions qui ressemble à ceci:

AGPBI: {"kind": "error", "text": "Erreur lors de la conversion du bytecode en dex:\nCause: Java.lang.RuntimeException: Exception lors de l'analyse de classes"

J'ai fait défiler près de la fin de l'exception. Il y a une partie dans cette longue ligne d'exception qui mentionne la cause:

Causé par: com.Android.dx.cf.iface.ParseException: nom de classe (at/dummycompany/mFGM/hata/hwp/BuildConfig) ne correspond pas à chemin (at/dummycompany/mfgm/hata/hwp/BuildConfig.class )

De cette façon, j'ai découvert où chercher les noms/chemins d'accès des paquets manquants

47
phil

il suffit de faire Build > Clean Project Attendre le nettoyage se termine puis Build > Rebuild Project, et l'erreur a disparu c'est tout. 

83
Mahdi Astanei

La solution pour moi consiste à modifier le fichier Build Gradle . J'ai découvert que le problème est une surcharge du GC (mémoire insuffisante).

Alors j'ajoute du code à ma configuration

Android {
  dexOptions {
    incremental = true;
    preDexLibraries = false
    javaMaxHeapSize "2g"
  } 
}

Il y a un autre problème avec proguard . Vous devez également définir minifyEnabled sur false.

10
MOSDEV

J'avais un nom de package incorrect dans l'une des classes d'assistance, d'où le problème. Vérifiez toutes les classes et assurez-vous que le nom du package est correct.

3
Tassu

Ma solution était différente, j'ai été ajouté ces lignes dans proguard-rules.pro

-optimizationpasses 5
-overloadaggressively
-repackageclasses ''
-allowaccessmodification

Assurez-vous de tout mettre à jour à partir du gestionnaire de SDK.

2

Si targetSdkVersion est une version 25 ou supérieure et que vous utilisez JDK 8, vous devez ajouter dans votre fichier build.gradle ce qui suit:

Android {
   compileSdkVersion 26
   buildToolsVersion "26.0.0"

    defaultConfig {
        ...        
        jackOptions {
            enabled true
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
}

Plus d'infos: https://stackoverflow.com/a/37294741

2
MiladAhmadi

Supprimer -overloadaggressively de mon proguard-rules.pro a corrigé cela pour moi.

Sinon, l'ajout de -useuniqueclassmembernames l'a également corrigé.

1
Josh Laird

J'ai essayé ./gradlew clean build, invalider le cache de studio, redémarrer l'ordinateur. Mais ce qui a résolu le problème, c'est désactiver Instant run

1
Defuera

Dans mon cas, il y a un cours que j'ai fait que je n'ai pas encore utilisé. Je dois donc supprimer la classe ou utiliser la classe.

0
ruelluna

Si vous rencontrez cette erreur, votre paquet dans manifest diffère certainement des autres que vous avez définis dans vos classes. Faites attention.

0
HPbyP

J'ai fait face à la même erreur. Apparaît que le fait de renommer un paquet en minuscule et une classe avait le libellé précédent.

0
Mir

Vous avez ce problème lorsque vous utilisez l'activité Android studio template for Login.
J'ai sélectionné le paquet "activité" dans lequel mettre mon activité.
Le modèle dans AndroidManifest.xml , au lieu de .activity.LoginActivity, utilisait le .LoginActivity, provoquant ainsi l’erreur. 

0

J'ai rencontré le même problème aujourd'hui et le problème était que dans mon Constants.Java classé j'ai défini (par erreur) 

public static final class Checkout {
.......
}

et

public static final class CHECKOUT {
......
}
0
Zahid Rasheed