【发布时间】:2013-02-11 20:28:34
【问题描述】:
我开发了一个需要 root 访问权限的 Android 应用,它运行良好。我正在尝试使用带有ActivityInstrumentationTestCase2 的仪器测试来测试应用程序,并涵盖应用程序中使用 root 访问权限的部分。测试应该是完全自动化的,因为它们将在我们的 CI 上运行。
CI 构建会创建一个全新的模拟器,然后使用以下命令将模拟器设为 root:
adb -e install superuser.apk
adb shell mount -o rw,remount -t yaffs2 /dev/block/mtdblock03 /system
adb push su /system/xbin/su
adb shell chmod 06755 /system
adb shell chmod 06755 /system/xbin/su
它工作正常,但在某些时候,当测试需要它时,我必须在超级用户的根访问提示上单击“允许”按钮。我的问题是如何在不手动单击“允许”按钮并获得 root 访问权限的情况下执行这些测试。
如果我尝试使用以下代码从检测测试中单击此按钮
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);
我明白了
java.lang.SecurityException:
Injecting to another application requires INJECT_EVENTS permission
显然,此权限仅由系统应用程序使用,我无法使用此权限授权我的应用程序。也许我在这里做错了什么?
另一个想法是在模拟器从命令行启动期间对应用程序进行预授权,但我还没有找到方法。
【问题讨论】:
标签: android android-emulator integration-testing instrumentation root-access