10

(这个问题肯定与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,它挂在完全相同的位置。

4

5 回答 5

28

找到了。以对错误报告的非常有教育意义的评论的风格:

~# adb devices
adb.c::main():Handling commandline()
adb_client.c::adb_query():adb_query: host:devices
adb_client.c::_adb_connect():_adb_connect: host:version
transport.c::writex():writex: fd=3 len=4: 30303063 000c
transport.c::writex():writex: fd=3 len=12: 686f73743a76657273696f6e host:version
transport.c::readx():readx: fd=3 wanted=4
^Z          
[1]+  Stopped                 adb devices

嗯...文件描述符3?

# pgrep adb
5982
# ls -l /proc/5982/fd/
total 0
lrwx------ 1 root root 64 Jun 14 18:04 0 -> /dev/pts/0
lrwx------ 1 root root 64 Jun 14 18:04 1 -> /dev/pts/0
lrwx------ 1 root root 64 Jun 14 18:04 2 -> /dev/pts/0
lrwx------ 1 root root 64 Jun 14 18:04 3 -> socket:[96863]

插座 96863?

# lsof | grep 96863
lsof: WARNING: can't stat() fuse.gvfsd-fuse file system /run/user/leo/gvfs
      Output information may be incomplete.

adb       5982            root    3u     IPv4              96863       0t0        TCP localhost:55463->localhost:5037 (ESTABLISHED)
# netstat -antp | grep LISTEN | grep 5037
tcp6       0      0 :::5037                 :::*                    LISTEN      2419/java       

艾娃?爪哇什么?

# ps -Alf | grep java
1 S root      2409     1  0  80   0 -  4620 hrtime 16:20 ?        00:00:07 /opt/traccar/bin/./wrapper /opt/traccar/bin/../conf/wrapper.conf wrapper.syslog.ident=traccar wrapper.pidfile=/opt/traccar/bin/./traccar.pid wrapper.name=traccar wrapper.displayname=traccar wrapper.daemonize=TRUE wrapper.statusfile=/opt/traccar/bin/./traccar.status wrapper.java.statusfile=/opt/traccar/bin/./traccar.java.status wrapper.script.version=3.5.19
0 S root      2419  2409  0  80   0 - 810286 futex_ 16:20 ?       00:00:41 /usr/lib/jvm/java-6-oracle/jre/bin/java -Djava.library.path=../lib -classpath ../lib/wrapper.jar:../tracker-server.jar -Dwrapper.key=ja2Mz5xiI18XmG4C -Dwrapper.port=32000 -Dwrapper.jvm.port.min=31000 -Dwrapper.jvm.port.max=31999 -Dwrapper.disable_console_input=TRUE -Dwrapper.pid=2409 -Dwrapper.version=3.5.19 -Dwrapper.native_library=wrapper -Dwrapper.arch=x86 -Dwrapper.service=TRUE -Dwrapper.cpu.timeout=10 -Dwrapper.jvmid=1 org.tanukisoftware.wrapper.WrapperSimpleApp org.traccar.Main /opt/traccar/conf/traccar.cfg
0 S leo       3549  3421  2  80   0 - 853194 futex_ 16:24 ?       00:02:59 /usr/bin/java -Xms40m -Xmx512m -XX:MaxPermSize=256m -jar /home/leo/Downloads/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar -os linux -ws gtk -arch x86_64 -showsplash /home/leo/Downloads/eclipse//plugins/org.eclipse.platform_4.2.2.v201302041200/splash.bmp -launcher /home/leo/Downloads/eclipse/eclipse -name Eclipse --launcher.library /home/leo/Downloads/eclipse//plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807/eclipse_1502.so -startup /home/leo/Downloads/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar --launcher.overrideVmargs -exitdata 148007 -vm /usr/bin/java -vmargs -Xms40m -Xmx512m -XX:MaxPermSize=256m -jar /home/leo/Downloads/eclipse//plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar
0 S root      6280  4662  0  80   0 -  2360 pipe_w 18:24 pts/0    00:00:00 grep --color=auto java

呸呸呸!为什么?为什么?为什么adb中没有超时之类的?为什么 traccar(也有 Android 客户端的软件)使用 ADB 的 5037 端口作为其 IntelliTrac 组件?他们使用所有端口 5000 到 5040。

# /etc/init.d/traccar stop
Stopping traccar...
Stopped traccar.
# adb start-server
# adb devices

List of devices attached 
016814F11001F009    device
于 2013-06-14T22:43:03.063 回答
15

感谢您的解决方案。

但我试图杀死 adb 进程,我可以重新启动 adb 进程。

1)找到adb的PID

#pgrep adb
23038

2)杀死adb进程

#kill -9 23038

3)列出设备

#adb devices
于 2014-02-21T06:30:59.047 回答
0

AndyOS (Android Emulator) 也与 ADB 冲突。杀死了 Andy 服务,adb 又开始工作了。

于 2016-09-26T16:05:05.353 回答
0

在 giszmo 的回答之后,我adb被阻止了,但不是被另一个程序阻止,而是被connectIPv6 套接字 [永远不会绑定] 阻止。

ipv6.disable_ipv6=1

在我的内核上解决了这个问题,但可能不是永久解决方案。

于 2017-12-07T13:05:44.947 回答
0

我发现的一个简单解决方案是,断开 PC 与 Internet 的连接,然后重新启动计算机。系统重启完成后,在没有互联网连接的情况下启动 Android Studio。

Android Studio 启动并运行后,将计算机连接到 Internet。

这是唯一对我有用的解决方案。

于 2022-01-18T04:38:19.080 回答