如果我在一台机器上使用-no-window选项运行多个模拟器。命令"adb devices“显示:
List of devices attached
emulator-5554 device
emulator-5556 device
emulator-5558 device
...但是,根据这个输出,我根本无法区分每个仿真器设备之间的区别。我需要知道哪个仿真器在什么AVD上运行,然后我才能安装APK或向仿真器发送命令。
如何识别每个仿真器设备或在仿真器运行后获取仿真器的序列号?
发布于 2010-02-08 07:53:58
总是在相同的端口上启动相同的AVD,不要让仿真器决定。使用
$ emulator -ports X,Y @avd_X然后,序列号将是emulator-X,avd_X将始终位于端口X,Y上,因此您可以使用此序列号运行命令,例如
$ adb -s emulator-X shell cmd要终止仿真器运行
$ adb -s emulator-X emu kill发布于 2017-02-04 17:24:48
据我所知,有两种方法可以执行AVD名称的反向序列号查找
Telnet选项-丑陋的方式
正如在这篇SO answer中指出的.您可以使用Telnet反向查找每个序列号的AVD名称。这有点弱,因为您所做的只是查找给定特定AVD名称启动的仿真器的实例。它不能唯一地标识您要使用的仿真器。它还需要使用telnet并解析出每个仿真器的端口号。
首先获取当前运行的序列号
adb devices然后telnet到每个设备的端口号
telnet localhost 5554并发出以下命令
avd name它将返回该仿真器的AVD名称。
UUID选项-正确的方式
我最初在一个名为DCMTK的项目中看到了这一点。生成一个UUID uuidgen并在启动时在模拟器上设置一个属性!我的示例启动一个模拟器,对需要在目标上运行代码以确定类型信息的库执行一些编译时检查。
emulator -avd nexus19-arm -no-window -no-boot-anim -noaudio -prop emu.uuid=7a6f8701-43c2-4e16-988a-8b4992c0bf8d >/dev/null </dev/null 2>&1 &然后,当您想要查找该仿真器的特定实例时,只需滚动所有正在运行的仿真器并查找该UUID。
adb -s emulator-5556 shell getprop emu.uuid在循环中:
for SERIAL_NUMBER in `adb devices| grep emulator| cut -f1`; do
UUID=`adb -s ${SERIAL_NUMBER} shell getprop emu.uuid | tr -d '\r\n'`
echo ${SERIAL_NUMBER} ${UUID}
done跟踪整个仿真器生命周期
使用UUID property
adb -s ${SERIAL_NUMBER} wait-for-device,您就知道何时可以与仿真器通信
adb -s ${SERIAL_NUMBER} wait-for-device,只需使用adb -s ${SERIAL_NUMBER} emu kill终止仿真器
发布于 2010-02-07 04:35:17
相同的字符串(例如,emulator-5554)显示在仿真器窗口的标题栏中。
https://stackoverflow.com/questions/2214377
复制相似问题