Как программно выполнять команды ADB в Java на Mac OS для устройства Android - PullRequest
0 голосов
/ 31 мая 2018

все!Я пытаюсь написать слушатель для моей среды тестирования, используя приложения Appium, Java, TestNG for Android на реальном устройстве.В своих тестах я хочу использовать некоторые команды ADB, например, сделать снимок экрана, записать видео, получить файл logcat и т. Д.

Итак, у меня есть: устройство Mac OS Android Xiaomi, с версией Android 7.0 ADB ANdroid SDK java

Если я использую команды в Терминале: adb exec-out screencap -p> /Users/dmytro/Documents/other/1.png - снимок экрана успешно сохранен в соответствующей папке.И другие команды прекрасно работают вручную, введенные в терминале и в терминале моего IntelijIDEA.

Если я использую ту же команду программно, используя класс времени выполнения:

Runtime.getRuntime().exec(adb exec-out screencap -p > /Users/dmytro/Documents/other/1.png"); // Save screenshot to Mac machine

или

Runtime.getRuntime().exec("adb logcat > /Users/dmytromynziak/Documents/other/log.txt"); //Save logical file

Runtime.getRuntime().exec("db exec-out screencap -p > /sdcard/1.png"); // Save screenshot to scared of android device

Не работает, скриншот не сохраняется на Mac-машине и даже не может найти на устройстве Android.

Никаких ошибок я не получил, похоже, все работает.см. скриншот из режима отладки. screenShot from debug mode

На самом деле некоторые команды adb работали нормально в ОС WIndows, но на Mac - нет.

Помогите мне выполнить ADBКоманды в коде Java, пожалуйста.

1 Ответ

0 голосов
/ 31 мая 2018

Команды adb выполняются успешно, но не перенаправляются в файл, как ожидалось.С Java Runtime.getRuntime().exec() > для перенаправления не будет работать.Объяснение этому можно найти в этом вопросе StackOverflow: Метод exec () среды выполнения не перенаправляет вывод

adb logcat сам по себе также имеет флаг -f, который говорит процессу писатьв файл, как описано в этом обсуждении: Поймать LogCat программно или экспортировать его в файл?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...