El recuento del método de unidad excede el límite de 64K
20
Acabo de recibir un problema relacionado con un método de 64k en Unity, por eso no puedo construir mi proyecto. Muestra que la limitación del método excede el límite del recuento de métodos de 64k. Entonces, ¿alguien puede ayudarme a resolver este problema?
Cómo configurar el Soporte Multidex para Unity Project
¿Qué es Multidex?
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 una configuración multi-dex.
Cuando usamos Multidex:
Cuando superamos 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.
Evita el límite de 64K
Antes de configurar su aplicación para permitir el uso de 64K o más referencias de métodos, debe tomar medidas para reducir el número total de referencias llamadas por su código de aplicación, incluidos los métodos definidos por su código de aplicación o las bibliotecas incluidas. Las siguientes estrategias pueden ayudarlo a evitar alcanzar el límite de referencia DEX:
Revise las dependencias directas y transitivas de su aplicación : asegúrese de que cualquier dependencia de biblioteca grande que incluya en su aplicación se use de manera que supere la cantidad de código que se agrega a la aplicación. Un antipatrón común es incluir una biblioteca muy grande porque algunos métodos de utilidad fueron útiles. Reducir las dependencias del código de su aplicación a menudo puede ayudarlo a evitar el límite de referencia DEX.
Elimine el código no utilizado con ProGuard : habilite la reducción del código para ejecutar ProGuard para sus versiones de lanzamiento. La habilitación de la reducción asegura que no envíe código no utilizado con sus APK.
Además de estos consejos oficiales, al crear su proyecto de Unity, seguir estos pasos lo ayudará aún más:
Cree un proyecto de Android desde su editor de Unity.
Importa tu proyecto de Android en Android Studio.
La configuración de su proyecto de aplicación para usar una configuración de múltiples dex requiere que realice la siguiente modificación.
Si su minSdkVersion se establece en 21 o superior, todo lo que necesita hacer es configurar multiDexEnableda trueen su archivo build.gradle de nivel de módulo, como se muestra aquí:
Sin embargo, si minSdkVersionestá configurado en 20 o menos, entonces debe usar la biblioteca de soporte multidex de la siguiente manera:
3.1. Modifique el archivo build.gradle a nivel de módulo para habilitar multidex y agregue la biblioteca multidex como una dependencia, como se muestra aquí:
O si anula la clase de aplicación pero no es posible cambiar la clase base, puede anular el método attachBaseContext () y llamar a MultiDex.install (this) para habilitar multidex:
Agregue signConfig en sus proyectos principales Gradle.
O configure el modo de firma en modo de depuración manualmente, vaya a Archivo -> Estructura del proyecto -> En Módulos Haga clic en su proyecto y en Tipos de compilación seleccione Depurar -> elija Configuración de firma-> depuración
¿Qué tan grande es su proyecto que llevó a este error?
Evorlor
1
En realidad, estoy usando la mediación de Google AdMob, por lo que se usa para agregar 6-7 SDK de anuncios, por lo que mi recuento final del método de proyectos fue de aproximadamente 76k.
Rakesh
0
Te recomendaría pasar por este enlace que te ayudará a crear juegos habilitados para multidex directamente a través de la unidad.
Nota: Esto solo habilitará multidex en la unidad misma (y debería solucionar los problemas de multidex). No solucionará los problemas relacionados con gradle.
Actualmente, esta es una respuesta de solo enlace: aunque el enlace responde a la pregunta, la respuesta no. Es posible que desee incluir el núcleo del contenido vinculado aquí (el enlace per se no es malo, solo tiene el enlace que es malo).
Vaillancourt
Estoy de acuerdo contigo, pero los pasos escritos son demasiados. Es por eso que tuve que crear un artículo y compartir el enlace. Preferiría esa manera para tener solo una fuente de verdad en lugar de crear múltiples.
Abhishek Patidar
En comprender, pero no es así como funcionan los sitios de Stack Exchange: las respuestas de solo enlace se eliminan.¤ Si lo desea, puedo convertir esta respuesta en un comentario de la pregunta: mantendrá su referencia visible para los futuros usuarios, y ganamos No tengo un enlace solo respuesta. (¤El problema principal con las respuestas de solo enlace es que si desactiva su sitio (o su ISP se declara en quiebra con todos sus datos), esta respuesta no tendrá ningún valor; es por eso que la respuesta debería responder a la pregunta.)
Vaillancourt
Tener sentido. Convertiré mi respuesta a instrucciones completas.
Te recomendaría pasar por este enlace que te ayudará a crear juegos habilitados para multidex directamente a través de la unidad.
https://medium.com/@abhpatidar/solving-unity-dex-issue-538e134c8809
Nota: Esto solo habilitará multidex en la unidad misma (y debería solucionar los problemas de multidex). No solucionará los problemas relacionados con gradle.
fuente