Окно устройства
Начало работы.
В окне устройства идёт работа с подключённым телефоном или эмулятором: здесь виден его экран, по нему можно кликать и свайпать мышью, а при включённой Записи все действия попадают в проект в виде экшенов.
Работа с эмуляторами MEmu, LDPlayer и MuMu в ZennoDroid Pro и Lite описана в статье Окно устройства (эмуляторы).
Пока устройство не запущено, окно выглядит так:
Окно устройства до запуска.
Чтобы начать работу, нажмите Запустить устройство. Если при этом включена Запись проекта, на холст будут добавлены два действия: Выбрать устройство и Запуск/перезапуск устройства.
Если запустить устройство не удалось, под кнопкой появится причина. Устраните её и нажмите кнопку ещё раз.
Компоненты окна.
Такое окно вы увидите после успешного запуска устройства:
Окно запущенного устройства.

С экраном можно работать напрямую: кликать, свайпать, открывать приложения - все действия передаются на устройство. А если включена запись, они ещё и добавляются на холст в виде соответствующих экшенов.
Кнопки управления.
| Кнопка | Описание |
|---|---|
| Назад | Переход на прошлый экран. |
| Домой | Возврат на домашний экран. |
| Недавние приложения | Открыть список недавних приложений. |
| Обновить экран | Обновить изображение экрана. Кнопка видна, только когда изображение обновляется вручную: выбран способ захвата Вручную или телефон запущен пунктом Безопасный запуск → Обновление вручную. |
| Действия (три точки) | Открыть меню действий. |
Кнопки Закрыть участок, Приблизить, Отдалить и Запись движений мыши перенесены в меню действий, в группу Другие действия.
Текущее устройство.
Кнопка с именем текущего устройства. Нажатие открывает Менеджер устройств, где можно выбрать другое устройство.
Прокси.
Кнопка показывает прокси, установленный на устройстве, или надпись Без прокси. Нажатие открывает окно Установить прокси:
- Адрес прокси - строка прокси, например
255.255.255.255:8080илиprotocol://login:pass@IP:port. - Тип прокси - способ проксирования: По умолчанию (как задано в настройках), Proxifier, Redsocks или Clash.
- Использовать интернет-подключение компьютера - пускать трафик телефона через компьютер (подробнее). Флажок есть только для Redsocks и Clash.
Кнопка OK применяет прокси к устройству.
Координаты мыши.
Если курсор находится в пределах экрана устройства, здесь отображаются его текущие координаты (X, Y).
Эти координаты можно использовать в экшенах Эмуляция swipe и Эмуляция touch.
Меню действий.
Кнопка Действия с тремя точками открывает меню часто используемых действий с устройством:

Пункты, у которых на значке красная точка, записываются в проект: если включена Запись, выполненное действие добавится на холст соответствующим экшеном. Что именно добавляется, показано в таблице ниже.
Большинство пунктов доступны, только пока устройство запущено. Пункты Разблокировать экран, Очистить logcat, Выполнить диагностику... и Выполнить команду... работают и с незапущенным устройством, если оно доступно по adb.
Окна меню открываются по одному: пока одно из них открыто, кнопка Действия недоступна. Экран устройства при этом продолжает работать.
Приложения.
- Установить APK... - открывает окно установки приложения.
- Закрыть все приложения - убирает все приложения из списка недавних.
Пункты под заголовком Активное приложение работают с приложением, открытым на экране:
- Очистить - очищает данные приложения. Перед очисткой ZennoDroid попросит подтверждение.
- Очистить кэш - очищает только кэш приложения.
- Закрыть - закрывает приложение.
- Удалить - удаляет приложение с устройства, тоже после подтверждения.
- Сделать бэкап... - сохраняет данные приложения в файл.
- Восстановить из бэкапа... - восстанавливает данные приложения из файла бэкапа.
- Получить APK... - сохраняет APK приложения на компьютер: подробнее.
- Информация... - показывает идентификатор приложения, его название и версию.
Установка APK.
- Файл APK - файл приложения на компьютере:
.apk,.apks,.apkmили.xapk. - Кэшировать - оставить файл на устройстве: при повторной установке того же APK он не будет копироваться заново.
- С правами суперпользователя - устанавливать от root.
Бэкап и восстановление.
Оба окна работают с приложением, открытым на экране: его идентификатор указан в строке Приложение.
Окна «Сделать бэкап» и «Восстановить из бэкапа».
- Где хранится бэкап - На компьютере или На устройстве.
- Файл бэкапа - путь к файлу.
- При бэкапе: Сохранять разрешения, Сохранять связанный аккаунт и Тип аккаунта.
- При восстановлении: Восстанавливать разрешения, Восстанавливать связанный аккаунт и Использовать модуль ZennoBackup.
Эти параметры повторяют параметры экшена Действия с приложениями.
Получить APK.
Окно «Получить APK».
Окно сохраняет на компьютер APK приложения, открытого на экране: его идентификатор указан в строке Приложение. В поле Куда сохранить на компьютере указывается файл. Сначала там стоит файл, названный по идентификатору приложения, в папке, куда APK сохраняли в прошлый раз, а в первый раз - в папке «Документы».
Если приложение установлено из нескольких APK (split APK), они сохраняются одним файлом .apks - его можно поставить обратно через Установить APK.... Кнопка Получить сохраняет файл, а долгую передачу можно остановить кнопкой Прервать.
Файлы.
- Отправить файл... - копирует файлы с компьютера на устройство. В окне указываются Файл на компьютере и Куда положить файл на устройстве.
- Получить файл... - копирует файл с устройства на компьютер. В окне указываются Какой файл забрать с устройства и Куда сохранить на компьютере.
- Файлы устройства... - открывает файловый менеджер устройства.
В обоих окнах передачи есть флажок С правами суперпользователя. Долгую передачу можно остановить кнопкой Прервать.
Окна «Отправить файл» и «Получить файл».
Файлы устройства.
Окно «Файлы устройства».

