Android源码编译错误: "Try increasing heap size with java option ' -Xmx<size >'"

标签 android android-source android-build

我尝试编译Android源代码时发生错误(源代码版本:6.0.1;RAM:6G;主机系统:ubuntu 14.04),日志如下:

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$ 

谁能告诉我为什么编译失败?

最佳答案

我遇到了同样的问题。因此,我尝试将 JACK_SERVER_VM_ARGUMENTS 设置为包含 -Xmx=4g,但是当再次构建时,日志输出显示这未包含在启动中。我不知道为什么,环境变量似乎没有正确传递给构建脚本。

解决方案

在开始一个干净的 android 构建之前,将 JACK_SERVER_VM_ARGUMENTS 设置为包含 -Xmx=4g,然后手动停止并启动 jack 服务器。假设您位于 AOSP 的主源代码树中,请运行以下命令:

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

你可以使用厘米

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

这为我解决了这个问题。

关于Android源码编译错误: "Try increasing heap size with java option ' -Xmx<size >'",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35579646/

相关文章:

android - Output.json将应用程序版本代码显示为版本名称

android - 如何为安卓创建浏览器?

android - 修改没有类的布局中的textview

android - 当我的应用程序打开并且屏幕亮着时,如何允许 Android 打瞌睡?

android - 将带有共享库的预构建 apk 添加到 AOSP 时出错

android - 从 GraphicBuffer 读取时出现意外的像素数据布局

android - 如何在不增加 apk 大小的情况下在 android 应用程序中播放视频

java - 在 android 上使用 jackson-dataformat-xml

Android、Gradle、产品 flavor 和 list