连接到 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 错误

尝试连接到 localhost phpmyadmin 时出现错误

连接到本地 MySQL 服务器时出现“连接被拒绝”错误?

连接到 oracle DB 时出现 Tableau 错误

当我尝试连接到 mongodb 时出现这些错误

当我尝试连接到 mongodb 时出现这些错误