Файловый менеджер показывает папки и файлы устройства с размером, правами, владельцем, группой, контекстом SELinux и датой изменения. Кнопки над списком открывают корень /, папки /data и /sdcard. Кнопка со звёздочкой добавляет открытую папку в избранное или убирает её оттуда, а стрелка рядом с ней открывает список избранных папок.
Всё, что можно сделать с файлом или папкой, собрано в меню по правой кнопке мыши:
- Открыть - открыть папку. Файл передаётся приложениям устройства: его откроет приложение для этого типа файлов, или на экране устройства появится выбор приложения.
- Получить... - скопировать файл на компьютер.
- Создать папку, Переименовать, Удалить.
- Владелец и группа..., Права доступа..., Контекст SELinux... - изменить владельца и группу, права доступа и контекст SELinux.
Самые частые из этих действий продублированы кнопками внизу окна. А чтобы отправить файлы на устройство, перетащите их из Проводника в окно: они попадут в открытую папку.
В окне Права доступа права задаются флажками или числом:
Magisk / LSPosed.
Magisk:
- Открыть Magisk - открывает приложение Magisk, даже если оно скрыто под другим именем.
- Установить модуль... - устанавливает модуль Magisk из файла, который лежит На компьютере или На устройстве. Модуль заработает после перезагрузки устройства.
- Модули... - открывает список модулей.
- Быстрая настройка... - устанавливает все модули Magisk (
.zip) и приложения (.apk) из папки на компьютере в порядке имён файлов.
В окне Быстрая настройка Magisk укажите папку: ZennoDroid покажет, сколько в ней модулей и APK, и установит их кнопкой Установить.
Окно «Быстрая настройка Magisk».
LSPosed:
- Открыть LSPosed - открывает менеджер LSPosed.
- Настройка модуля... - включает модуль LSPosed для выбранных приложений: подробнее.
- Сгенерировать устройство... - подбирает параметры нового устройства по фильтрам и применяет их к телефону: подробнее.
- Очистить профиль устройства - удаляет параметры, которые подменяет модуль ZennoDroid, и телефон снова показывает приложениям свои. В коде то же делает метод ClearLSPosedSettings.
Модули Magisk.
Окно «Модули Magisk».

В таблице - установленные модули с названием, ID, версией и состоянием. Модуль можно Включить, Выключить, Удалить или Восстановить после удаления. Изменения вступают в силу после перезагрузки, а до неё в столбце Состояние видно, что произойдёт: Заработает после перезагрузки, Будет удалён после перезагрузки.
Кнопка Установить... открывает список из двух пунктов - Установить Busybox и Установить LSPosed. Они ставят модули, которые поставляются вместе с ZennoDroid, - скачивать их отдельно не нужно (см. BusyBox и LSPosed). Для работы с модулями нужны права суперпользователя.
Настройка модуля LSPosed.
Окно «Настройка модуля LSPosed».

