Procesamiento multidex de Android

Habilite multidex para aplicaciones con más de 64K métodos

Cuando su aplicación y las bibliotecas a las que hace referencia superan los 65,536 métodos, encontrará un error de compilación que indica que su aplicación ha alcanzado el límite de referencia impuesto por el esquema de compilación de Android:

    problemas al escribir el resultado: 
    demasiadas referencias de campo: 131000; max es 65536. 
    Puede intentar usar la opción --multi-dex.
    

 

Las versiones anteriores del sistema de compilación informan de un error diferente, pero indican el mismo problema:

    Error de conversión al formato Dalvik: 
    no se puede ejecutar dex: el ID del método no está en [0, 0xffff]: 65536
    

 

Ambas condiciones de error muestran un número común: 65536. Este número representa el número total de referencias invocables por código dentro de un único archivo de código de bytes Dalvik Executable (DEX). Esta página describe cómo solucionar esta limitación habilitando una configuración de aplicación llamada "multi-dex", que permite que su aplicación compile y lea múltiples archivos DEX.

Acerca del límite de referencia de 64K

Los archivos de aplicaciones de Android (APK) contienen  archivos de código de bytes ejecutables en forma de archivos Dalvik  Executable (DEX) que contienen el código compilado utilizado para ejecutar su aplicación. La especificación Dalvik Executable limita la cantidad total de métodos a los que se puede hacer referencia dentro de un solo archivo DEX a 65,536, incluidos los métodos del marco de Android, los métodos de la biblioteca y los métodos en su propio código. En informática, el término kilo (K para abreviar) significa 1024 (o 2^10). Dado que 65.536 equivale a 64 X 1024, este límite se denomina "límite de referencia de 64K".

Soporte de archivos multidex para versiones anteriores a Android 5.0

Las versiones de plataforma anteriores a Android 5.0 (API nivel 21) usaban el tiempo de ejecución de Dalvik para ejecutar el código de la aplicación. De forma predeterminada, Dalvik limita las aplicaciones a un  classes.dex archivo de código de bytes por APK. Para evitar esta limitación, puede agregar la biblioteca de soporte multidex a su proyecto:

    dependencias { 
        implementación 'androidx.multidex:multidex:2.0.1' 
    }
       

 

Si no estás usando AndroidX, agrega las siguientes dependencias de biblioteca de soporte:

    dependencias { 
      implementación 'com.android.support:multidex:1.0.3' 
    }
    

 

Esta biblioteca pasa a formar parte del archivo DEX principal de la aplicación y luego administra el acceso a otros archivos DEX y el código que contienen. Para obtener más información, consulte la sección siguiente sobre cómo configurar su aplicación para multidex .

Nota : si su proyecto está configurado con un archivo multidex con  minSdkVersion 20 la versión 1 o inferior y lo implementa en un dispositivo de destino que ejecuta Android 4.4 (nivel de API 20) o inferior, Android Studio deshabilitará la  ejecución instantánea .

Soporte Multidex para Android 5.0 y superior

Android 5.0 (API nivel 21) y versiones posteriores utilizan un tiempo de ejecución llamado ART, que admite de forma nativa la carga de varios archivos DEX desde un archivo APK. ART realiza una precompilación en el momento de instalar la aplicación, escanea  classesN.dex los archivos y los compila en un solo  .oat archivo para su ejecución en el dispositivo Android. Entonces, si el tuyo  minSdkVersion es 21 o superior, no necesitas la biblioteca de soporte multidex.

Para obtener más información sobre el tiempo de ejecución de Android 5.0, lea  ART y Dalvik .

Nota : Al usar  Instant RunminSdkVersion ,  Android Studio configurará automáticamente su aplicación para archivos multidex  si configura su aplicación  en un valor de 21 o superior. Dado que Instant Run solo funciona con compilaciones de depuración de su aplicación, aún deberá configurar las compilaciones de lanzamiento para multidex para superar el límite de 64 KB.

Eludir el límite de 64K

Antes de configurar su aplicación para admitir el uso de referencias de métodos de 64 K o más, debe tomar medidas para reducir la cantidad total de referencias llamadas por el código de su aplicación, incluidos los métodos definidos por el código de su aplicación o las bibliotecas incluidas. Las siguientes estrategias pueden ayudarle a evitar alcanzar los límites de citas de DEX:

  • Verifique las dependencias directas y transitivas de su aplicación

Supongo que te gusta

Origin blog.csdn.net/qq_18757557/article/details/102823074
Recomendado
Clasificación