笔记:
虚拟机:6核CPU,8G内存,jack-server 配置4G内存
编译环境:ubuntu 18.04 LTS
编译目标:RK3399 Android 7.1
首先已按照此步骤排查了前置常规错误: ubuntu 18.04 LTS 上编译 RK3399 Android 7.1 遇到的错误及解决方法
但编译安卓系统时,还是报以下错误:
[ 84% 3315/3913] Ensure Jack server is installed and started
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 )"
Writing client settings in /home/lsw/.jack-settings
Installing jack server in "/home/lsw/.jack-server"
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /home/lsw/.jack-server/server.jks -destkeystore /home/lsw/.jack-server/server.jks -deststoretype pkcs12".
Warning:
The JKS keystore uses a proprietary format. It is recommended to migrate to PKCS12 which is an industry standard format using "keytool -importkeystore -srckeystore /home/lsw/.jack-server/client.jks -destkeystore /home/lsw/.jack-server/client.jks -deststoretype pkcs12".
Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m -cp /home/lsw/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
Jack server failed to (re)start, try 'jack-diagnose' or see Jack server log
SSL error when connecting to the Jack server. Try 'jack-diagnose'
SSL error when connecting to the Jack server. Try 'jack-diagnose'
ninja: build stopped: subcommand failed.
build/core/ninja.mk:148: recipe for target 'ninja_wrapper' failed
make: *** [ninja_wrapper] Error 1
#### make failed to build some targets (05:52 (mm:ss)) ####
Build android failed!
解决方法:
我的原因是,编译其他项目时,安装了openjdk 11、12和多个其他厂家的 jdk;
删除全部其他的jdk,重新安装openjdk-8-jdk,编译Android7.1 必须这个版本。因为 Jack 强依赖于 Java 8 的特定 API 和工具链。
然后删除TLSv1 和 TLSv1.1 ;如果不删除,会报SSL error when connecting to the Jack server 如下:
lsw@ubuntu:~$ ./prebuilts/sdk/tools/jack-admin stop-server
Stopping background server
SSL error when connecting to the Jack server. Try 'jack-diagnose'
删除TLSv1 和 TLSv1.1后,结束掉所有的java进程,然后jack-server 就正常停止和启动了。
验证步骤如下:
lsw@ubuntu:~$ sudo pkill -9 java
lsw@ubuntu:~$ ./prebuilts/sdk/tools/jack-admin stop-server
Stopping background server
No Jack server running. Try 'jack-admin start-server'
lsw@ubuntu:~$ ./prebuilts/sdk/tools/jack-admin start-server
Launching Jack server java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4096m -cp /home/lsw/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher
lsw@ubuntu:~$ ./prebuilts/sdk/tools/jack-admin stop-server
Stopping background server
如果还报错,删除下面两个旧的配置,运行build-rk3399-all.sh 重新编译系统。编译过程中会按 Java 8 重新生成下面的两个配置。
$ rm -rf ~/.jack-server
$ rm -rf ~/.jack-settings