Respuestas:
Esta respuesta se basa en gran medida en la documentación oficial de Android (las partes citadas, específicamente).
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:
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
multiDexEnabled
atrue
en su archivo build.gradle de nivel de módulo, como se muestra aquí:
android {
defaultConfig {
...
minSdkVersion 21
targetSdkVersion 26
multiDexEnabled true
}
...
}
Sin embargo, si
minSdkVersion
está 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í:
android {
defaultConfig {
...
minSdkVersion 15
targetSdkVersion 26
multiDexEnabled true
}
...
}
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
3.2. Según si anula la clase de aplicación, realice una de las siguientes acciones:
- Si no anula la
Application
clase, edite su archivo de manifiesto para establecerloandroid:name
en la<application>
etiqueta de la siguiente manera:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<application
android:name="android.support.multidex.MultiDexApplication" >
...
</application>
</manifest>
- Si anula la
Application
clase, cámbiela para extender MultiDexApplication (si es posible) de la siguiente manera:
public class MyApplication extends MultiDexApplication { ... }
- 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:
public class MyApplication extends SomeOtherApplication {
@Override
protected void attachBaseContext(Context base) {
super.attachBaseContext(base);
MultiDex.install(this);
}
}
Verifique el error del manifiesto de otros complementos y limpie el proyecto. Y sysc nuevamente.
Si hay algún problema de dependencia en su proyecto, ejecute este comando en la Terminal de Android
% Gradle clean App."App name"
Copie estas dependencias en su Application Gradle, en dependencias:
compile fileTree(include: ['*.jar'], dir: 'bin')
compile fileTree(include: ['*.jar'], dir: 'libs')
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
Ahora sincronice su Gradle y cree el proyecto.
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.