连接到 Jack 服务器时出现错误“SSL 错误”重建 android 代码。尝试“千斤顶诊断”
Posted
技术标签:
【中文标题】连接到 Jack 服务器时出现错误“SSL 错误”重建 android 代码。尝试“千斤顶诊断”【英文标题】:Rebuild android code with error “SSL error when connecting to the Jack server. Try 'jack-diagnose” 【发布时间】:2021-07-25 12:24:21 【问题描述】:系统: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 存档:jack-report.18557.zip 膨胀:report.18557.txt 膨胀:launcher.jar 膨胀:config.properties 创建:日志/ 膨胀:logs/outputs.txt 膨胀:logs/jack-server-0-2.log 膨胀:logs/jack-server-1-0.log 膨胀:logs/jack-server-0-0.log 提取:logs/jack-server-0-0.log.lck 膨胀:logs/jack-server-0-1.log 膨胀:server-1.jar 创建:杰克/
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
当我切换到 Ubuntu 16.04 时,我得到了同样的错误。下面是 Ubuntu 18.04 的已安装 Curl 版本的列表。
警告:apt 没有稳定的 CLI 界面。在脚本中谨慎使用。
curl/bionic-updates,bionic-security,now 7.58.0-2ubuntu3.13 amd64 [已安装] libcurl3-gnutls/bionic-updates,bionic-security,现在 7.58.0-2ubuntu3.13 amd64 [已安装,自动] libcurl4/bionic-updates,bionic-security,now 7.58.0-2ubuntu3.13 amd64 [已安装,自动] libcurl4-openssl-dev/bionic-updates,bionic-security,now 7.58.0-2ubuntu3.13 amd64 [已安装]
我尝试了很多方法,但都无法解决。请帮助我,谢谢。
【问题讨论】:
我的安卓版本是android 8.1 【参考方案1】:我只想给出解决问题的所有不同方法。 解决这个问题的方法很少,一个可能对某人有用 -
尝试通过以下命令在您的 android 根文件夹中简单地重新启动 jack 服务器
./prebuilts/sdk/tools/jack-admin kill-server
./prebuilts/sdk/tools/jack-admin start-server
尝试减少文件 $HOME/.jack-server/config.properties 中的并发服务数量 代码:
jack.server.max-service=4
尝试将此值设为 2 或 1。
-
如果 jack 服务器未运行或尝试运行时挂起。不如尝试从 rom /etc/java-8-openjdk/security/java.security 中删除 TLSv1、TLSv1.1
解决方案 3 对我有用。
【讨论】:
【参考方案2】:在你的 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
【讨论】:
【参考方案3】:应用以下两个步骤后,AOSP 构建成功。
-
从 /etc/java-8-openjdk/security/java.security 文件中的 jdk.tls.disabledAlgorithms 中删除 TLSv1、TLSv1.1
重启jack服务器:
cd /prebuilts/sdk/tools/
./jack-admin kill-server
./jack-admin 启动服务器
【讨论】:
谢谢,请注意,停止后无需启动服务器。忍者会重新开始 非常有用。非常感谢你为我工作 从为我工作的 java.security 文件中删除 TLSv1、TLSv1.1。非常感谢,我可以知道这里发生了什么吗?删除 TLS 如何解决此问题? @vijaypanwar TLS 版本 1.0 和 1.1 现在已弃用 (arstechnica.com/gadgets/2018/10/…) 所以这些算法在 Java 配置中默认被禁用。我猜杰克客户端正在使用其中一个 TLS 版本连接到服务器,因为它尚未更新。【参考方案4】:我刚刚找到答案,请看下面的链接 enter link description here
把代码改成这样, 从 /etc/java-8-openjdk/security/java.security 中删除 TLSv1、TLSv1.1。
jdk.tls.disabledAlgorithms=SSLv3, RC4, DES, MD5withRSA, DH keySize 包括 jdk.disabled.namedCurves
【讨论】:
以上是关于连接到 Jack 服务器时出现错误“SSL 错误”重建 android 代码。尝试“千斤顶诊断”的主要内容,如果未能解决你的问题,请参考以下文章
连接到 cloudera impala 环境时出现 Kerberos 错误