Приветствую. Тема запуска приложений с Android на других операционных системах или устройствах, пожалуй, будет актуальна всегда. Даже Microsoft обещает уже в этом году добавить возможность запуска Андроидового софта в Windows 10. Ну а я в свою очередь расскажу об одном из способов запуска оного в десктопных дистрибутивах Linux - с помощью проекта Anbox.
Что такое Anbox? Anbox (Android in a Box) представляет из себя урезанную версию Android, запускаемую в изолированном контейнере LXC (Linux Containers), связанную с хост-системой посредством двух драйверов, добавленных в ванильное ядро Linux - binderfs и ashmem. Первый является реализацией механизма межпроцессного взаимодействия, применяемого в Android для обеспечения связи между приложениями и системными процессами (аналог в десктопном Linux - D-Bus). Второй является реализацией механизма разделяемой памяти, с помощью которой процессы внутри системы могут использовать общие ресурсы. Это что-то вроде облачного хранилища, в котором несколько пользователей хранят свои файлы и могут пользоваться файлами других людей. Работа Anbox реализована с помощью двух программ - менеджера контейнеров, который берёт на себя всю низкоуровневую работу по запуску контейнера с Android и поддержания его стабильной работы, и менеджера сеансов, который обеспечивает взаимодействие Android с хост окружением вашего дистрибутива, интеграцию окон приложений с вашим оконным менеджером, работу сети и так далее. Схематически это выглядит так:
Несмотря на то, что автор Anbox ушёл делать его проприетарную версию для Ubuntu Cloud, сообщество продолжает поддержку и развитие оригинального Anbox. Исходный код доступен здесь.
Установка
Установку покажу на примере Debian/Ubuntu и производных. Установить Anbox можно двумя путями: используя штатный репозиторий дистрибутива, или с помощью Snap.
Первый способ ничем не отличается от обычной установки программ с использованием менеджера приложений или терминала. В случае терминала достаточно выполнить команду:
sudo apt install anbox
Второй способ более универсален и является официальным. Для его
установки вам потребуется установить пакетный менеджер Snap (если вы не
пользуетесь Ubuntu) и затем установить Anbox:
sudo apt install snapd
snap install --devmode --edge anbox
Режим --devmode используется по причине того, что Anbox всё ещё в стадии активной разработки, и пока не поддерживает все возможности по изоляции приложений, предоставляемые Snap. Как побочный эффект - не будет работать автоматическое обновление, поэтому для обновления Anbox, установленного через Snap, потребуется использовать команду:
snap refresh --edge --devmode anboxНо это половина дела. Далее нам необходимо скачать образ операционной системы Android, который будет использоваться для запуска приложений этой ОС. Последняя на данный момент версия образа - 7.1. Его нужно разместить в каталоге /var/lib/anbox под именем android.img:
wget https://build.anbox.io/android-images/2018/07/19/android_amd64.img
sudo mv android_amd64.img /var/lib/anbox/android.img
Теперь нужно немного подправить один из сервисов systemd, чтобы корректно работал менеджер приложений Anbox:
Далее для редактирования файлов я буду использовать консольный текстовый редактор nano. Сохранение файла в неё осуществляется комбинацией Ctrl+O, Enter, а выход из редактора - Ctrl+X. Вы можете использовать любой на своё усмотрение.
sudo nano /usr/lib/systemd/user/anbox-session-manager.service
Перед строкой "ExecStart" поместите строку Environment="DISPLAY=:0", чтобы выглядело так:
[Unit]
Description=Anbox Session Manager
Documentation=man:anbox(1)
[Service]
Environment="DISPLAY=:0"
ExecStart=/usr/bin/anbox session-manager
[Install]
WantedBy=default.target
Запускаем и активируем необходимые сервисы:
systemctl start anbox-container-manager.service
systemctl --user enable anbox-session-manager.service
systemctl --user start anbox-session-manager.service
Теперь желательно перезагрузиться. Проверяем статус сервисов Anbox:
В меню приложений находим Anbox Launcher и запускаем:
Установка Google Play и поддержки приложений ARM
В Anbox возможно устанавливать приложения двумя способами: посредством ADB, устанавливая скачанный apk-файл, либо традиционно через Play Market. Также возможно активировать поддержку запуска приложений для архитектуры ARM, использую библиотеку libhoudini, применяемую в Android x86. Упростить всё это поможет вот этот скрипт, однако для его корректной работы нужно провести одну манипуляцию. А именно создать каталог для размещения дополнительного конфига systemd, который переопределит параметры запуска Anbox:
sudo mkdir -p /etc/systemd/system/anbox-container-manager.service.d
sudo touch /etc/systemd/system/anbox-container-manager.service.d/override.conf
sudo apt install wget curl lzip tar unzip squashfs-tools
wget https://raw.githubusercontent.com/geeks-r-us/anbox-playstore-installer/master/install-playstore.sh
chmod +x install-playstore.sh
Теперь запускаем скрипт от имени администратора и ждём окончания установки:
sudo ./install-playstore.sh
После этого открываем Anbox Launcher, переходим в настройки (Settings -> Apps -> Google Play Services -> Permissions) и даём разрешения для Google Play Services:
Далее запускаем Play Market, входим под своей учётной записью и пробуем установить требуемые программы:
Помните: многие программы определяют Anbox в лучшем случае как кастомный ROM, поэтому стабильная работа не гарантируется. В комментариях напишите, какой софт установили вы и насколько хорошо он работал. До встречи!
Комментариев нет:
Отправить комментарий