2016-05-04 21 views
2

Wenn ich diese Zeile in meine Test-App, Runtime.getRuntime().exec("uiautomator dump"), legte, wurde keine .xml-Datei gedumpt. Ich bin mir ziemlich sicher, dass ich den korrekten Standort überprüft habe.uiautomator Dump in Runtime.getRuntime(). Exec() funktioniert nicht

Ich habe versucht, meine App zu debuggen, indem Sie einen Unterbrechungspunkt setzen. Wenn es den Haltepunkt erreicht, I adb shell am Terminal, um in das Gerät zu gelangen, und dann manuell uiautomator dump vom Terminal ausführen, dann heißt es killed, keine XML-Datei wurde entweder produziert.

adb shell uiautomator dump erzeugt nur XML-Datei, wenn ich meine App getötet habe, und diesen Befehl vom Terminal ausführen.

Ist das eine Art von Erlaubnis oder Zugänglichkeitsproblem?

+0

Siehe auch [Wenn Runtime.exec() nicht wird] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html) für viele gute Tipps zum korrekten Erstellen und Bearbeiten eines Prozesses. Dann ignoriere es auf 'exec' und verwende einen' ProcessBuilder' um den Prozess zu erstellen. Achten Sie darauf, einen 'String arg' in' String [] args' zu zerlegen, um Dinge wie einen Pfad mit Leerzeichen darin zu berücksichtigen. –

Antwort

1

Sie können adb shell uiautomator dump nicht verwenden, während ein Test ausgeführt wird.

Sie können stattdessen UiDevice.dumpWindowHierarchy(..) von innerhalb Ihres Tests aufrufen.

+1

Warum können wir nicht den UI-Automator-Dump von adb shell verwenden, während ein Test ausgeführt wird? – emilywuq

+1

Es gibt eine Einschränkung im Framework - nur ein UiAutomation-Client kann gleichzeitig verbunden sein. Wenn der Test ausgeführt wird, hat er die Verbindung. Dies verhindert, dass sich der "uiautomator dump" verbindet. –

+0

Das hilft wirklich. Danke für die Erklärung! – emilywuq