ubuntu18.04 Android 7.1.2 编译配置

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xzx208/article/details/83988089

1.jdk 8安装
# apt install openjdk-8-jre-headless
# apt install openjdk-8-jdk-headless
测试:# java -version
openjdk version "1.8.0_171"
OpenJDK Runtime Environment (build 1.8.0_171-8u171-b11-0ubuntu0.18.04.1-b11)

2.安装依赖包
ubuntu18.04 编译android所需要的依赖包不是很多

# apt install g++-multilib
# apt install gperf
# apt install libxml2-utils
# apt install curl

3.编译android7.1.2
问题1:error:flex-2.5.39: loadlocale.c:130: _nl_intern_locale_data: Assertion `cnt < (sizeof (_nl_value_type_LC_TIME) / sizeof (_nl_value_type_LC_TIME[0]))' failed.
Aborted (core dumped)

fix::在编译脚本中增加export LC_ALL=C


问题2: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>'.

fix:修改源码目录下prebuilts/sdk/tools/jack-admin文件的JACK_SERVER_VM_ARGUMENTS变量, 
添加-Xmx4096M(这个根据你自己的情况),接着make clean,make -j4重新构建

--- a/tools/jack-admin
+++ b/tools/jack-admin
@@ -26,7 +26,8 @@ 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}"
+JACK_SERVER_VM_ARGUMENTS="${JACK_SERVER_VM_ARGUMENTS:=-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx:8192m}"
 JACK_EXTRA_CURL_OPTIONS=${JACK_EXTRA_CURL_OPTIONS:=}
 
 LAUNCHER_JAR="$JACK_HOME/launcher.jar"
@@ -451,7 +452,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 $LAUNCHER_NAME"
+      JACK_SERVER_COMMAND="java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=$TMPDIR $JACK_SERVER_VM_ARGUMENTS -Xmx8192m -cp $LAUNCHER_JAR $LAUNCHER_NAME"
       echo "Launching Jack server" $JACK_SERVER_COMMAND
       (
         trap "" SIGHUP
diff --git a/tools/jack-annotations.jar b/tools/jack-annotations.jar
问题3:错误:prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.15-4.8/x86_64-linux/bin/ld: error: out/host/linux-x86/obj32/EXECUTABLES/libaapt2_tests_intermediates/split/TableSplitter_test.o: file is empty

fix: ln -s /usr/bin/ld.gold prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.11-4.8/x86_64-linux/bin/ld


问题4:Communication error with Jack server (52). Try 'jack-diagnose'

fix:
#out/host/linux-x86/bin/jack-admin kill-server 
#out/host/linux-x86/bin/jack-admin start-server

其他

ack-server 的两个配置文件(user 为对应用户的用户名),决定了它所使用的端
口号:
/home/user/.jack-server/config.properties
/home/user/.jack-settings
这两个配置文件需要配置两个端口号,分别为服务端端口号,及客户端端口号,
两个配置文件中的端口号要匹配。
jack.server.service.port=8074
jack.server.admin.port=8075

SERVER_PORT_SERVICE=8074
SERVER_PORT_ADMIN=8075
配置步骤如下:
确保两个配置文件存在,并且权限设置为 0600:
chmod 0600 /home/user/.jack-server/config.properties
chmod 0600 /home/user/.jack-settings
若两个配置文件不存在,请参照以下文本新建这两个配置文件。
config.properties 文件示例如下(端口号需按实际修改):
jack.server.max-jars-size=104857600
jack.server.max-service=4
jack.server.service.port=8074
jack.server.max-service.by-mem=1\=2147483648\:2\=3221225472\:3\=4294
967296
jack.server.admin.port=8075
jack.server.config.version=2
jack.server.time-out=7200
.jack-settings 文件示例如下(端口号需按实际修改):
# Server settings
福州瑞芯微电子有限公司
9
SERVER_HOST=127.0.0.1
SERVER_PORT_SERVICE=8074
SERVER_PORT_ADMIN=8075
# Internal, do not touch
SETTING_VERSION=4
修改端口号,请更改 service port 及 admin port 为其他端口号,两个配置文件
里的端口号需要匹配。示例如下:
jack.server.service.port=8023
jack.server.admin.port=8024
SERVER_PORT_SERVICE=8023
SERVER_PORT_ADMIN=8024
重新编译 Android,看是否会报错,若依然报错,请尝试更改其他端口号,直至
编译通过。
若更改 5 次编译依然无法通过,可以执行 jack-admin dump-report 命令,解
压命令生成的压缩包,分析 log 日志,若出现以下 log,可以重新安装下 libcurl:
$ JACK_EXTRA_CURL_OPTIONS=-v jack-admin list server
* Protocol https not supported or disabled in libcurl
* Closing connection -1
Communication error with Jack server 1. Try ‘jack-diagnose’

Checking build tools versions...
************************************************************
You are attempting to build with the incorrect version
of java.
 
Your version is: openjdk version "1.8.0_181" OpenJDK Runtime Environment (build 1.8.0_181-8u181-b13-1ubuntu0.18.04.1-b13) OpenJDK 64-Bit Server VM (build 25.181-b13, mixed mode).
The required version is: "1.7.x"
 
Please follow the machine setup instructions at
    https://source.android.com/source/initializing.html
************************************************************
build/core/main.mk:174: *** stop.  Stop.

#### make failed to build some targets (12 seconds) ####

在终端输入export EXPERIMENTAL_USE_JAVA8=true就可以了

猜你喜欢

转载自blog.csdn.net/xzx208/article/details/83988089