Solución a Error con el DexFile en Android Studio(Null, Cannot fit requested classes in a Single Dexfile).

Solución a Error con el DexFile en Android Studio(Null, Cannot fit requested classes in a Single Dexfile).

Alain Nicolás Tello Alain Nicolás Tello
4 minutos

DexFile, solución al error en Android Studio

Vamos a ver la solución a Error con el DexFile en Android Studio(Null, Cannot fit requested classes in a Single Dexfile).


¿Estabas programando normalmente 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.

 

Problema 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 linea 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 linea 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 limite 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 debido a que una APK que es compatible con versiones inferiores a android 5(API 21), trabaja con Dalvik, y ese ejecutable esta 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 1,024, por lo tanto, 64 x 1,024 es igual a 65536, exacto, nuestro número clave en este error. Este límite es denominado “límite de referencia de 64k”.

 

Solución:

Ahora que sabemos que 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 limite establecido por default.

 

Paso 1: Abre tu archivo de build.gradle(Module:app).

error con el dexfile en android
Build.gradle by CursosAndroidANT

 

Paso 2: Ubícate dentro del bloque de código llamado defaultConfig.

dexfile

 

Paso 3: Agrega la siguiente linea:

multiDexEnabled true
dexfile
enable support for dexfile by CursosAndroidANT

 

Paso 4: Ahora ve más abajo y encuentra las dependencias.

dexfile
dependencies block by CursosAndroidANT

 

Paso 5: Agrega la siguiente linea:

implementation ‘androidx.multidex:multidex:2.0.1’
library for dexfile by CursosAndroidANT

 

Paso 6: Sincroniza.

¡Listo! Ya debes poder seguir trabajando con tu proyecto.

 

Recursos de interes:

Vídeotutorial sobre cómo aplicar esta solución en un proyecto android:

Fuente de multidex, por si necesitas revisar cual es la versión más actualizada:

https://developer.android.com/jetpack/androidx/releases/multidex

Espero que te sirva y nos leemos muy pronto con más contenido.


Además, si quieres tener acceso a los cursos de Allan Nicolás Tello, haz clic aquí y visita nuestra ruta de aprendizaje android. Sin duda, aprenderás mucho conocimiento.

Selecciona tu curso de preferencia y accede al mejor descuento.

Profesional en Material Design/Theming para Android. UX y UI

Experto en Firebase para Android + MVP Curso Completo +30hrs


Por último, si te gusta la información que traemos para ti, dale “Me Gusta” a nuestra página de Facebooksí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 para ti. En definitiva, una gran oportunidad para aprender.

« Volver al Blog

Obtener mi regalo ahora