Android 插孔内部未知错误 415

Android jack internal unknown error 415

我正在 Mac (macOS Sierra 10.12.6) 中构建 AOSP 8,但 Jack 因未知内部错误而失败

Internal unknown error (415), try 'jack-diagnose' or see Jack server log

jack-diagnose 显示:

ps: illegal argument: -o
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
          [-g grp[,grp...]] [-u [uid,uid...]]
          [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
       ps [-L]
Port 8073 is used by another process (pid=), please ensure to free the port or change port configuration in '/Users/user/.jack-settings' and '/Users/user/.jack-server/config.properties'
ps: illegal argument: -o
usage: ps [-AaCcEefhjlMmrSTvwXx] [-O fmt | -o fmt] [-G gid[,gid...]]
          [-g grp[,grp...]] [-u [uid,uid...]]
          [-p pid[,pid...]] [-t tty[,tty...]] [-U user[,user...]]
       ps [-L]
Port 8072 is used by another process (pid=), please ensure to free the port or change port configuration in '/Users/user/.jack-settings' and '/Users/user/.jack-server/config.properties'

我查看了端口,似乎没有异常

$ lsof -n -i:8073 | grep LISTEN
java    70963 user   13u  IPv6 0xd32bb4a6a5b6116b      0t0  TCP 127.0.0.1:8073 (LISTEN)

$ lsof -n -i:8072 | grep LISTEN
java    70963 user   11u  IPv6 0xd32bb4a6a5b616ab      0t0  TCP 127.0.0.1:8072 (LISTEN)

Jack 日志显示:

16:14:44.181: WARNING: com.android.jack.server.router.ErrorContainer: Unknown request: 'POST /jack HTTP/1.1
Host: localhost:8072
User-Agent: curl/7.56.0
Accept: application/vnd.jack.command-out;version=1;charset=UTF-8
Content-Length: 800
Content-Type: multipart/form-data; boundary=------------------------9507228002c18ced

'

我尝试手动停止和启动 jack 服务器,甚至更改端口,但似乎无法解决问题。 我虽然这可能与我的 CURL 版本有关,但我相信我使用的是正确的

curl 7.56.0 (x86_64-apple-darwin16.7.0) libcurl/7.56.0 OpenSSL/1.0.2l zlib/1.2.11
Release-Date: 2017-10-04
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets HTTPS-proxy 

我 运行 没有想法,我真的不知道是谁导致了这个问题。我相信 Google 是在贬低 Jack (https://android-developers.googleblog.com/2017/03/future-of-java-8-language-feature.html),但我想知道为什么 Jack 在 AOSP 中仍然默认启用。将 ANDROID_COMPILE_WITH_JACK 设置为 false 允许我继续构建,但这只是通过不使用 Jack 来隐藏问题。有谁知道出了什么问题?这看起来像是设置问题还是 Jack 实际上出了什么问题?我在 android-build 邮件列表中发布了这个问题,但没有收到任何消息,所以我希望 SO 社区中的某个人可能有答案。

Arch 中存在同样的问题 Linux。 通过将 curl 从 7.56 降级到 7.55.1 完成构建。

我也在 Arch Linux,升级到 7.56 后肯定是 Curl 的问题,jack 日志中的错误是 .android.jack.server.router.ErrorContainer: Unknown request: 'POST /jack HTTP/1.1 并提到 Curl 7.56,降级包后没有错误并且构建成功编译。不确定 Curl 中发生了什么变化以生成此错误。可能会在 Curl 的 Github 上提出问题或通过电子邮件发送他们的邮件列表以查看实际问题是什么。