- Модуль - имя модуля, то есть имя его пакета, например
com.zennolab.zennodroid. - Включить модуль - включить или выключить модуль.
- Список приложений - отметьте приложения, для которых включить модуль. Наверху списка - уже выбранные приложения и приложение, открытое на экране. Флажок Только запускаемые приложения оставляет в списке только приложения, которые можно открыть.
- Кнопки в строке приложения - скопировать его идентификатор или название, открыть или закрыть приложение и очистить его данные.
Кнопка Применить сразу настраивает модуль на устройстве. Кнопка Добавить в проект добавляет на холст экшен Настройка модуля LSPosed с выбранными значениями - даже если запись выключена.
Генератор устройства.
- Страна, Производитель, Версия Android - фильтры. В каждом можно отметить несколько значений в списке или ввести регулярное выражение.
- Добавить шум к Canvas fingerprint.
- Генерировать GPU - подменять и GPU. GPU Vendor ограничивает производителя GPU, пустое поле - любой.
Кнопка Применить подбирает устройство под фильтры и применяет его к телефону. Кнопка Добавить в проект добавляет на холст экшен Настройки устройства → Сгенерировать устройство с этими фильтрами - тоже независимо от записи. Сгенерированное устройство экшен кладёт в переменную GeneratedDevice.
Другие действия.
- Сделать скриншот - сохраняет снимок экрана устройства в PNG. ZennoDroid спросит, куда сохранить файл, и запомнит папку.
- Закрыть участок - закрывает участок изображения экрана. Используется для тестирования поиска по картинке. Флажок у пункта показывает, закрыт ли участок сейчас.
- Приблизить и Отдалить - приближают и отдаляют изображение в приложении, открытом на устройстве.
- Запись движений мыши - записывает движения мыши по экрану устройства. Пока идёт запись, в окне виден значок записи с подсказкой «Идёт запись движений мыши. Нажмите, чтобы остановить»: нажатие на него останавливает запись.
Устройство.
- Запустить и Остановить - запуск и остановка устройства.
- Перезапустить - завершить текущее подключение и запустить устройство заново, как действие Запуск.
- Перезагрузить - остановить устройство, закрыв все подключения к нему, и перезагрузить телефон. После загрузки телефон сам не запускается - нажмите Запустить.
- Разблокировать экран - будит устройство и убирает экран блокировки. Если он защищён PIN-кодом, паролем или графическим ключом, их вводят вручную.
- Включить adb по Wi-Fi - отладка по Wi-Fi остаётся включённой и после перезагрузки. Нужны права суперпользователя. При включении adb на устройстве перезапускается, и соединение ненадолго прерывается.
- Выключить adb по Wi-Fi - отладка по Wi-Fi остаётся выключенной и после перезагрузки. Нужны права суперпользователя и подключение по USB. При выключении соединение тоже ненадолго прерывается.
- Сменить язык системы... - меняет язык телефона без перезагрузки: подробнее.
Язык системы.
В поле Язык - языки, которые есть в прошивке телефона, с кодом, например ru-RU или en-US. На Android 10 и более ранних версиях прошивка такого списка не даёт, и в поле все языки. Чтобы найти нужный, начните вводить его код или название. При открытии окна в поле стоит текущий язык телефона.
Список языков.

Кнопка Применить сразу меняет язык, а строка над кнопками сообщает, применён ли он. Кнопка Добавить в проект добавляет на холст экшен Настройки устройства → Установка языка с выбранным языком - даже если запись выключена.
На телефонах realme, OPPO и OnePlus вместе с языком меняется и регион телефона - для этого нужны права суперпользователя. В списке у них только языки тех регионов, которые есть в прошивке.
Диагностика.
- Информация об устройстве... - тип устройства (RealPhone), состояние, имя, заголовок, индекс и адрес. Текст можно скопировать кнопкой Скопировать в буфер обмена.
- Очистить logcat - очищает журнал logcat на устройстве.
- Выполнить диагностику... - собирает logcat, dmesg и последний tombstone в один ZIP-архив. Для dmesg и tombstone нужны права суперпользователя.
- Проверить IP-адрес - показывает внешний IP-адрес устройства и, для сравнения, компьютера. Запрос идёт не из приложения, поэтому прокси, включённый только для выбранных приложений, на него может не действовать. Рекомендуется использовать, если для прокси не задан белый список.
- Проверить IP-адрес в Chrome - открывает адрес проверки в Chrome и читает ответ страницы: IP-адрес таким, каким его видят приложения. Потом закрывает вкладку, а если Chrome до проверки не был запущен, то и его.
- Адреса для проверки IP... - сервисы, которые спрашивают обе проверки.
- Безопасный запуск - запуск телефона, на котором не выдаётся root: подробнее.

