【发布时间】:2013-03-27 15:41:41
【问题描述】:
我正在尝试运行 adb。当我运行:“adb start-server”时,它会挂起一段时间,然后没有消息。
之后命令“adb get-state”收到答案“错误:协议故障(无状态)” 如果我运行“adb kill-server”,答案是“* server not running *”
我使用的是 Windows 7。管理员已将我的权限提升为本地管理员,但它没有解决任何问题。
我使用资源监视器来验证是否有其他应用正在使用 adb 的端口,但事实并非如此。
在https://developers.google.com/chrome-developer-tools/docs/remote-debugging 第 3 步表示“设置”>“高级”>“开发工具”下的“启用 USB Web 调试”。 但在我的测试手机上,chrome 设置中没有“高级”类别。我也找不到安装的 chrome 版本。
在网上的某个地方,我看到一个建议更改“tmp/android/”的权限以允许所有用户读写,但在 C:\Users\me\AppData\Local\Android\android-sdk\ temp 没有 android 文件夹。
所以我现在很绝望,任何帮助将不胜感激。
谢谢
-奥利维尔
编辑 1:我找不到“启用 USB Web 调试”,因为它是“android 浏览器”而不是 chrome(有点荒谬是的)。我不知道。使用另一台安装了正确 chrome 的设备,我可以在那里检查选项,但 adb 在启动时仍然崩溃。
编辑 2:我猜测平台工具文件夹存在一些写入问题。 所以我使用sdk管理器卸载了所有东西,我删除了整个adt-bundle-windows-x86_64。然后我将它解压缩到其他地方,在 c: 上。奇怪的是,当我启动 SDKManager.exe 时,几个包已经被标记为已安装:
- 工具>Android SDK 工具
- 工具>Android SDK 平台工具
- Android 4.2.2>SDK 平台
- Android 4.2.2>ARM EABI v7a 系统映像
- Extras>Android 支持库
我尝试再次卸载它们,删除文件夹,再次解压缩并重新安装,但仍然是相同的结果。似乎不知何故,它安装错误,但拒绝正确卸载。有谁知道如何强制卸载?
编辑 3 : 使用 set ADB_TRACE=1 后 adb start-server 的输出
C:\adt-bundle-windows-x86_64-20130219\sdk\platform-tools>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/sysdeps_win32.c::socket_loopback_client():socket_loopback_client: port 5037 type tcp => fd 100
system/core/adb/transport.c::writex():writex: fd=100 len=4: 30303063 000c
system/core/adb/transport.c::writex():writex: fd=100 len=12: 686f73743a76657273696f6e host:version
system/core/adb/transport.c::readx():readx: fd=100 wanted=4
system/core/adb/transport.c::readx():readx: fd=100 disconnected
system/core/adb/sysdeps_win32.c::adb_close():adb_close: 100(lo-client:5037)
system/core/adb/adb_client.c::adb_connect():adb_connect: service host:start-server
【问题讨论】:
-
检查任务管理器中没有杂散的 ADB 进程。有时我有一个“atra”亚行进程,它给我带来了类似的问题。我通过终止这个进程来解决这个问题。然后做
adb start-server -
当我运行 adb start-server 时,当命令挂起时,adb.exe 进程出现了。但是当我把光标移回来时,这个过程同时消失了。所以不存在幻象进程。
-
这个问题太老了,可能对任何人都没有用了
-
不要使用这个,它现在已经过时了。