web-dev-qa-db-fra.com

Qu'est-ce que Android MultiDex?

Il existe de nombreux articles sur MultiDex. J'ai parfois rencontré des erreurs, y compris multiDexEnabled true dans la section defaultConfig de mon build.gradle.

Mais, quelle est exactement cette fonctionnalité? Quels sont les scénarios pour l'utiliser?

90

Citant la documentation :

Les fichiers d'application Android (APK) contiennent des fichiers bytecode exécutables sous la forme de fichiers Dalvik Executable (DEX), qui contiennent le code compilé utilisé pour exécuter votre application. La spécification Dalvik Executable limite le nombre total de méthodes pouvant être référencées dans un fichier DEX unique à 65 536, y compris les méthodes de framework Android, les méthodes de bibliothèque et les méthodes de votre propre code. Dépasser cette limite. requiert que vous configuriez votre processus de génération d’application pour générer plus d’un fichier DEX, appelé configuration multidex.

Ainsi, la fonctionnalité est la suivante: elle permet à votre application complexe de se compiler. Les scénarios d'utilisation sont ceux où la compilation de votre application échoue à cause de la limite de référence de la méthode DEX 64K. Cela apparaît comme une erreur de construction, telle que:

Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
138
CommonsWare

C'est aussi simple que ça

Un seul fichier .dex peut avoir 65 536 méthodes (références). Ainsi, si le nombre de références dépasse 65 536, vous utilisez multidex.

Plus d'explications!

Un programme d'application Android est compilé dans un fichier .dex qui, à son tour, est compressé en un fichier .apk unique.
DVM (Dalvik Virtual Machine) utilise un fichier/des fichiers .dex pour exécuter les bytecodes.

Qu'est-ce qui fait que le nombre de références dépasse 65 536 limites?
Méthodes que vous avez écrites + Android Méthodes-cadre + Méthodes de bibliothèques tierces (par exemple, Volley, Retrofit, SDK Facebook, etc.).
J'ai lu "quelque part"
App Compat 24.2.1 contient 16,5k méthodes
GCM Services Google Play 9.6.1 contient 16,7k méthodes
Donc, si vous avez créé une application Hello world simple avec App Compat 24.2.1, vous êtes déjà 1/4 voies pour franchir la limite des méthodes dex simples

35
Rohit Singh

Qu'est-ce que MultiDex dans Android?

Dex signifie Dalvik Executable, ce que le processeur de machine virtuelle de Google (Dalvik) utilise pour gérer Android Applications. = Android a été conçu avec de petites applications simples à l’esprit et les contraintes imposées à un seul exécutable de Dalvik ont ​​épinglé le toit des références de code à 65 536 méthodes. En raison de ce problème et de la façon dont la machine Dalvik gère l’exécution de code dans cet environnement y avait quelques problèmes de compilation et d’invocation, jusqu’à ce que Monkey Patch ou l’intégration MultiDex . Intégration MultiDex dans Android Studio permet Android Les développeurs ont la possibilité de compiler et d’exécuter une base de code avec plus de 65 536 méthodes!

4
Farhana