MacOS下Pixel 6 Pro模拟器adb shell input tap命令无响应问题排查
排查adb input tap无响应问题
核心问题:坐标体系不匹配
getevent获取的是输入设备原始坐标,和input tap使用的系统屏幕显示坐标不是同一套标准。模拟器的触摸输入设备坐标范围通常远大于实际屏幕像素分辨率,你直接转换十六进制得到的25690,8496已经超出屏幕可点击区域,所以命令执行后没有视觉反馈。
具体排查修复步骤
确认模拟器实际屏幕分辨率
执行命令获取当前设备的显示分辨率:adb -s emulator-5556 shell wm size比如Pixel 6 Pro默认分辨率是
1440x3120,你用的坐标远大于这个范围,自然点击无效。转换原始坐标为屏幕可用坐标
先获取输入设备的坐标范围上限:adb -s emulator-5556 shell getevent -lp找到触摸设备对应的
ABS_MT_POSITION_X和ABS_MT_POSITION_Y的max值(比如常见的32767),然后用以下公式转换:屏幕X = (原始X值 / 设备X最大值) * 屏幕宽度 屏幕Y = (原始Y值 / 设备Y最大值) * 屏幕高度举个例子,如果设备X/Y最大值是32767,屏幕宽度1440、高度3120,你的原始坐标转换后是:
屏幕X = (25690 / 32767) * 1440 ≈ 1128 屏幕Y = (8496 / 32767) * 3120 ≈ 808再用转换后的坐标执行命令:
adb -s emulator-5556 shell input tap 1128 808验证adb连接状态
确认设备连接正常:adb -s emulator-5556 devices输出显示
emulator-5556 device即为正常。如果不确定,重启adb服务试试:adb kill-server adb start-server尝试sendevent命令替代
部分模拟器对input tap支持不佳,可以尝试用更底层的sendevent命令(需要替换eventX为你从getevent看到的触摸设备编号,比如event1):adb -s emulator-5556 shell sendevent /dev/input/eventX 3 53 1128 && sendevent /dev/input/eventX 3 54 808 && sendevent /dev/input/eventX 0 0 0
内容的提问来源于stack exchange,提问作者Joey Yi Zhao
相关产品推荐
相关产品推荐

