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.
Esta es una opción no documentada para aumentar el tamaño de almacenamiento dinámico para la operación dex: https://groups.google.com/d/msg/adt-dev/P_TLBTyFWVY/4TPJ2YY6khUJ
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