04.03.2024

Запуск в Linux-дистрибутивах Android-окружения Aliendalvik из Sailfish

Джонас Дресслер (Jonas Dressler) из проекта GNOME, развивающий редакцию GNOME Shell для мобильных устройств, опубликовал наработки, позволяющие запустить окружение Aliendalvik (AppSupport) в обычных дистрибутивах Linux. Aliendalvik представляет собой прослойку для мобильной платформы Sailfish, обеспечивающую запуск приложений, написанных для платформы Android. В ходе проведение обратного инжинирига Aliendalvik подготовлены патчи к композитному серверу Мutter, скрипты и обвязки над звуковым сервером и системой ввода, необходимые для запуска Aliendalvik вне окружения платформы Sailfish.

Запуск Aliendalvik продемонстрирован на смартфонах Pinephone Pro и Oneplus 6, на которые был установлен в Arch Linux с оболочкой GNOME Mobile. Отмечается, что для взаимодействия Aliendalvik c пользовательским окружением Sailfish используются штатные API Freedesktop, например, уведомления передаются через DBus-интерфейс org.freedesktop.Notification, а для управления музыкальными проигрывателями задействован протокол MPRIS. Каждое запущенное Android-приложение отображается с использованием отдельной Wayland-поверхности в своём окне, а для организации ввода применялся Wayland-протокол «text-input«.

Окружение Aliendalvik запускается при помощи инструментов контейнерной изоляции LXC, а компоненты для интеграции с хост-системой собраны для архитектуры ARM64 и написаны с использованием Qt.
В отличие от похожего проекта Waydroid, также запускающего Android-окружение в контейнере, в Aliendalvik обеспечена более тесная интеграция с хост-системой, например, Android-приложения открываются в обычных окнах, поддерживается синхронизация адресной книги и используется экранная клавиатура Sailfish.

Системное окружение Sailfish построено на основе проекта Mer (с апреля 2019 года развивается как составная часть Sailfish) и пакетов Mer-дистрибутива Nemo. В окружении используются systemd, DBus, RPM, PackageKit, PulseAudio, BlueZ, Wayland и Qt. Композитный сервер lipstick построен на основе QtCompositor. Для изоляции приложений применяется Firejail. Для управления сетевыми соединениями задействован ConnMan, а в качестве телефонного стека — oFono.

Источник: https://www.opennet.ru/opennews/art.shtml?num=60349 Источник.