Android7.0编译 jack常见错误类型及解决办法


声明:本文转载自https://my.oschina.net/gesangtome/blog/1581078,转载目的在于传递更多信息,仅供学习交流之用。如有侵权行为,请联系我,我会及时删除。

我使用的源码为SudaMod,3.1分支的源代码,第一次编译Android M以上的源码,就莫名其妙的遇到了几个关于JACK的坑,以下就列举几个常见的错误以及解决办法。

第一个错误:

Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by android-jack-team@google.com)).

GC overhead limit exceeded.

Try increasing heap size with java option '-Xmx<size>'.

Warning: This may have produced partial or corrupted output.

造成原因:

这个错误最傻瓜,解决方法在输出信息里已经提示得很明确了。错误大概意思是当前需要的堆大小超出限制,于是内存溢出了,尝试使用java 选项 '-Xmx<size>'.来增加堆大小。

解决方法:

(1)编辑 prebuilts/sdk/tools/jack-admin,找到第29行:

#
# Settings
#
JACK_HOME="${JACK_HOME:=$HOME/.jack-server}"
CLIENT_SETTING="${CLIENT_SETTING:=$HOME/.jack-settings}"
TMPDIR=${TMPDIR:=/tmp}
JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation}"

增加选项: -Xmx4096m,或是: -Xmx4g,修改好即为(二选一)

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m}"

JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation  -Xmx4g}"

(2)编辑 prebuilts/sdk/tools/jack-admin,找到第454行:

    RUNNING=$?
    if [ "$RUNNING" = 0 ]; then
      echo "Server is already running"
    else
      JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -cp $LAUNCHER_JAR $LAUNCHER_NAME"

增加选项: -Xmx4096m,或是: -Xmx4g,修改好即为(二选一)

      JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHER_JAR $LAUNCHER_NAME"

      JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4g -cp $LAUNCHER_JAR $LAUNCHER_NAME"

推荐第一种解决方法,-Xmx后面为分配的堆大小,这个值根据你的电脑内存而定,标准为内存大小的4分之1。当不够的时候再自己增加。

 

第二个错误:

FAILED: /bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar  2>&1 || (exit 0) ) && (JACK_SERVER_VM_ARGUMENTS=\"-Dfile.encoding=UTF-8 -XX:+TieredCompilation\" prebuilts/sdk/tools/jack-admin start-server 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update server prebuilts/sdk/tools/jack-server-4.8.ALPHA.jar 4.8.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-2.28.RELEASE.jar 2.28.RELEASE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-3.36.CANDIDATE.jar 3.36.CANDIDATE || exit 47; prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.7.BETA.jar 4.7.BETA || exit 47 )"
Jack server already installed in "/home/gesangtome/.jack-server"
Communication error with Jack server (77), try 'jack-diagnose' or see Jack server log
Failed to contact Jack server: Problem reading /home/gesangtome/.jack-server/server.pem. Try 'jack-diagnose'
Failed to contact Jack server: Problem reading /home/gesangtome/.jack-server/server.pem. Try 'jack-diagnose'


造成原因:

通过查看$HOME/.jack-server下的日志,定位到具体错误为:Failed to contact Jack server: Problem reading /home/gesangtome/.jack-server/server.pem. Try 'jack-diagnose',像这种情况,我们重新安装以下JACK服务,一些关键文件就重新生成了。

解决方法:

进入jack目录:cd ./prebuilts/sdk/tools/

先停止服务: jack-admin stop-server

再卸载服务: jack-admin uninstall-server

重新安装服务:jack-admin install-server jack-launcher.jar jack-server-4.8.ALPHA.jar

本文发表于2017年11月28日 18:33
(c)注:本文转载自https://my.oschina.net/gesangtome/blog/1581078,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如有侵权行为,请联系我们,我们会及时删除.

阅读 8409 讨论 0 喜欢 1

抢先体验

扫码体验
趣味小程序
文字表情生成器

闪念胶囊

你要过得好哇,这样我才能恨你啊,你要是过得不好,我都不知道该恨你还是拥抱你啊。

直抵黄龙府,与诸君痛饮尔。

那时陪伴我的人啊,你们如今在何方。

不出意外的话,我们再也不会见了,祝你前程似锦。

这世界真好,吃野东西也要留出这条命来看看

快捷链接
网站地图
提交友链
Copyright © 2016 - 2021 Cion.
All Rights Reserved.
京ICP备2021004668号-1