Android-source-code kompilieren-Fehler: "Versuchen Sie Erhöhung der heap-Größe mit java-option "- Xmx " <size>'"
Fehler passiert, wenn ich versuche zu kompilieren Android-Quellcode(Sourcecode-version: 6.0.1; RAM: 6G; host system: ubuntu 14.04),melden Sie sich unter:
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$
Jemand mir sagen kann, warum das kompilieren gescheitert?
InformationsquelleAutor der Frage Eddy.Liu | 2016-02-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte das gleiche problem. Also habe ich versucht, zu setzen
JACK_SERVER_VM_ARGUMENTS
zu gehören-Xmx=4g
aber beim Bau wieder die log-Ausgabe zeigte, dass dies nicht Bestandteil der Inbetriebnahme. Keine Ahnung warum, scheint, wie die env-vars nicht übergeben bekommen, um das build-Skript korrekt.Lösung
Bevor ein sauberes android build legen Sie die
JACK_SERVER_VM_ARGUMENTS
zu gehören-Xmx=4g
dann beenden und starten Sie den jack-server manuell. Gegeben bist du in der Haupt-source-tree von AOSP führen Sie die folgenden:für cm, die Sie verwenden können
Diese behoben das Problem für mich.
InformationsquelleAutor der Antwort icyerasor
Den aktuellen Weg, um Xmx für jack ist:
InformationsquelleAutor der Antwort user6310924
Ich hatte auch dieses problem nach dem Update auf 6.0 Mein Rechner ist ein i7 laptop mit 8GB ram. Es funktionierte mit v5.x und unten.
Der Grund ist nicht genug Speicher wie die Fehlermeldung besagt. In der v6.x bauen, mehr-Buchse verwendet wird. In meinem Fall, die Verringerung der Anzahl der Buchsen zu 1 das Problem behoben.
Kann ich jetzt fortfahren Zusammenstellung mit 8GB ram.
InformationsquelleAutor der Antwort dave
Android build (getestet mit 7.1.2) verwendet seine eigene private version von Jack (es könnte ein Jack-toolchain installiert, die anderswo im system), so haben Sie die Verwendung von Android-spezifischen Variablen.
Vom https://android.googlesource.com/platform/prebuilts/sdk/+/master/tools/README-jack-server.md:
(Suche nach "Wenn Sie Jack Zusammenstellungen Versagen Out of memory" - Fehlermeldung.:")
Zusammenfassen:
Das build-system sollte die abholen, die änderung und die Ausgabe der Zeile:
oder (nach einer späteren änderung):
InformationsquelleAutor der Antwort ack
Dies war auch mein problem: der java-Standard-Xmx-Einstellung wurde bereits in der Nähe 4GB (genau: 4011MB) also das Problem war eher die Anzahl der gleichzeitigen jack-Server läuft. Meine Maschine hatte 8 CPUs aber nur 16 GB RAM, aber wäre nötig gewesen, 32GB (8*4=32).
Meine (etwas dynamischer) Lösung:
Er fügt hinzu, die MAX Anzahl der jack-server, um sowohl die alten Position und der neuen Position basierend auf der android-offizielle doc:
InformationsquelleAutor der Antwort Reggie