Kann eine Android-Anwendung eine andere Anwendung über UI Automator steuern?

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?

    
Zhichao 06.06.2013, 04:42
quelle

3 Antworten

8

Es ist möglich, UiAutomator von einer Anwendung aus zu starten, Sie müssen nur Ihr Test-jar auf dem Gerät haben und Ihrer Anwendung die Berechtigung erteilen.

Von Ihrer Anwendung können Sie dann einfach anrufen:

%Vor%

Und Ihr Gerät wird alles ausführen, was Ihr UiAutomatorTestCase ausführen würde.

Kurzes Beispiel:

%Vor%     
tophernuts 10.07.2013, 01:32
quelle
4

Sie benötigen eine ADB-Verbindung (über WIFI oder Kabel), um UiAutomator-Testfälle auszuführen, es sei denn, Sie haben su-Berechtigungen. 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 freilegt und andere Geräte sich damit verbinden 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.

    
Amir 16.07.2013 16:11
quelle
1

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

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

    
user3656539 20.05.2014 12:24
quelle