【RK3399】【Android7.1】Ubuntu16.04配置开发编译环境出现的问题

Platform: Firefly-RK3399
OS: Android 7.1
PC: Ubuntu 16.04

(1) ubuntu16.04 安装 lib32readline-gplv2-dev 出错,解决办法

直接用 lib32readline6-dev 替代:lib32readline-gplv2-dev

使用命令:

sudo apt-get install  lib32readline6-dev

(2) Android N 源码编译错误:Communication error with Jack

报错: 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代表根目录

(3) Copying: out/target/common/obj/JAVA_LIBRARIES/core-all_intermediates/classes.dexninja: fatal: fork: Cannot allocate memory build/core/ninja.mk:148: recipe for target ‘ninja_wrapper’ failed

原因: 虚拟机分配内存不足,查看虚拟机内存分配只有4G左右

解决方法一: 关闭虚拟机,内存调整到6G,编译正常。

(4) 虚拟机内存分配不足导致的编译失败问题

[  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<size>'.
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 
发布了23 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/karaskass/article/details/102634699