Platform: Firefly-RK3399
OS: Android 7.1
PC: Ubuntu 16.04
直接用 lib32readline6-dev 替代:lib32readline-gplv2-dev
使用命令:
sudo apt-get install lib32readline6-dev
报错: Communication error with Jack server (58), try ‘jack-diagnose’ or see Jack server log
原因: Android7.0 JACK编译器不支持多用户同时编译,其他用户在编译,端口被占用
解决方法一: 重启一下jack服务
使用命令:
$ prebuilts/sdk/tools/jack-admin kill-server
$ prebuilts/sdk/tools/jack-admin start-server
解决方法二: 修改$HOME/.jack-settings和$HOME/.jack-server/config.properties中的端口号(比如都改为8058/8059),方可支持多用户同时编译。
修改文件$HOME/.jack-settings
# Server settings
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=8058
SERVER_PORT_ADMIN=8059
# Internal, do not touch
SETTING_VERSION=4
修改文件$HOME/.jack-server/config.properties
#Thu Oct 17 06:33:14 PDT 2019
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8058
jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294967296
jack.server.admin.port=8059
jack.server.config.version=2
jack.server.time-out=7200
注意:
两个文件中的端口号必须一致。
修改后的端口号必须是没有被使用的。
$HOME代表根目录
原因: 虚拟机分配内存不足,查看虚拟机内存分配只有4G左右
解决方法一: 关闭虚拟机,内存调整到6G,编译正常。
[ 2% 764/34600] Building with Jack: out/targe...framework_intermediates/with-local/classes.dex
FAILED: /bin/bash out/target/common/obj/JAVA_LIBRARIES/framework_intermediates/with-local/classes.dex.rsp
Out of memory error (version 1.2-rc4 'Carnac' (298900 f95d7bdecfceb327f9d201a1348397ed8a843843 by [email protected])).
GC overhead limit exceeded.
Try increasing heap size with java option '-Xmx' .
Warning: This may have produced partial or corrupted output.
[ 2% 764/34600] build out/target/common/obj/J...A_LIBRARIES/sdk_v19_intermediates/classes.jack
ninja: build stopped: subcommand failed.
make: *** [ninja_wrapper] Error 1
解决方法: 修改prebuilts/sdk/tools目录下的jack-admin文件,添加 -Xmx4096m。
kris@eco:~/firefly_rk3399/prebuilts/sdk/tools$ git diff ./prebuilts/sdk/tools/jack-admin
diff --git a/prebuilts/sdk/tools/jack-admin b/prebuilts/sdk/tools/jack-admin
index ee193fc..214fff7 100755
--- a/prebuilts/sdk/tools/jack-admin
+++ b/prebuilts/sdk/tools/jack-admin
@@ -26,7 +26,7 @@ umask 077
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}"
+JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g}"
JACK_EXTRA_CURL_OPTIONS=${JACK_EXTRA_CURL_OPTIONS:=}
LAUNCHER_JAR="$JACK_HOME/launcher.jar"
@@ -451,7 +451,7 @@ case $COMMAND in
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 $
+ JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx4096m -cp $LAUNCHE
echo "Launching Jack server" $JACK_SERVER_COMMAND
(
trap "" SIGHUP
重启一下jack服务
使用命令:
$ prebuilts/sdk/tools/jack-admin kill-server
$ prebuilts/sdk/tools/jack-admin start-server