Android获取模拟器给定的设备名称,反之亦然

时间:2013-07-08 15:12:33

标签: android-emulator adb

目前,当我运行adb devices时,它会给我一个类似于:

的设备列表
emulator-5554    device
emulator-5556    device

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

更新

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

2 个答案:

答案 0 :(得分:7)

使用telnet可以模拟器。不幸的是,它不是一个单独的命令,但一般来说,可以使用shell自动执行它。这是基本的想法:

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

    $ adb devices
    List of devices attached
    emulator-5554   device
    
  2. Telnet to emulator:

    $ telnet localhost 5554
    Trying 127.0.0.1...
    Connected to localhost.
    ...
    OK
    avd name
    Nexus7
    
  3. Nexus7 是avd名称。

    另请参阅此答案,了解如何在一行中进行telnet: https://stackoverflow.com/a/5608081

答案 1 :(得分:0)

  • 获取所有正在运行的模拟器进程的PID列表
  • 解析他们的cmdlines,收集avd名称
  • 检查这些进程打开的tcp端口
  • 将开放端口与adb devices输出
  • 匹配
相关问题