Кроме самих адресов, проверка IP показывает то, что о них сообщает сервис проверки: страну, регион, город, координаты, провайдера, почтовый индекс и часовой пояс, а иногда и имя хоста.
Результат проверки IP-адреса (данные на снимке скрыты).

Окно «Адреса для проверки IP».
Адреса указываются по одному в строке, http или https. Проверка спрашивает их сверху вниз и показывает первый ответ, где есть IP-адрес: JSON, как у ipinfo.io, или просто текст. Пустой список - ipinfo.io. Кнопка По умолчанию возвращает исходный список.
В коде проекта то же самое делают методы GetExternalIp и GetExternalIpInBrowser.
Безопасный запуск.

Запускает телефон без настройки прокси и метода ввода и без установки APK. Это нужно для телефона, на котором не выдаётся root: экран будет виден, и root можно включить вручную. Пункт доступен, когда устройство остановлено, и предлагает два способа захвата изображения:
- Захват H.264 - изображение передаётся видеопотоком.
- Обновление вручную - для особо тяжёлых случаев: изображение обновляется только кнопкой Обновить экран.
Выполнить команду.
Окно «Выполнить команду».

Пункт Выполнить команду... открывает окно для команд adb shell. Ответ устройства выводится в поле Результат команды, а выполненные команды сохраняются в Истории команд. Щелчок по команде в истории подставляет её в поле, двойной щелчок сразу выполняет, а кнопка Удалить из истории убирает лишнюю.
- С правами суперпользователя - выполнить команду от root.
- Не проверять подключение - не проверять подключение к устройству перед выполнением команды.
Перетаскивание файлов.
Файлы можно перетащить на окно устройства прямо из Проводника. Если все файлы - приложения (.apk, .apks, .apkm, .xapk), откроется окно установки APK, иначе - окно отправки файлов на устройство.
Что записывается в проект.
| Пункт меню | Экшен в проекте |
|---|---|
| Установить APK... | Действия с приложениями → Установка приложения |
| Закрыть все приложения | Действия с приложениями → Закрыть приложение с пустым полем Имя приложения |
| Очистить, Очистить кэш | Действия с приложениями → Очистка приложения |
| Закрыть | Действия с приложениями → Закрыть приложение |
| Удалить | Действия с приложениями → Удаление приложения |
| Сделать бэкап... | Действия с приложениями → Сохранить данные приложения |
| Восстановить из бэкапа... | Действия с приложениями → Восстановить данные приложения |
| Получить APK... | Действия с приложениями → Получить apk приложения |
| Отправить файл..., Получить файл... | Работа с файлами → Отправка или получение файла |
| Очистить профиль устройства | C# код: instance.DroidInstance.Settings.ClearLSPosedSettings(); |
| Сделать скриншот | Обработка изображений: снимок экрана сохраняется в выбранный файл |
| Приблизить, Отдалить | Утилиты → Масштабирование |
| Запустить, Перезапустить | Действия с устройством → Запуск/перезапуск устройства |
| Остановить | Действия с устройством → Остановить устройство |
| Перезагрузить | C# код: instance.DroidInstance.Action.Reboot(); |
| Проверить IP-адрес | C# код: return instance.DroidInstance.Proxy.GetExternalIp();, ответ - в переменной ExternalIp |
| Проверить IP-адрес в Chrome | C# код: return instance.DroidInstance.Proxy.GetExternalIpInBrowser();, ответ - в переменной ExternalIp |
| Выполнить команду... | Утилиты → Консольная команда (ADB Shell), ответ - в переменной AdbResult |
| Настройка модуля... → Добавить в проект | Управление LSPosed → Настройка модуля LSPosed |
| Сгенерировать устройство... → Добавить в проект | Настройки устройства → Сгенерировать устройство, результат - в переменной GeneratedDevice |
| Сменить язык системы... → Добавить в проект | Настройки устройства → Установка языка |
Последние три пункта добавляют экшен кнопкой Добавить в проект в своём окне, даже если запись выключена. Остальные записываются, только когда включена Запись.
Контекстное меню.
Кликните правой кнопкой мыши по элементу на экране устройства, и откроется контекстное меню. Набор пунктов зависит от элемента. Например, так меню выглядит на поле ввода:

