ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

Midscene 控制 Android 设备点击时报 SecurityException INJECT_EVENTS 权限错误怎么排查?

Midscene 控制 Android 设备点击时报 SecurityException INJECT_EVENTS 权限错误怎么排查? Midscene 控制 Android 设备点击时报 SecurityException INJECT_EVENTS 权限错误怎么排查【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene用 Midscene 通过 adb 控制 Android 设备时设备明明已经连上但执行点击tap类操作却报错典型信息如下Error: Exception occurred while executing tap: java.lang.SecurityException: Injecting input events requires the caller (or the source of the instrumentation, if any) to have the INJECT_EVENTS permission.这个错误的含义是执行注入输入事件的调用方没有 INJECT_EVENTS 权限。按照 Android 平台文档 的常见问题说明这类问题的排查方向是设备端的开发者选项配置而不是 Midscene 的脚本或模型配置。确认错误现象与适用场景先确认你遇到的就是同一个问题设备已通过数据线或 adb 网络连接连上电脑adb devices -l能看到设备Midscene 的截图、连接等步骤正常但tap这类点击操作失败抛出上面那段SecurityException ... INJECT_EVENTS permission错误。如果连设备都不可见说明问题还在 adb 连接层面应先走文档中「准备 Android 设备」的通用排查而不是本文的路径。检查 adb 连接是否就绪在动设备设置之前先用文档给出的命令确认 adb 侧没有问题adb devices -l出现类似下面这样的输出代表连接成功以下为文档示例List of devices attached s4ey59 device usb:34603008X product:cezanne model:M2006J device:cezan transport_id:3如果这里看不到设备先解决 adb 连接问题如果能看到设备但 tap 报SecurityException继续下一步。在开发者选项中开启所需开关问题的根因在设备的开发者选项配置上。按文档要求在系统设置的开发者选项中确认以下选项已开启USB 调试USB 调试安全设置如果设备上存在该选项文档同时提示需要确保设备已解锁英文文档表述为 USB debugging is enabled and the device is unlocked in developer options。官方文档中有一张开发者选项截图可以看到这两个开关的位置其中「USB 调试安全设置」是 Android 14 起常见的关键项专门控制是否允许注入模拟按键/触摸事件。如果你的 Android 版本没有这个选项只需确认「USB 调试」已开启即可。改完后重新执行之前失败的点击操作重跑脚本或 Playground 中的动作不再抛出SecurityException: ... INJECT_EVENTS permission即表示问题解决。验证控制是否恢复文档推荐的验证方式是 Android Playground无需编写代码即可确认aiAct等核心能力是否可用npx --yes midscene/android-playground启动后在 Playground 窗口执行一次点击类动作。文档说明 Playground 与midscene/android共享相同的代码实现在 Playground 上验证通过的流程用脚本运行时行为一致所以这一步通过基本可以确认点击权限问题已消除。如果你是在跑脚本直接重跑原脚本即可脚本运行结束后控制台出现Midscene - report file updated: /path/to/report/some_id.html提示时可在浏览器中打开该 HTML 报告回放每次交互确认点击步骤真实生效。边界与注意事项该排查路径针对的是「设备已连接、但注入点击事件被系统拒绝」这一种错误如果报错是 adb 找不到设备、截图黑屏、文本被输入法改写等其他现象文档中对应的是不同的 FAQ 条目不属于本问题。「USB 调试安全设置」开关是否存在取决于设备的 Android 版本和 ROM不是所有设备都有文档的表述就是「如果存在」则一并开启。若你在用自定义 adb 路径或远程 adb 服务器可参考 Android 平台文档 中「如何使用自定义的 adb 路径或远程 adb 服务器」一节但那与 INJECT_EVENTS 权限错误是两类问题。【免费下载链接】midsceneGUI Agent for E2E Testing项目地址: https://gitcode.com/GitHub_Trending/mid/midscene创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表