使用错误“连接到Jack服务器时出现SSL错误”重新构建安卓代码。尝试使用“jack-diagnose”。

12

系统:Ubuntu 18.04 环境:VirtualBox 第一次在 Ubuntu 18.04 上编译 AOSP 源代码时通过了,但第二次编译失败了。 以下是错误信息。

[ 10% 538/4980] Ensuring Jack server is installed and started
FAILED: setup-jack-server 
/bin/bash -c "(prebuilts/sdk/tools/jack-admin install-server prebuilts/sdk/tools/jack-launcher.jar prebuilts/sdk/tools/jack-server-4.11.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.11.ALPHA.jar 4.11.ALPHA 2>&1 || exit 0 ) && (prebuilts/sdk/tools/jack-admin update jack prebuilts/sdk/tools/jacks/jack-4.32.CANDIDATE.jar 4.32.CANDIDATE || exit 47 )"
Jack server already installed in "/home/user/.jack-server"
Communication error with Jack server (35), 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'
[ 10% 541/4980] build out/target/product/rk3399_mid/obj/ETC/precompiled_sepolicy_intermediates/precompiled_sepolicy
ninja: build stopped: subcommand failed.
22:32:18 ninja failed with: exit status 1

#### failed to build some targets (01:11 (mm:ss)) ####

Build android failed!

生成错误报告

/prebuilts/sdk/tools/report/18577$ unzip jack-report.18557.zip Archive: jack-report.18557.zip inflating: report.18557.txt
inflating: launcher.jar
inflating: config.properties
creating: logs/ inflating: logs/outputs.txt
inflating: logs/jack-server-0-2.log
inflating: logs/jack-server-1-0.log
inflating: logs/jack-server-0-0.log
extracting: logs/jack-server-0-0.log.lck
inflating: logs/jack-server-0-1.log
inflating: server-1.jar
creating: jack/

report.18557.txt :

 ps -o "pid args" | grep com.android.jack.launcher.ServerLauncher | grep -v grep | awk '{print dump-report}' |  xargs kill -3

$ id -u
1000

$ ps -A -o "uid pid args" | grep com.android.jack.launcher.ServerLauncher | grep -v grep
 1000  6708 java -XX:MaxJavaStackTraceDepth=-1 -Djava.io.tmpdir=/tmp -Dfile.encoding=UTF-8 -XX:+TieredCompilation -cp /home/zhangying/.jack-server/launcher.jar com.android.jack.launcher.ServerLauncher

$ lsof -i TCP:8376 -l
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    6708     1000   21u  IPv6  58493      0t0  TCP localhost:8376 (LISTEN)

$ lsof -i TCP:8377 -l
COMMAND  PID     USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
java    6708     1000   23u  IPv6  58499      0t0  TCP localhost:8377 (LISTEN)

$ cat "$JACK_CLIENT_SETTING"
# Server settings
SERVER_HOST=localhost
SERVER_PORT_SERVICE=8376
SERVER_PORT_ADMIN=8377

# Internal, do not touch
SETTING_VERSION=4

$ cd "$JACK_HOME"; ls -l -R -n .
.:
total 10412
-rw------- 1 1000 1000    2097 May  2 10:04 client.jks
-rw------- 1 1000 1000    2814 May  2 21:48 client.pem
-rw------- 1 1000 1000     356 May  2 10:12 config.properties
drwxr-xr-x 2 1000 1000    4096 May  2 10:04 jack
-rw------- 1 1000 1000 5102506 May  2 10:04 launcher.jar
drwx------ 2 1000 1000    4096 May  2 21:48 logs
-rw------- 1 1000 1000     982 May  2 22:39 report.18557.txt
-rw------- 1 1000 1000 5522186 May  2 10:04 server-1.jar
-rw------- 1 1000 1000    2066 May  2 10:04 server.jks
-rw------- 1 1000 1000    1042 May  2 21:48 server.pem

./jack:
total 0

./logs:
total 32
-rw-r--r-- 1 1000 1000   689 May  2 22:03 jack-server-0-0.log
-rw-r--r-- 1 1000 1000     0 May  2 10:20 jack-server-0-0.log.lck
-rw-r--r-- 1 1000 1000   585 May  2 10:23 jack-server-0-1.log
-rw-r--r-- 1 1000 1000   689 May  2 10:19 jack-server-0-2.log
-rw-r--r-- 1 1000 1000   585 May  2 10:16 jack-server-1-0.log
-rw------- 1 1000 1000 13411 May  2 22:39 outputs.txt

$ curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp 
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL 

$ JACK_EXTRA_CURL_OPTIONS=-v jack-admin list server
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 8377 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /home/zhangying/.jack-server/server.pem
  CApath: /etc/ssl/certs
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* OpenSSL SSL_connect: SSL_ERROR_SYSCALL in connection to localhost:8377 
* Closing connection 0
SSL error when connecting to the Jack server. Try 'jack-diagnose'

$ jack-admin server-stat
Getting statistic from background server
SSL error when connecting to the Jack server. Try 'jack-diagnose'

$ base64 --version
base64 (GNU coreutils) 8.28
Copyright (C) 2017 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Simon Josefsson.

$ (echo amFjaw==;echo LXNlcnZlcg==) | base64 --decode

I get the same error when I switch to Ubuntu 16.04.Below is a list of the installed Curl versions of Ubuntu 18.04.

警告:apt没有稳定的CLI界面。在脚本中使用时要小心。

curl/bionic-updates、bionic-security,现在版本为7.58.0-2ubuntu3.13,amd64架构[已安装]
libcurl3-gnutls/bionic-updates、bionic-security,现在版本为7.58.0-2ubuntu3.13,amd64架构[已安装,自动]
libcurl4/bionic-updates、bionic-security,现在版本为7.58.0-2ubuntu3.13,amd64架构[已安装,自动]
libcurl4-openssl-dev/bionic-updates、bionic-security,现在版本为7.58.0-2ubuntu3.13,amd64架构[已安装]

我尝试了很多方法,但是无法解决问题。请帮帮我,谢谢。

我的安卓版本是安卓8.1。 - NVStop
我在Ubuntu22和Android7中遇到了相同的问题。 - linjiejun
4个回答

28
在执行以下两个步骤后,已成功构建AOSP。
1. 从/etc/java-8-openjdk/security/java.security文件中的jdk.tls.disabledAlgorithms中删除TLSv1、TLSv1.1。 2. 重启jack服务器: cd /prebuilts/sdk/tools/ ./jack-admin kill-server ./jack-admin start-server

谢谢,顺便提一下,在停止服务器后无需启动它。Ninja会自动重新启动它。 - FindOutIslamNow
非常有用。对我很有帮助,非常感谢。 - linjiejun
从java.security文件中删除TLSv1和TLSv1.1对我有用。非常感谢,我可以知道这里发生了什么吗?删除TLS是如何解决这个问题的? - vijay panwar
@vijaypanwar TLS 1.0和1.1版本现已被弃用(https://arstechnica.com/gadgets/2018/10/browser-vendors-unite-to-end-support-for-20-year-old-tls-1-0/)。因此,这些算法在Java配置中默认禁用。我猜测jack客户端正在使用其中一种TLS版本连接到服务器,因为它还没有更新。 - increscent
在Ubuntu22上使用Android7工作。由于有一行包含TLSv1,因此修改非常容易。 - linjiejun
显示剩余2条评论

4

我想提供多种解决此问题的方法。

以下是几种克服这个问题的方法,其中一种可能适用于某些人 -

  1. 尝试在您的Android根文件夹下通过以下命令简单重启jack服务器:

    ./prebuilts/sdk/tools/jack-admin kill-server

    ./prebuilts/sdk/tools/jack-admin start-server

  2. 尝试在文件$HOME/.jack-server/config.properties中减少并发服务的数量 代码:

    jack.server.max-service=4

尝试将此值设置为2或1。

  1. 如果jack服务器未运行或尝试运行时挂起。那么请尝试从rom /etc/java-8-openjdk/security/java.security中删除TLSv1,TLSv1.1

方法3对我有效。


4
我刚找到了答案,请查看下面的链接: 链接说明 将代码更改为以下内容, 从 /etc/java-8-openjdk/security/java.security 中删除 TLSv1、TLSv1.1。

jdk.tls.disabledAlgorithms=SSLv3、RC4、DES、MD5withRSA、
DH keySize < 1024、EC keySize < 224、3DES_EDE_CBC、anon、NULL、
包括 jdk.disabled.namedCurves。


0

在你的 Dockerfile 中解决这个问题的方法:

USER root

# Fix jack server SSL issue during build
RUN perl -0777 -i -p -e 's/(jdk.tls.disabledAlgorithms=.*?), TLSv1, TLSv1\.1/$1/g' \
     /etc/java-8-openjdk/security/java.security

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接