2016-05-04 11 views
2

Когда я положил эту строку в свое тестовое приложение, Runtime.getRuntime().exec("uiautomator dump"), файл .xml не был сброшен. Я уверен, что проверил правильное местоположение.Сброс uiautomator в Runtime.getRuntime(). Exec() не работает

Я попытался отладить мое приложение, поставив точку останова. Когда он достигнет точки останова, I adb shell на терминале, чтобы войти в устройство, а затем вручную запустите uiautomator dump с терминала, тогда он говорит killed, и файл .xml не был создан.

adb shell uiautomator dump только производит .xml-файл, когда я убил свое приложение и запускаю эту команду с терминала.

Это проблема разрешения или доступности?

+0

См. Также [Когда Runtime.exec() не будет] (http://www.javaworld.com/article/2071275/core-java/when-runtime-exec---won-t.html) для много хороших советов по правильному созданию и обработке процесса. Затем проигнорируйте это, ссылаясь на 'exec' и используйте' ProcessBuilder' для создания процесса. убедившись, что «String arg» в 'String [] args' будет зависеть от таких вещей, как путь с пробелами в нем. –

ответ

1

Вы не можете использовать adb shell uiautomator dump во время проверки.

Вы можете позвонить UiDevice.dumpWindowHierarchy(..) из своего теста.

+1

Почему мы не можем использовать дамп uiautomator оболочки adb во время проверки? – emilywuq

+1

Существует ограничение в рамках - только один клиент UiAutomation может быть подключен одновременно. Когда ваш тест запущен, он имеет соединение. Это предотвращает подключение «дампа uiautomator». –

+0

Это действительно помогает. Спасибо за объяснение! – emilywuq