Vamos a ver la solución para el error con el DexFile en Android Studio: Null, Cannot fit requested classes in a Single Dexfile).
¿Estabas programando tan tranquilo y de pronto te ha salido alguno de estos mensajes?
Null, Cannot fit requested classes in a Single Dexfile(# methods: n > 65536)
Conversion to Dalvik format failed:
Unable to execute dex: method ID not in [0, 0xffff]: 65536
Descuida, aquí encontrarás la razón y solución para que no te vuelva a pasar.
El problema con DexFile
En primer lugar, identificamos el problema. Uno de los errores más comunes a la hora de trabajar en aplicaciones grandes o que llevan consigo múltiples librerías, es que nos damos cuenta que de pronto aparece un terrible error diciéndonos:
Null, Cannot fit requested classes in a Single Del file (# methods: n > 65536)
Sin más información por parte de Android Studio para localizar la línea que causó este error, puede ser un poco frustrante si es la primera vez que vemos este tipo de mensaje.
De hecho, no hay una línea en nuestro código que hayamos escrito y que lo esté causando.
La explicación del problema
Por default los proyectos en Android tienen un límite de métodos que pueden ser invocados dentro de un mismo archivo de código (Dalvik Executable (DEX)). Este número es precisamente 65536. Esto es debido a que una APK que es compatible con versiones inferiores a Android 5 (API 21), trabaja con Dalvik, y ese ejecutable está limitado a 65536 métodos. Esto incluye el framework de Android, dependencias y nuestro código escrito dentro de nuestro proyecto.
Técnicamente hablando, el término “kilo”, y su símbolo, “k”, hacen referencia a 1024, por lo tanto, 64 x 1024 es igual a 65536. ¡Exacto! Ni más ni menos que nuestro número clave en este error. Este límite es denominado “límite de referencia de 64k”.
Solución al problema
Ahora que sabemos qué ha causado que nuestro proyecto deje de compilar correctamente, vamos a proceder a solucionar este detalle.
Para ello, basta con indicarle explícitamente a gradle que nuestro proyecto puede rebasar este límite establecido por default.
Paso 1: Abre tu archivo de build.gradle(Module:app).
Paso 2: Ubícate dentro del bloque de código llamado defaultConfig.
Paso 3: Agrega la siguiente línea:
multiDexEnabled true
Paso 4: Ahora ve más abajo y encuentra las dependencias.
Paso 5: Agrega la siguiente línea:
implementation ‘androidx.multidex:multidex:2.0.1’
Paso 6: Sincroniza.
¡Listo! Ya debes poder seguir trabajando con tu proyecto porque hemos solucionado el problema.
Recursos de interes
Y aquí te dejamos un vídeo tutorial sobre cómo aplicar esta solución en un proyecto Android.
Por aquí también te dejamos la fuente de multidex, por si necesitas revisar cuál es la versión más actualizada:
https://developer.android.com/jetpack/androidx/releases/multidex
Espero que este artículo te haya sido de utilidad. Nos leemos muy pronto con más contenido.
Además, si quieres tener acceso a los cursos de Alaín Nicolás Tello, haz clic aquí y visita nuestra ruta de aprendizaje Android. Sin duda, aprenderás mucho y ganarás muchos conocimientos en este área.
Selecciona tu curso de preferencia y accede con el mejor descuento.
Profesional en Material Design/Theming para Android. UX y UI
Experto en Firebase para Android + MVP Curso Completo +30hrs
Y ya para acabar, si te gusta la información que traemos para ti, dale “Me Gusta” a nuestra página de Facebook; síguenos a través de nuestro canal de Youtube, donde puedes ver el distinto material que preparamos para ti; y, si lo deseas, puedes suscribirte a nuestra página para recibir un regalo digital que preparamos especialmente para ti.
En definitiva, una gran oportunidad para aprender.
¡Nos vemos en clase!