while unable studio merging error dexing dexarchivemergerexception archives application android gradle dex

android - unable - gradle multidex



Android Gradle: ¿Qué es javaMaxHeapSize "4g"? (3)

En un proyecto android, archivo build.gradle , he pasado por esta línea

dexOptions{ javaMaxHeapSize "4g" }

Me gustaría saber el propósito exacto de este javaMaxHeapSize y qué significa eso 4g . ¿Qué otros valores puedo dar?


Como se menciona en la respuesta anterior , es solo una opción para especificar el grupo máximo de asignación de memoria para una máquina virtual Java (JVM) para la operación dex. Y es lo mismo, proporcionar a java el argumento -xmx . Debido a sus códigos fuente de here , es setter look like:

if (theJavaMaxHeapSize.matches("//d+[kKmMgGtT]?")) { javaMaxHeapSize = theJavaMaxHeapSize } else { throw new IllegalArgumentException( "Invalid max heap size DexOption. See `man java` for valid -Xmx arguments.") }

Entonces, ¿puedes ver que el valor aceptado debe coincidir con el /d+[kKmMgGtT]? patrón, y por lo tanto no, incluso se refiere al man java para conocer, cómo configurar el -xmx . Puedes leer la página del manual aquí . Y dice, que esta bandera:

Especifique el tamaño máximo, en bytes, del grupo de asignación de memoria. Este valor debe ser un múltiplo de 1024 mayor que 2 MB. Agregue la letra k o K para indicar kilobytes, o m o M para indicar megabytes. El valor predeterminado se elige en el tiempo de ejecución en función de la configuración del sistema.

En su ejemplo, 4g es 4 Gigabytes y este es un tamaño máximo de almacenamiento dinámico para la operación dex.



dexOptions{ javaMaxHeapSize "4g" }

después de escribir esto en build.gradle vaya a gradle.properties y habilite esta línea:

org.gradle.jvmargs=-Xmx2048m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8