Erreur de compilation du code source Android: "Essayez d'augmenter la taille du tas avec l'option java '-Xmx & lt; size & gt;'"
Erreur se produit lorsque j'essaie de compiler Android code source(le code Source de la version: 6.0.1; RAM: 6G; système hôte: ubuntu 14.04),connectez-vous ci-dessous:
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$
Quelqu'un peut me dire pourquoi la compilation a échoué?
source d'informationauteur Eddy.Liu
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème. J'ai donc essayé de mettre en
JACK_SERVER_VM_ARGUMENTS
inclure-Xmx=4g
mais lors de la construction de encore la sortie du journal a montré que ce n'était pas inclus dans le démarrage. Je ne sais pas pourquoi, on dirait que l'env de vars ne sont pas passées au script de build correctement.Solution
Avant de commencer un nettoyage android construire ensemble la
JACK_SERVER_VM_ARGUMENTS
inclure-Xmx=4g
puis arrêtez et démarrez le serveur de son jack manuellement. Étant donné que vous êtes dans l'arborescence principale de PSBA exécutez la commande suivante:pour la cm vous pouvez utiliser
Cette résolu le problème pour moi.
La manière de la définir Xmx, jack est:
J'ai aussi eu ce problème après la mise à jour à la version 6.0, Mon ordinateur est un ordinateur portable i7 avec 8 go de ram. Il a bien fonctionné avec v5.x et ci-dessous.
La raison en est pas assez de mémoire que les états message d'erreur. Dans la v6.x de construire, en plus de la Prise utilisée. Dans mon cas, la réduction du nombre de prises à 1 résolu le problème.
Je peux maintenant continuer de compiler avec 8 go de ram.
Android build (testé avec 7.1.2) utilise son propre, privé de la version de Jack (il pourrait y avoir un Jack de la chaîne d'installer n'importe où sur le système), de sorte que vous devez utiliser la version d'Android de variables spécifiques.
De https://android.googlesource.com/platform/prebuilts/sdk/+/master/outils/README-jack-serveur.md:
(de la recherche pour "Si vous rencontrez Jack compilations défaut sur erreur de mémoire insuffisante.:")
Pour résumer:
Le système de construction, devrait accélérer le changement et la sortie de la ligne:
ou (après un changement ultérieur):
C'était aussi mon problème: le java par défaut Xmx réglage était déjà près de 4 GO (précisément: 4011MB) de sorte que le problème était plutôt le nombre de connexions simultanées jack serveurs en cours d'exécution. Ma machine a 8 Processeurs, mais seulement 16 go de RAM, mais aurait nécessité de 32 go (8*4=32).
Ma (un peu plus dynamique) solution:
Il ajoute le nombre MAX de serveur de son jack à la fois à l'ancienne, de la localisation et de la nouvelle-emplacement basé sur android officiel doc: