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
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");
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.
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
- 1. Steuern Sie eine andere Anwendung mit C#
- 2. Eine andere Frage über iPhone-Anwendung Status
- 3. Automator, AppleScript oder andere?
- 4. Schreiben auf Android UI Automator Ausgabekonsole
- 5. Django - wie man eine Anwendung auf eine andere verweisen kann
- 6. JavaFX starten eine andere Anwendung
- 7. Kann eine andere Anwendung über eine Umgebungsvariable in Visual Studio referenziert werden?
- 8. Eine andere Anwendung erzwingen SendToBack
- 9. hinzufügen ui-Maske Richtlinie eine andere Richtlinie
- 10. Wie zeichne Grafiken/Text über eine andere Anwendung
- 11. Mit Pipes und exec(), um eine andere Konsolenanwendung zu steuern
- 12. Materialise Bild über eine andere
- 13. kann nicht eine CSV-Datei über eine Rail-Anwendung exportieren
- 14. Wie kann ich den Zugriff auf eine Anwendung beschränken, die ich nicht nur über eine andere Referrer-Anwendung kontrolliere?
- 15. Multithreading-Anwendung, die eine andere ausführbare
- 16. UI Automator in Projekt mit minSdkVersion 9
- 17. Kann eine Android-Anwendung eine andere Anwendung in ihrem eigenen Speicherplatz installieren?
- 18. Steuern Sie eine Desktop-Anwendung mit einem Android-Handy
- 19. Button über Button hat eine andere Farbe
- 20. Mac: eine andere Anwendung zwingen, eine bestimmte Audiogerät
- 21. Warum kann "Scenic View" eine andere JavaFX-Anwendung prüfen?
- 22. Eine andere Anwendung fehlgeschlagen Codesign Verifikationsfehler
- 23. Überlagern Bitmap über eine andere Bitmap
- 24. feststellen, ob eine andere Anwendung beschäftigt ist
- 25. Kann ich Hardware über PHP Language steuern?
- 26. Kann eine Dockerfile eine andere erweitern?
- 27. dispaly eine Listenansicht über andere Aktivität
- 28. Dynamisch skalieren Objekt über eine andere gestapelt
- 29. Eine andere jQuery Noob Frage über Funktionen
- 30. Browserfenster über Javascript steuern
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
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
thanks! das hilft – HaseebR7