10

我正在尝试编写一个可以部署在目标设备上的 Android 应用程序/服务。该应用程序可用作远程控制目标设备的挂钩。从 Jelly Bean 版本开始,提供了 UI Automator 实现,它提供了类似的功能。但是,UI Automator 似乎只能通过 ADB 接口使用。在设备上运行的应用程序不能直接使用 UI Automator (???)。我正在尝试找到一个无需亚行帮助即可工作的解决方案。例如,钩子可以作为 protobuf 服务器侦听套接字。客户端可以向钩子发送命令以远程控制和设备。我查看了 Andorid SDK 源代码。看起来唯一的方法是使用 android 可访问性 API。我想知道是否有更好的方法?

4

3 回答 3

10

可以从应用程序运行 UiAutomator,您只需要在设备上安装您的测试 jar 并授予您的应用程序 su 权限。

然后,您可以从您的应用程序中调用:

uiautomator runtest Test.jar -c com.package.name.ClassName -e key value

您的设备将执行您的 UiAutomatorTestCase 将执行的任何操作。

快速示例:

Process rt = Runtime.getRuntime().exec("su");
DataOutputStream os = new DataOutputStream(rt.getOutputStream());

os.writeBytes("uiautomator runtest Testing.jar -c com.hey.rich.CalculatorDemo" + "\n");
os.flush();
os.writeBytes("exit\n");
于 2013-07-10T01:32:27.960 回答
5

You need ADB connection (over WIFI or Cable) to run UiAutomator test cases unless you have su permissions. With su permission you can run uiautomator from the device itself.

In UiAutomator test cases, you can implement socket, webSocket and some other communication protocols, so your test case will expose communication connection to the outside world and other devices can connect to it. In this case, you need ADB connection only once to run the test case, then you can disconnect it.

于 2013-07-16T16:11:31.827 回答
1

您可以远程执行您的代码。

如果您的设备已植根,您可以首先将您的设备与机器连接并使用 adb tcpip 5555。这将转发 5555 上的侦听端口,然后您可以在您的机器上执行您的脚本,该脚本将在设备上运行。只需使用 adb -s shell

于 2014-05-20T12:24:15.700 回答