【问题标题】:Android get emulator given name of device, or vice versa [duplicate]Android获取模拟器给定的设备名称,反之亦然[重复]
【发布时间】:2013-07-05 23:49:18
【问题描述】:

目前,当我运行 adb devices 时,它会为我提供一个类似于以下内容的设备列表:

emulator-5554    device
emulator-5556    device

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

更新

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

【问题讨论】:

  • 模拟器-list-avds

标签: android-emulator adb


【解决方案1】:

可以使用 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

【讨论】:

    【解决方案2】:
    • 获取所有正在运行的模拟器进程的 PID 列表
    • 解析他们的 cmdlines,收集 avd 名称
    • 检查这些进程打开的 tcp 端口
    • 将打开的端口与adb devices 输出匹配

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-19
      • 1970-01-01
      • 2012-06-28
      • 1970-01-01
      • 2016-04-07
      • 1970-01-01
      • 2016-07-04
      相关资源
      最近更新 更多