我们目前正在开发一个在我们的构建服务器上运行的仪器测试套件,但是当测试在使用普通 Android 模拟器的开发机器上通过时,构建服务器上的构建失败,因为我们只运行带有-no-window
标志的无头模拟器。
尝试调用InstrumentationTestCase.sendKeys()
方法以编程方式打开选项菜单时发生故障。错误是:
权限被拒绝:将关键事件从 pid 646 uid 10026 注入到 uid 1000 拥有的窗口 Window{43d55100 paused=false}
然后我们发现有一个INJECT_EVENTS
权限,但是在清单中设置它没有效果。事实上,在日志中我们看到了这样的输出:
未授予 android.permission.INJECT_EVENTS 包 com.qype.radar 的权限(protectionLevel=2 flags=0x6644)
这是否意味着此权限无用?
我们还尝试让仪器测试应用程序和被测应用程序使用相同的 Linux 用户 IDandroid:sharedUserId
并在同一进程中运行(android:process
我们不确定是否已经如此),但仍然没有运气。
这是否意味着目前无法在无头模拟器上运行包含关键事件的工具,或者我们错过了什么?