(这个问题肯定与ADB 没有启动(没有错误消息)有关,但没有明确的解释是什么解决了这个问题,一遍又一遍地重新安装并不能说服我。)
当我像往常一样跑步时
$ sudo adb kill-server && sudo adb start-server
我必须CTRL-C它。
建议的 adb_trace álà 另一个问题产生了这个:
# export ADB_TRACE=all
# adb start-server
system/core/adb/adb.c::main():Handling commandline()
system/core/adb/adb_client.c::_adb_connect():_adb_connect: host:version
system/core/adb/transport.c::writex():writex: fd=3 len=4: 30303063 000c
system/core/adb/transport.c::writex():writex: fd=3 len=12: 686f73743a76657273696f6e host:version
system/core/adb/transport.c::readx():readx: fd=3 wanted=4 <---- freezes here
strace 稍微冗长一些,我明白了:
# strace /home/leo/Downloads/android-sdk-linux/platform-tools/adb start-server
... many
... many
... lines
futex(0xffab8474, FUTEX_WAIT_BITSET_PRIVATE|FUTEX_CLOCK_REALTIME, 1, NULL, f742a700) = -1 EAGAIN (Resource temporarily unavailable)
rt_sigaction(SIGRTMIN, {0xf77525f0, [], SA_SIGINFO}, NULL, 8) = 0
rt_sigaction(SIGRT_1, {0xf7752680, [], SA_RESTART|SA_SIGINFO}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
getrlimit(RLIMIT_STACK, {rlim_cur=-4286578688, rlim_max=-9223372032703125888}) = 0
uname({sys="Linux", node="donleo", ...}) = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 3
connect(3, {sa_family=AF_INET, sin_port=htons(5037), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
write(3, "000c", 4) = 4
write(3, "host:version", 12) = 12
read(3, <---- freezes here
那么,接下来呢?
尝试解决此问题时的另一个观察结果是通过 sdk 管理器更新 sdk 失败。它告诉我,我有 Android SDK Platform-tools 16.0.2 并想更新到 17。单击安装只是永远挂起而没有做任何事情。我假设这两个动作都无限期地等待来自同一组件的答案。[更新:]删除组件有效。现在安装它显示了一个问题(与在日志中没有显示任何“红”行的更新相反)说停止 adb 不起作用。杀死 adb 后,更新通过但 adb 仍然拒绝工作。
更新:我猜可以排除我安装的 adb 本身可能被破坏的怀疑。我正在使用 SDK 的手动下载,刚刚尝试了 ubuntu 存储库(4.2.2+git20130218-3ubuntu1)中的 adb,它挂在完全相同的位置。