Anbox (Русский)

From ArchWiki
Jump to navigation Jump to search

Anbox - это контейнерное ПО для запуска Android на дистрибутивах GNU/Linux.

Установка

Примечание: Модули DKMS больше не работают с версиями ядра Linux 5.7 и выше. (Подробнее об этом: [1])

Вместо этого следуйте инструкции ниже.

Инструкция для старых ядер: Старые ядра.

1. Установите (или соберите) необходимое ядро:

Для запуска Anbox необходимо ядро, в котором активированы определенные настройки.

Есть два варианта:

  • Установить ядро linux-zen (которое теперь включает все необходимые настройки [2]), или

2. Включите binder и ashmem:

Запустите с правами суперпользователя:

$ modprobe binder_linux ashmem_linux

3. Установите Anbox:

Примечание: Похоже,что PKGBUILD для anbox-git все еще включает пакет anbox-modules-dkms-git. Поэтому измените файл PKGBUILD, соберите и установите только пакет anbox-git.

Установите anbox-gitAUR.

Установите один из этих образов:

Запустите или Включите службу:

  • anbox-container-manager.service
Примечание: Были случаи конфликтующих пакетов при установке anbox-gitAUR.

Поэтому сперва следует установить Android-образ, а затем другие пакеты Anbox.

Тут есть решение часто встречаемой ошибки logger.cpp.

Старые ядра

Примечание: Модули DKMS устарели и потому могут перестать работать в будущих версиях Anbox, поэтому рекомендуется пользоваться методом выше.

На старых версиях ядра (до 5.7) DKMS-модули все еще работают.

1. Установите linux-lts и linux-lts-headers.

Примечание: Пакет модулей DKMS (anbox-modules-dkms-gitAUR[ссылка недействительна: package not found]) был удален из AUR, поэтому нужно собрать их вручную.

2. Соберите и установите модули DKMS вручную из репозитория GitHub: [3].

3. Установите anbox-gitAUR.

4. Установите один из этих образов:

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:

Примечание: Этот шаг может быть необязателен. Обсуждение в Talk:Anbox.
# 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].

Смотрите также