que - ¿Qué es Android MultiDex?
multidex in kotlin (3)
Hay muchas publicaciones sobre MultiDex.
He experimentado, a veces, errores resueltos, incluido
multiDexEnabled true
en la sección
defaultConfig
de mi build.gradle.
Pero, ¿qué es exactamente esta característica? ¿Cuáles son los escenarios para usarlo?
Es tan simple como esto
Un solo archivo .dex puede tener 65.536 métodos (referencias), por lo que si el número de referencias excede los 65.536, puede usar multidex.
¡Más explicación!
Un programa de aplicación de Android se compila en un archivo .dex que a su vez se comprime en un solo archivo .apk.
DVM (Dalvik Virtual Machine) utiliza archivos / archivos .dex para ejecutar códigos de bytes.
¿Qué causa que el número de referencias exceda los límites de 65,536?
Métodos escritos por usted + Métodos de Android Framework + Métodos de biblioteca de terceros (por ejemplo, Volley, Retrofit, Facebook SDK, etc.).
He leído "en alguna parte"
App Compat 24.2.1 contiene 16.5k métodos
Google Play Services GCM 9.6.1 contiene 16.7k métodos
Entonces, si ha creado una aplicación simple Hello World que tiene App Compat 24.2.1, ya tiene
1/4 de forma
de cruzar el límite de métodos de dex.
Citando la documentación :
Los archivos de la aplicación de Android (APK) contienen archivos ejecutables de bytecode en forma de archivos Dalvik Executable (DEX), que contienen el código compilado utilizado para ejecutar su aplicación. La especificación ejecutable Dalvik limita el número total de métodos a los que se puede hacer referencia dentro de un solo archivo DEX a 65.536, incluidos los métodos de marco de Android, los métodos de biblioteca y los métodos en su propio código. Superar este límite requiere que configure el proceso de compilación de su aplicación para generar más de un archivo DEX, conocido como configuración multidex.
Entonces, la característica es: permite que su aplicación compleja se compile. Los escenarios para usarlo son cuando su aplicación no se puede compilar debido a que alcanza el límite de referencia del método DEX de 64K. Esto aparece como un error de compilación, como:
Conversion to Dalvik format failed: Unable to execute dex: method ID not in [0, 0xffff]: 65536
Dex significa Dalvik Executable, que es lo que utiliza el procesador de máquina virtual de Google (Dalvik) para manejar aplicaciones de Android. Android se creó con aplicaciones pequeñas y simples en mente y las limitaciones de un solo ejecutable de Dalvik fijaron el techo de referencias de código en 65,536 métodos. Debido a este problema y la forma en que la máquina Dalvik maneja la ejecución del código, hubo algunos problemas de compilación e invocación, hasta la integración de Monkey Patch o MultiDex . ¡La integración de MultiDex en Android Studio permite a los desarrolladores de Android la capacidad de compilar y ejecutar una base de código con más de 65,536 métodos!