2013-06-06 5 views
8

Ich versuche eine Android-Anwendung/Dienst zu schreiben, der auf dem Zielgerät bereitgestellt werden kann. Die App kann als Hook zur Fernsteuerung eines Zielgeräts verwendet werden. Ab Jelly Bean Release steht die UI Automator-Implementierung zur Verfügung, die ähnliche Funktionen bietet. Es scheint jedoch, dass UI Automator nur über die ADB-Schnittstelle verwendet werden kann. Auf dem Gerät ausgeführte Anwendung kann UI Automator nicht direkt verwenden (???). Ich versuche eine Lösung zu finden, die ohne die Hilfe der ADB funktionieren kann. Zum Beispiel kann der Hook auf einem Socket als ein Protobuf-Server abhören. Der Client kann Befehle an den Hook senden, um die Fernsteuerung und das Gerät zu steuern. Ich habe den Andorid SDK-Quellcode untersucht. Es sieht so aus, als ob der einzige Weg ist, Android-Accessibility-APIs zu verwenden. Ich frage mich, ob es einen besseren Weg gibt?Kann eine Android-Anwendung eine andere Anwendung über UI Automator steuern?

Antwort

8

Es ist möglich, UiAutomator über eine Anwendung auszuführen, Sie müssen nur Ihr Test-jar auf dem Gerät haben und Ihrer Anwendung die entsprechenden Berechtigungen erteilen.

in Ihrer Anwendung können Sie dann einfach anrufen:

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

Und Ihr Gerät durchführen, was auch immer Ihre UiAutomatorTestCase durchführen würde.

Schnell Beispiel:

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"); 
+0

Hallo, wie bekomme ich die Test.jar-Datei? Ich kann den uiautomator Test von Android Studio ausführen. Aber ich bekomme eine APK vom Build und keine Jar-Datei. Können Sie bitte helfen ? – HaseebR7

+0

Ich habe das schon lange nicht mehr gemacht, aber [dieser Link] (https://looksok.wordpress.com/2014/02/08/uiautomator-in-eclipse/) schien für mich zu funktionieren. Im Wesentlichen nur: * Erstellen Sie Ihr Projekt: 'android erstellen uitest-Projekt -n ja -t 10 -p. ' * bauen Sie Ihr Glas:' Ameisen bauen' – tophernuts

+0

thanks! das hilft – HaseebR7

4

Sie müssen ADB-Anschluss (über WIFI oder Kabel) UiAutomator Testfälle ausgeführt werden, wenn Sie su Berechtigungen verfügen. Mit su Erlaubnis können Sie uiautomator vom Gerät selbst laufen lassen.

In UiAutomator-Testfällen können Sie Socket, WebSocket und einige andere Kommunikationsprotokolle implementieren, sodass Ihr Testfall die Kommunikationsverbindung zur Außenwelt freigibt und andere Geräte eine Verbindung herstellen können. In diesem Fall benötigen Sie eine ADB-Verbindung nur einmal, um den Testfall auszuführen, und dann können Sie die Verbindung trennen.

1

Sie können Ihren Code remote wie ausführen.

Wenn Ihr Gerät verwurzelt ist, können Sie zuerst Ihr Gerät mit dem Gerät verbinden und adb tcpip 5555 verwenden. Dadurch wird der Überwachungsport auf 5555 weitergeleitet und Sie können dann Ihr Skript auf Ihrem Gerät ausführen, das auf dem Gerät ausgeführt wird. Verwenden Sie einfach adb -s Shell

Verwandte Themen