【问题标题】:Terminal & Windows command to get Android device name along with AVD name终端和 Windows 命令以获取 Android 设备名称以及 AVD 名称
【发布时间】:2020-05-02 22:56:55
【问题描述】:

如何获取设备名称和 AVD 名称

  • 创建了 3 个 Android 虚拟设备(Android 8、9 10 版本)
  • 从 AVD Manager 启动模拟器
  • 在终端窗口中

ADB 命令

adb devices

上面的命令返回的输出如下

List of devices attached
emulator-5554   device
emulator-5556   device
emulator-5558   device

和模拟器命令

emulator -list-avds

上面的命令返回的输出如下

Pixel_2_XL_API_27
Pixel_2_XL_API_28
Pixel_2_XL_API_29

我想知道每个 AVD 名称附加了哪个设备

另外,如果我以不同的顺序启动 AVD,则设备名称会发生​​变化

示例: 如果我只启动一个模拟器 Pixel_2_XL_API_28 则显示 emulator-5554,如果我在启动 Pixel_2_XL_API_29 后启动 Pixel_2_XL_API_28 则显示 Pixel_2_XL_API_28 的模拟器 5556

是否可以将一个设备 ID 与一个 AVD 名称相关联?

谢谢

【问题讨论】:

    标签: android cmd terminal adb emulation


    【解决方案1】:

    这里有一个解决方案,在 python 中

    def get_details():
        devices = str(subprocess.check_output("adb devices|grep -|grep device|awk {'print $1'}", shell=True,text=True))
        ans = str.strip(devices).split('\n')    
        port_avd={}
        for emulator in ans:
            port= emulator[-4:]
            p = subprocess.Popen("((sleep 1;echo 'avd name';sleep 1)|telnet localhost " + port + ")|tail -2 ",shell=True,stderr=subprocess.PIPE,stdout=subprocess.PIPE,text=True)
            port_avd[port] = p.stdout.readline().strip()
            
        return port_avd
    

    如果你要打印这个函数的输出,你会得到一个格式为

    的字典
    {'5554': 'Nexus_5_API_24'}
    

    其中键“5554”来自设备列表,值是 AVD 名称,根据要求。

    重要提示:

    • shell=True的使用不安全,可以查一下。
    • 可能有一种更有效的方法,因为我正在启动一个 telnet 会话来获取 AVD 名称。

    【讨论】:

      猜你喜欢
      • 2012-02-04
      • 2014-01-17
      • 2012-05-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-05
      • 2021-04-20
      相关资源
      最近更新 更多