while unable tutorial support studio not minifyenabled merging error dexing dexarchivemergerexception could archives application android gradle android-multidex

unable - gradle-Android Studio crea una aplicación multidex demasiado lenta



multidex in kotlin (4)

Depende.

No lo ha especificado en su pregunta, pero si solo desea acelerar sus desarrollos de desarrollo, puede evitar el trabajo adicional. La documentación oficial incluye toda una sección al respecto.

Cuando agrego a mi proyecto el multidex: true, y hago una clase de aplicación que se extiende desde la aplicación MultiDex, el tiempo de compilación de mi proyecto pasó de 20 segundos a alrededor de 90 segundos. ¿Cómo hacer algo más rápido?


El suministro como respuesta porque esto encaja mejor con el formato.

Para simplemente responder a su pregunta: No, no hay manera. Multidex es un proceso destinado a ayudar a levantar la carga del límite del método de 65k. Este proceso es complicado y simplemente hará que sus tiempos de compilación sean más largos.

Lo mejor que puedes hacer es disminuir el número de métodos.

En tu build.gradle ( suministrado aquí ) estás usando:

`compile ''com.google.android.gms:play-services:8.3.0''`

Pero si observa la api de servicios de juego más reciente, puede seleccionar y elegir los servicios que realmente necesita.

Mira la tabla 1 en esta página .

Solo usa los que necesites. Los servicios de Google Play en su conjunto se encuentran alrededor de los 30 mil métodos.

Eso debería ayudar.


Multidexing utiliza más memoria. A medida que se acerca al tamaño máximo de heap en Java, encontrará que Java pasa más tiempo haciendo GC que en cualquier trabajo real, esto puede ralentizar mucho las cosas.

Recomiendo encarecidamente aumentar el tamaño máximo del montón cuando se utiliza multidex. Agregue lo siguiente al cierre de Android en su archivo build.gradle para hacer que el tamaño máximo del montón de 4GB (Hazlo más grande / más pequeño si lo deseas):

dexOptions { javaMaxHeapSize "4g" }


Si eres como yo, que ya probé la solución de Vic Vu pero aún así no puedes evitar habilitar multiDex, puedes intentarlo (siempre y cuando estés usando un dispositivo que tenga Android 5.0 y superior).

Nota Esto solo acelerará tu desarrollo de desarrollo. Tu compilación de producción seguirá siendo lenta.

Básicamente necesitas introducir 2 sabores de producto, uno para dev y otro para prod .

Añadir multiDexEnabled true

android { productFlavors { // Define separate dev and prod product flavors. dev { // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin // to pre-dex each module and produce an APK that can be tested on // Android Lollipop without time consuming dex merging processes. minSdkVersion 21 } prod { // The actual minSdkVersion for the application. minSdkVersion 14 } } ... buildTypes { release { runProguard true proguardFiles getDefaultProguardFile(''proguard-android.txt''), ''proguard-rules.pro'' } defaultConfig { applicationId "com.something.something" targetSdkVersion 23 versionCode 1 versionName "1.0.0" multiDexEnabled true } } dependencies { compile ''com.android.support:multidex:1.0.1'' }

Y tengo una clase que extiende la Application así que tuve que anular attachBaseContext()

@Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); MultiDex.install(this); }

Si no está extendiendo la Application simplemente use MultiDexApplication en su etiqueta de application AndroidManifest.xml .

Asegúrese de que en su Android Studio Build Variants esté apuntando a devDebug .

Lea las instrucciones completas aquí https://developer.android.com/studio/build/multidex.html#dev-build