ubuntu 18.04 LTS 上编译 RK3399 Android 7.1 卡在84%,报错: Ensure Jack server is installed and started

笔记:

虚拟机: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!

解决方法:

  1. 删除其他所有版本的jdk, 仅保留openjdk-8-jdk
    • # 或者,用以下命令把版本切换到  jdk8 
      sudo update-alternatives --config java
      sudo update-alternatives --config javac
  2. 打开配置文件:sudo vi /etc/java-8-openjdk/security/java.security。
    找到 jdk.tls.disabledAlgorithms 这一行。
    从中删除 TLSv1 和 TLSv1.1

我的原因是,编译其他项目时,安装了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

 

评论列表: