【问题标题】:adb waits perpetually for running emulatoradb 永远等待运行模拟器
【发布时间】:2013-10-17 14:55:37
【问题描述】:

我刚刚在 linux 上安装了 SDK。我之前用过它,因为我去年做了一些android工作,当时我对这些工具没有任何问题。

但当前安装不会安装到模拟器上。 avd 被启动并且模拟器正在运行:

> adb devices
List of devices attached 
emulator-5554   device

> adb install blahblah.apk
error: protocol fault (no status)
- waiting for device -

挂起,直到我杀死它。那么:

> adb devices
List of devices attached

> adb kill-server
> adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *

> adb devices
List of devices attached 
emulator-5554   device

> adb -s emulator-5554 install blahblah.adk
error: protocol fault (no status)
- waiting for device -

作为普通用户和 root,我一定经历过十几次。我阅读了this Q&A 并在ADB_TRACE 上尝试了同样的事情。这在杀死和重新启动服务器时产生了奇怪的区别:

> 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/adb_client.c::adb_connect():adb_connect: service host:start-server
* daemon not running. starting it now on port 5037 *
ADB server didn't ACK
* failed to start daemon *

如果不启用跟踪,则始终是“守护程序已成功启动”。但是随后的adb devices 再次显示了模拟器。现在尝试adb install 会产生丰富的调试输出,并且就在“错误:协议错误(无状态)”之前:

system/core/adb/transport.c::readx():readx: fd=3 disconnected
system/core/adb/adb_client.c::adb_connect():adb_connect: return fd -1
error: protocol fault (no status)

然后在“等待设备”之前:

system/core/adb/transport.c::readx():readx: fd=3 wanted=4 got=4
4641494c FAIL
system/core/adb/transport.c::readx():readx: fd=3 wanted=4
system/core/adb/transport.c::readx():readx: fd=3 wanted=4 got=4
30303130 0010
system/core/adb/transport.c::readx():readx: fd=3 wanted=16
system/core/adb/transport.c::readx():readx: fd=3 wanted=16 got=16
646576696365206e6f7420666f756e64 device not found
system/core/adb/adb_client.c::switch_socket_transport():Switch transport failed
system/core/adb/adb_client.c::adb_connect():adb_connect: return fd -1

我在网上没有找到任何类似的报道。

【问题讨论】:

  • 只是一个旁注:你试过genymotion吗?如果它有效,您可以节省时间在这里解决这个问题 + 拥有更好的 AVD!
  • 你可以尝试用 sudo 运行 start-server。
  • 如前所述,我以普通用户和 root 身份都尝试过。 @bofredo 感谢您的提示。

标签: android android-emulator


【解决方案1】:

出于绝望,我再次解压了 SDK,希望它已经被从 .zip 中提取而没有打开整个东西而损坏(为什么你必须下载 ADT 包?)。

然后我运行 SDK 管理器并注意到上次我没有安装更新的 armeabi-v7a 系统映像,所以我这样做了。然后我在两个 SDK 目录(这个和今天早上的那个)上运行 diff -rq,报告的唯一内容是 armeabi-v7f 图像目录中的东西(查看build.prop,一个比一个月大) .

但是第一次将 .apk 安装到模拟器上没有问题,万岁。也许旧系统映像中存在错误——如果很奇怪,网上没有更多关于此的报告。

【讨论】:

  • 嘿,我想我遇到了类似的问题。它偶尔挂起,但是当它挂起时,我注意到相同的 transport.c::readx() 东西。你能详细说明一下你是如何解决的吗?可能会有点不同,因为我使用的是设备而不是模拟器,但值得一试。
  • @isick 直到去年年底,我每天都在使用该 SDK 安装时没有遇到任何此类问题(几周前我更换了整个系统)。因此,我必须得出结论,这是当时随附的系统映像与立即作为更新可用的系统映像之间的差异。现在查看 SDK 管理器,我没有看到 API 18 的 ARM EABI 映像的多个版本,本来应该是这样的,所以我假设一个替换了另一个......
  • ...也许是因为这样的事情?有人知道,哈哈。查看system-images/,我注意到它们的版本并没有超出它们所使用的API(我猜是build.prop 中的日期),所以那里没有可了解的历史。我只是再次在线搜索,看看其他人是否报告了同样的问题,除了 there is this 之外没有找到任何东西,我想你已经看到了?
  • 我确实看到了,但我的问题不在于识别设备,而在于安装它。我会考虑更新 SDK,但我刚刚在上周三出现此问题时进行了全新安装,所以我怀疑这就是问题所在......无论如何,感谢您回复我!如果您想更详细地解释我的问题,我有一个open SO question
猜你喜欢
  • 1970-01-01
  • 2013-11-24
  • 2012-02-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多