source que open from compile code aosp android android-source android-build

que - projects android source code



Error de compilación del código fuente de Android: "Intente aumentar el tamaño del montón con la opción java ''-Xmx<tamaño>''" (5)

Este fue también mi problema: la configuración predeterminada de Xmx en Java ya estaba cerca de los 4 GB (precisamente: 4011 MB), por lo que el problema era más bien la cantidad de servidores de conexión simultáneos que se ejecutaban. Mi máquina tenía 8 CPU pero solo 16 GB de RAM, pero habría requerido 32 GB (8 * 4 = 32).

Mi solución (un poco más dinámica):

MAX=$(($(free -g | awk ''/^Mem:/{print $NF}'') / 4)) if [ $MAX -le 0 ]; then MAX=1 fi echo "SERVER_NB_COMPILE=$MAX" >> ~/.jack mkdir -p ~/.jack-server echo "jack.server.max-service=$MAX" >> ~/.jack-server/config.properties

Agrega el número MÁXIMO de servidor jack tanto a la ubicación antigua como a la nueva ubicación según el documento oficial de Android:

Solución de problemas de Jack : si su computadora deja de responder durante la compilación o si experimenta fallas en la compilación de Jack en "Error de memoria insuficiente", puede mejorar la situación al reducir la cantidad de compilaciones simultáneas de Jack editando $ HOME / .jack y cambiando SERVER_NB_COMPILE a un valor más bajo. https://source.android.com/source/jack.html

Se produce un error cuando intento compilar el código fuente de Android (Sourcecode-version: 6.0.1; RAM: 6G; sistema host: ubuntu 14.04), el registro se encuentra a continuación:

including ./system/netd/Android.mk ... including ./system/security/keystore-engine/Android.mk ... including ./system/security/keystore/Android.mk ... including ./system/security/softkeymaster/Android.mk ... including ./system/tools/aidl/Android.mk ... including ./system/update_engine/Android.mk ... including ./system/vold/Android.mk ... including ./system/weaved/Android.mk ... including ./system/webservd/Android.mk ... including ./tools/external/fat32lib/Android.mk ... Starting build with ninja ninja: Entering directory `.'' [ 0% 1/21275] Ensure Jack server is installed and started Jack server already installed in "/home/eddy/.jack-server" Launching Jack server java -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/eddy/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher [ 0% 17/21275] host Java: conscrypt-host (out/host/common/obj/JAVA_LIBRARIES/conscrypt-host_intermediates/classes) warning: [options] bootstrap class path not set in conjunction with -source 1.7 external/conscrypt/src/openjdk/java/org/conscrypt/Platform.java:39: warning: AlgorithmId is internal proprietary API and may be removed in a future release import sun.security.x509.AlgorithmId; ^ external/conscrypt/src/openjdk/java/org/conscrypt/Platform.java:243: warning: AlgorithmId is internal proprietary API and may be removed in a future release return AlgorithmId.get(oid).getName(); ^ Note: Some input files use or override a deprecated API. Note: Recompile with -Xlint:deprecation for details. Note: Some input files use unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. 3 warnings [ 0% 18/21275] host Java: signapk (out/host/common/obj/JAVA_LIBRARIES/signapk_intermediates/classes) warning: [options] bootstrap class path not set in conjunction with -source 1.7 1 warning [ 0% 73/21275] Building with Jack: out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp GC overhead limit exceeded Try increasing heap size with java option ''-Xmx<size>'' Warning: This may have produced partial or corrupted output. ninja: build stopped: subcommand failed. make: *** [ninja_wrapper] Error 1 #### make failed to build some targets (14:09 (mm:ss)) #### eddy@eddy-OptiPlex-390:~/WORKING_DIRECTORY$

¿Alguien puede decirme por qué falló la compilación?


La compilación de Android (probada con 7.1.2) usa su propia versión privada de Jack (podría haber una cadena de herramientas de Jack instalada en otra parte del sistema), por lo que tiene que usar variables específicas de Android.

Desde https://android.googlesource.com/platform/prebuilts/sdk/+/master/tools/README-jack-server.md :

(busque "Si experimenta fallas en las compilaciones de Jack en Error de memoria insuficiente:")

Para resumir:

$ # Stop the Jack server $ jack-admin stop-server $ # apply the new setting $ export ANDROID_JACK_VM_ARGS="-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation" $ Finally, restart the build (do not manually start the Jack server!) $ m # or any other build command

El sistema de compilación debería recoger el cambio y dar salida a la línea:

Environment variable ANDROID_JACK_VM_ARGS was set, regenerating...

o (después de un cambio posterior):

Environment variable ANDROID_JACK_VM_ARGS was modified (-Xmx2g -Dfile.encoding=UTF-8 -XX:+TieredCompilation => -Xmx4g -Dfile.encoding=UTF-8 -XX:+TieredCompilation), regenerating...


La forma actual de configurar Xmx para jack es:

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m" out/host/linux-x86/bin/jack-admin kill-server out/host/linux-x86/bin/jack-admin start-server


También tuve este problema después de actualizar a 6.0 Mi computadora es una computadora portátil i7 con 8GB de RAM. Funcionó bien con v5.x y más abajo.

La razón no es suficiente memoria como indica el mensaje de error. En la compilación v6.x, se usa más Jack. En mi caso, reducir el número de Jacks a 1 resolvió el problema.

Ahora puedo seguir compilando con 8GB de ram.

$HOME/.jack-server/config.properties jack.server.max-service=1 [100% 19740/19740] #### make completed successfully (11:55:27 (hh:mm:ss)) ####


Yo tuve el mismo problema. Así que he intentado configurar JACK_SERVER_VM_ARGUMENTS para que incluya -Xmx=4g , pero al -Xmx=4g nuevamente la salida del registro mostró que esto no estaba incluido en el inicio. No sé por qué, parece que las variables env no se pasan correctamente al script de compilación.

Solución

Antes de iniciar una compilación de Android limpia, configure JACK_SERVER_VM_ARGUMENTS para incluir -Xmx=4g , luego detenga e inicie el servidor jack manualmente . Dado que estás en el árbol de fuentes principal de AOSP, ejecuta lo siguiente:

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" ./prebuilts/sdk/tools/jack-admin kill-server ./prebuilts/sdk/tools/jack-admin start-server

para cm puedes usar

export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g" jack-admin kill-server && jack-admin start-server

Esto resolvió el problema para mí.