Пункты для полей ввода:
- Очистить текст.
Очищает поле ввода.
Если включена запись, то в проект добавится экшен Эмуляция клавиатуры с таким содержимым:{AndroidKeys.CLEAR}. - Вставить текст из буфера обмена Windows.
Вставляет в поле текст из буфера обмена компьютера. Если буфер пуст, ничего не происходит.
Если включена запись, то в проект добавится экшен Эмуляция клавиатуры с этим текстом. Если перед ним в проекте тоже стоит эмуляция клавиатуры, текст допишется в неё: например, Очистить текст и затем Вставить текст из буфера обмена Windows дадут один экшен с содержимым{AndroidKeys.CLEAR}текст. - Установить значение из профиля.
Вставляет в поле значение из Профиля проекта.
Если включена запись, то в проект добавится экшен Установить значение с макросом из выбранного профиля. - Установить значение из переменной.
Вставляет в поле значение переменной проекта. Пункт появляется, только если в проекте есть хотя бы одна переменная.
Если включена запись, то в проект добавится экшен Установить значение с макросом выбранной переменной.
Пункты для любого элемента:
- Исследовать элемент.
Вызывает окно Свойства элемента для более детального изучения. Также выбранный элемент будет выделен в окне Дерево элементов. - Следовать за курсором.
Пока пункт включён, элемент под курсором подсвечивается, а его свойства попадают в окно Свойства элемента. Чтобы выключить подсветку, выберите пункт ещё раз.
Пример.

- В конструктор действий.
Отправляет элемент в Конструктор действий. - Поиск XPath.
Открывает Конструктор действий в режиме xPath: в нём уже будет XPath выбранного элемента, а сам элемент обводится на экране устройства.
Результат «Поиска XPath» в Конструкторе действий.

- Это каптча!.
Отмечает элемент как капчу и сразу добавляет в проект экшен её распознавания - даже если запись выключена. Ответ экшен кладёт в новую переменнуюRecognitionResultс номером, напримерRecognitionResult0. По умолчанию капча вводится вручную: откроется окно с картинкой элемента, где нужно набрать ответ и нажать Enter. Модуль распознавания можно сменить в самом экшене (например, на CapMonster.Cloud).
Окно ручного ввода капчи.

- Приклеить к каптче.
Появляется, когда в проекте уже есть капча, отмеченная пунктом Это каптча!. Добавляет к ней ещё одну картинку: несколько отдельных картинок соединяются в одну и распознаются вместе. - Поле для результата распознавания каптчи.
Тоже появляется, только когда в проекте есть капча. Вводит ответ на капчу в выбранный элемент и, если включена Запись, добавляет экшен Установить значение с переменной ответа. - Создать проверку наличия текста.
Открывает окно Проверка наличия текста с текстом элемента. Кнопка OK добавляет в проект экшен проверки этого текста - даже если запись выключена. Результат проверки экшен кладёт в новую переменную.
- Поиск по картинке.
Открывает окно поиска по картинке со снимком экрана: в нём выделяется картинка и задаются точность совпадения, цветовой режим и область поиска. Если картинка нашлась, нажмите Да, а затем Добавить в проект: в проект добавится экшен клика по картинке. Если запись выключена, ZennoDroid спросит, добавить ли экшен всё равно. Подробнее - в статье Поиск по картинке.
Окно «Поиск по картинке».

- Поиск по пикселю.
Открывает окно поиска по цвету пикселя, уже с цветом пикселя под курсором. Здесь задаются допустимое отклонение цвета и область поиска, а найденный пиксель обводится на экране. Если пиксель нашёлся, нажмите Да: появятся настройки касания, смещение и кнопки Тестировать и Добавить в проект. Экшен клика по пикселю добавляется в проект, даже если запись выключена.
Окно «Поиск по пикселю».
- Получить цвет пикселя.
Копирует цвет пикселя под курсором в буфер обмена в виде#RRGGBB. В проект ничего не добавляется.