Android emulator Android获取设备的给定名称,反之亦然
当前,当我运行Android emulator Android获取设备的给定名称,反之亦然,android-emulator,adb,Android Emulator,Adb,当前,当我运行adb设备时,它会给我一个设备列表,看起来像: emulator-5554 device emulator-5556 device 我的目标是找到一个可以在shell中运行的命令,该命令以设备名称作为参数,例如Nexus7,并返回相应的设备序列,例如emulator-5554。如果这是不可能的,我希望能够有一个函数,它将emulator-5554作为参数,并返回Nexus7(前一个函数的相反方向),然后我将在adb devices中的所有设备上循环,并找出与Nexus
adb设备时,它会给我一个设备列表,看起来像:
emulator-5554 device
emulator-5556 device
我的目标是找到一个可以在shell中运行的命令,该命令以设备名称作为参数,例如Nexus7
,并返回相应的设备序列,例如emulator-5554
。如果这是不可能的,我希望能够有一个函数,它将emulator-5554
作为参数,并返回Nexus7
(前一个函数的相反方向),然后我将在adb devices
中的所有设备上循环,并找出与Nexus7
匹配的设备
更新
我找到了一个解决方案,它是在启动avd时指定端口号,然后我知道哪个模拟器映射到哪个avd名称,但理想情况下我仍然希望知道这里的答案。
- 获取所有正在运行的仿真程序进程的PID列表
- 解析他们的cmdline,收集avd名称
- 检查这些进程打开的tcp端口
- 将打开的端口与adb设备进行匹配
使用telnet到emulator是可能的。不幸的是,这不是一个单一的命令,但一般来说,使用shell可以实现自动化。基本思路如下:
查找仿真器的端口号(5554):
Telnet到emulator:
$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
...
OK
avd name
Nexus7
Nexus7是avd名称
另请参见此答案,了解如何在一行中进行telnetting:
仿真器-列出AVD
$ telnet localhost 5554
Trying 127.0.0.1...
Connected to localhost.
...
OK
avd name
Nexus7