Anbox (Русский)
Anbox - это контейнерное ПО для запуска Android на дистрибутивах GNU/Linux.
Установка
Вместо этого следуйте инструкции ниже.
1. Установите (или соберите) необходимое ядро:
Для запуска Anbox необходимо ядро, в котором активированы определенные настройки.
Есть два варианта:
2. Включите binder
и ashmem
:
Запустите с правами суперпользователя:
$ modprobe binder_linux ashmem_linux
3. Установите Anbox:
Установите anbox-gitAUR.
Установите один из этих образов:
- anbox-image-houdiniAUR (включает houdini)
- anbox-image-houdini-rootedAUR
- anbox-image-gappsAUR (включает Google's Apps)
- anbox-image-gapps-rootedAUR
Запустите/включите службу anbox-container-manager.service
.
Поэтому сперва следует установить Android-образ, а затем другие пакеты Anbox.
Тут есть решение часто встречаемой ошибкиlogger.cpp
.Старые ядра
На старых версиях ядра (до 5.7) DKMS-модули все еще работают.
1. Установите linux-lts и linux-lts-headers.
anbox-modules-dkms-git
был удален из AUR, поэтому нужно собрать их вручную. 2. Соберите и установите модули DKMS вручную из репозитория GitHub: [3].
3. Установите anbox-gitAUR.
4. Установите один из этих образов:
- anbox-image-houdiniAUR (включает houdini)
- anbox-image-houdini-rootedAUR
- anbox-image-gappsAUR (включает Google's Apps)
- anbox-image-gapps-rootedAUR
5. Загрузите модули ядра вручную (опционально):
Можете загрузить DKMS-модули вручную, без перезагрузки компьютера:
$ modprobe ashmem_linux binder_linux
6. Включите следующие службы:
anbox-container-manager.service
Сеть
systemd-networkd
Пакет anbox-gitAUR использует systemd-networkd
чтобы иметь доступ к сети в Anbox.
Поэтому нужно включить systemd-networkd
или запустить systemd-networkd
перед запуском anbox-container-manager.service
.
Скрипт anbox-bridge
Альтернативно можете использовать скрипт anbox-bridge из https://raw.githubusercontent.com/anbox/anbox/master/scripts/anbox-bridge.sh
Нужно запускать anbox-bridge
каждый раз перед запуском anbox-container-manager.service
чтобы добиться работы сети в Anbox.
Простейшим решением в таком случае является создание файла enable-anbox-bridge.conf
.
/etc/systemd/system/anbox-container-manager.service.d/enable-anbox-bridge.conf
[Service] ExecStartPre=/usr/bin/anbox-bridge start ExecStopPost=/usr/bin/anbox-bridge stop
Использование
После установки вы сможете запускать Android приложения в лаунчере рабочего стола из категории Другое.
Если вы хотите использовать adb для отладки, установите android-tools
$ adb shell
Установка приложений через adb
Если не был выбран образ с houdini, Anbox не будет поддерживает ARM приложения. Поэтому приложения должны иметь архитектуру x86_64.
Чтобы установить /путь/к/приложению.apk
$ adb install /путь/к/приложению.apk
Получить список всех установленных приложений:
$ adb shell pm list packages
Обратите внимание, что вывод будет аналогичен таковому от package:app.name
, где app.name
отличается от отображаемого в контейнере anbox.
чтобы удалить app.name
$ adb uninstall app.name
Если app.name
- системное приложение:
$ adb uninstall --user 0 app.name
Установка приложений через магазины приложений
Приложения можно легко установить через магазины приложений. В anbox-image-gappsAUR включен PlayStore.
Советы и рекомендации
Пересборка ядра с необходимыми настройками
Если вы не хотите использовать ядро linux-zen, можно пересобрать ядро:
1. Постройте ядро с этими настройками:
config
CONFIG_ASHMEM=y CONFIG_ANDROID=y CONFIG_ANDROID_BINDER_IPC=y CONFIG_ANDROID_BINDERFS=y CONFIG_ANDROID_BINDER_DEVICES="binder,hwbinder,vndbinder"
2. Перезагрузитесь в новое ядро.
3. Активируйте binder:
# mkdir /dev/binderfs # mount -t binder binder /dev/binderfs
Решение проблем
Если возникнут проблемы, посмотрите официальный Трекер Проблем: https://github.com/anbox/anbox/issues
Старые процессоры
Некоторые старые процессоры не поддерживают SSE 4.1/4.2 и SSSE 3, необходимый для Anbox, поэтому на таких процессорах,скорее всего, Anbox работать не будет. [4].
Ошибка SecureBoot
Если появляется ошибка:
modprobe: ERROR: could not insert 'ashmem_linux': Operation not permitted
Скорее всего, Secure Boot блокирует модуль. Можно либо отключить SecureBoot либо подписать модуль ashmem самому.
Больше информации про это можно найти здесь: [5].