7

目前,当我运行adb devices它时,它会给我一个设备列表,如下所示:

emulator-5554    device
emulator-5556    device

我的目标是找到一个可以在 shell 中运行的命令,该命令将设备名称作为参数,例如Nexus7并返回相应的设备序列号,例如emulator-5554. 如果这不可能,我希望能够有一个函数emulator-5554作为参数并返回Nexus7(与前一个函数相反的方向),然后我将遍历所有设备adb devices并找出匹配的设备Nexus7

更新

我找到了一个解决方案,它是在我启动 avd 时指定端口号,然后我知道哪个模拟器映射到哪个 avd 名称,但理想情况下我仍然想在这里知道答案。

4

2 回答 2

9

telnet到模拟器是可能的。不幸的是,这不是一个命令,但通常可以使用 shell 自动化它。这是基本思想:

  1. 查找模拟器的端口号(5554):

    $ adb devices
    List of devices attached
    emulator-5554   device
    
  2. Telnet 到模拟器:

    $ telnet localhost 5554
    Trying 127.0.0.1...
    Connected to localhost.
    ...
    OK
    avd name
    Nexus7
    

Nexus7是 avd 名称。

另请参阅此答案以了解如何在一行中进行远程登录: https ://stackoverflow.com/a/5608081

于 2016-08-09T09:38:49.687 回答
0
  • 获取所有正在运行的模拟器进程的 PID 列表
  • 解析他们的 cmdlines,收集 avd 名称
  • 检查这些进程打开的 tcp 端口
  • 将开放端口与adb devices输出匹配
于 2013-07-08T17:50:48.413 回答