我已经开发了一个需要root访问权限的Android应用程序,它工作得很好。我正在尝试使用ActivityInstrumentationTestCase2的插装测试来测试应用程序,并涵盖应用程序中利用根访问的部分。测试应该是完全自动化的,因为它们将在我们的CI上运行。CI构建创建了一个新的仿真器,然后它使用以下命令将仿真器作为根:
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访问提示上单击"Allow“按钮。我的问题是如何在不手动单击"Allow“按钮的情况下执行这些测试,并获得root访问权限。
如果我尝试使用以下代码在工具测试中单击此按钮
instrumentation.sendKeyDownUpSync(KeyEvent.KEYCODE_DPAD_CENTER);我得到了
java.lang.SecurityException:
Injecting to another application requires INJECT_EVENTS permission显然,此权限仅由系统应用程序使用,我无法使用此权限授权我的应用程序。也许我在这里做错了什么?
另一个想法是在模拟器引导期间从命令行对应用程序进行预授权,但我还没有找到方法。
发布于 2013-02-18 22:58:40
你的方法会有很多问题,你可以使用不同的框架而不是工具(例如monkey/http://developer.android.com/tools/testing/testing_ui.html)来自动化按钮按下,但我建议你使用快照/为你的模拟器自定义磁盘镜像,创建你自己的快照/镜像,将手机放入根目录,然后你应该能够启动模拟器,并告诉它使用已经具有根访问权限的快照。
https://stackoverflow.com/questions/14820278
复制相似问题