Подготовка окружения

Примечание

Данный раздел относится к документации по ручному развёртыванию и предназначен для случаев, когда необходимо встроить серверную часть в прошивку ROM или самостоятельно запустить службу FIRERPA. Если вы уже запустили серверную часть через приложение и у вас нет соответствующих потребностей, этот раздел можно пропустить.

В этой статье описаны подготовительные работы с устройством, системой и сетью, которые необходимо выполнить перед установкой и запуском FIRERPA. FIRERPA поддерживает достаточно много типов устройств и архитектур; ниже перечислены распространённые устройства и настройки окружения, которые следует выполнить заранее. Вы можете выбрать подходящий способ в зависимости от фактических условий. FIRERPA в целом делится на клиентскую и серверную части: клиентская часть — это в основном библиотеки и интерфейсы Python, а серверная часть — служба, работающая на целевом телефоне. Вы можете установить библиотеки Python на компьютер для управления телефоном; однако если вам нужно управлять устройством через Python, на телефоне обязательно должна быть установлена и запущена серверная часть Android.

Базовые требования

Наиболее подходящая среда для работы FIRERPA — устройство Android или эмулятор с объёмом оперативной памяти более 4 ГБ и свободным хранилищем более 4 ГБ. Если у вас нет физического Android-телефона, можно использовать последние версии эмуляторов Nox, LDPlayer или AVD. Для использования всех возможностей FIRERPA требуется наличие root-прав на устройстве. Если устройство не имеет root-прав, его по-прежнему можно запускать с правами adb shell через режим разработчика, но некоторые привилегированные функции будут ограничены или недоступны.

Системные настройки

Обычно на телефоне также необходимо выполнить следующие настройки. Эти настройки не являются обязательными, но для успешного запуска с первого раза рекомендуется выполнить их при наличии времени.

Проверка часового пояса и времени

Откройте системные настройки, найдите раздел «Дата и время» и проверьте, установлен ли автоматически китайский стандартный часовой пояс или часовой пояс вашего региона, а также是否正确но ли установлено время или находится ли оно в допустимых пределах. Если нет, отключите использовать часовой пояс, предоставляемый сетью и сетевое время, затем вручную установите часовой пояс и время, соответствующие вашему текущему местоположению.

Отключение специальных возможностей

Откройте системные настройки, найдите раздел «Специальные возможности» (в разделе «Система» или «Дополнительные настройки»), отключите или удалите все приложения, использующие функции специальных возможностей (например, TalkBack, Auto.js и т. п.).

Примечание

Функции специальных возможностей могут вызывать конфликты. Проверяйте этот пункт окружения только в том случае, если вам не удаётся нормально использовать удалённый рабочий стол FIRERPA или соответствующие интерфейсы.

Настройка сети

Сетевые условия физических устройств, облачных телефонов, эмуляторов и других устройств различаются. Вам необходимо выполнить соответствующие настройки в зависимости от фактической ситуации, иначе после установки доступ к службе может быть невозможен.

Для физического устройства достаточно убедиться, что компьютер и телефон находятся в одной сети. Для эмуляторов сеть созданного по умолчанию эмулятора обычно не связана с сетью локального компьютера. Если вы используете виртуальную машину Android-x86 на базе VMware, в настройках виртуальной машины необходимо установить сетевой режим «Bridge». Для эмуляторов LDPlayer, Nox и подобных необходимо в настройках их инстансов установить драйвер по подсказке, включить режим моста и перезагрузить систему. Для виртуальных устройств Android Studio такой настройки не существует, поэтому для подключения к FIRERPA внутри AVD необходимо выполнить adb forward tcp:65000 tcp:65000, а затем использовать localhost для подключения.

Примечание

Для проброшенных портов или портов службы, изначально привязанных к loopback-адресу, рекомендуется использовать localhost вместо 127.0.0.1, поскольку часть наших инструментов (например, перехват трафика man-in-the-middle) определяет по localhost, используется ли подключение через USB.

Прочие настройки

WSA (Windows Subsystem for Android)

Если используется WSA (Windows Subsystem for Android), убедитесь, что версия WSA не ниже 2210.40000. Затем откройте настройки WSA -> Subsystem Resources -> выберите Continuous, отключите Advanced Networking. Далее выберите Developer, включите Developer mode и разверните вкладку, отметьте «Support single machine UI automation», после чего перезапустите подсистему WSA.

AVD (Android Studio Virtual Device)

Если используется AVD (Android Studio Virtual Device), сначала увеличьте объём встроенного хранилища и оперативной памяти.

Откройте Virtual Device Manager в Android Studio и создайте новую виртуальную машину. Затем найдите соответствующую виртуальную машину и нажмите кнопку редактирования позади неё (значок карандаша), нажмите Show Advanced Settings, найдите Storage -> Internal Storage и задайте не менее 2 ГБ, а также установите размер RAM не менее 4 ГБ.

Redroid (android in docker)

Внимание

Следующий метод может не подходить для других дистрибутивов Linux.

Если используется Redroid (android in docker), на примере официально рекомендуемой Ubuntu 20.04 сначала установите модули linux-modules-extra.

apt install linux-modules-extra-`uname -r`

Отредактируйте файл /etc/modules, скопируйте приведённые ниже имена и вставьте их в конец файла, затем перезагрузите хост-систему.

# redroid modules
mac80211_hwsim

binder_linux
ashmem_linux

Наконец, запустите контейнер следующей командой. Параметр redroid_gpu_mode и другие связанные параметры измените в соответствии с фактической ситуацией.

Внимание

Внимание: следующая команда отличается от официальной инструкции. Обязательно используйте команду в указанном виде.

docker run -itd --rm --privileged --pull always -v /lib/modules:/lib/modules:ro -v ~/redroid:/data -p 127.0.0.1:5555:5555 -p 127.0.0.1:65001:65000 redroid/redroid:12.0.0-latest androidboot.redroid_gpu_mode=guest

В приведённой выше команде порт 65000 контейнера пробрасывается на порт 65001 локальной машины, потому что некоторым инструментам требуется временно привязываться к порту 65000 на локальной машине. Чтобы избежать конфликта, используется порт 65001.

Примечание

В запущенном приведённой выше командой Android-контейнере redroid из-за проброса портов порт 65000 внутри системы отображается на порт 65001 хост-машины, поэтому на хост-машине доступ выполняется через http://127.0.0.1:65001.