2

Je viens de déplacer mon projet vers Android Studio 2.2 et je ne parviens pas à générer mon apk.DexIndexOverflowException après avoir migré vers Android Studio 2.2

J'ai reçu ce message d'erreur:

Erreur: Échec de l'exécution de la tâche ": l'application: transformClassesWithDexForRelease.

com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536

Que dois-je faire pour supprimer cette erreur?

+0

Si non, avez-vous toujours cette erreur si vous l'activez? – Michael

Répondre

1

compilation du projet générer un fichier dex, dex peut gérer jusqu'à 65536 méthodes.

Votre compilation du projet a plus de 65536 méthodes, vous devriez donc améliorer les dépendances ou permettre MultiDex, de diviser votre code dans plusieurs fichiers dex

Jetez un coup d'oeil ici https://developer.android.com/studio/build/multidex.html meilleure approche pour le résoudre dans votre Cas. Utilisez-vous la fonction minify de proguard?

3

Le nombre de références de méthode dans votre projet est supérieur à 65536, soit le nombre maximal pouvant exister dans un fichier dex. Dans ce cas, vous devez déclarer votre application de type MultiDex, dans les étapes suivantes:

1- Ajouter la dépendance multidex à votre niveau d'application build.gradle:

compile 'com.android.support:multidex:1.0.1' 

2- Activez l'multidex dans votre defaultConfigs en le niveau d'application build.gradle:

android { 

defaultConfig { 
    ... 

    // Enabling multidex support. 
    multiDexEnabled true 
    } 
... 
} 

3- Définir une nouvelle MyApplication de classe qui étend MultidexApplication, qui servira de point d'entrée de votre application.

public class MyApplication extends MultidexApplication 

4- Enfin, vous devez déclarer cette nouvelle classe dans votre AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
package="your.package.name"> 

<application 
    android:name=".path-to.MyApplication"> 
    ... 
</application> 
</manifest>