Как запускать андроид приложения на linux. Как запустить приложения и игры для Android в Linux

Сегодня речь пойдет о запуске Android приложений на Linux системе без использования эмулятора.

Anbox

  • Что такое Anbox?
  • Менеджер приложений
  • Чем отличается от Shashlik
  • Как работает Anbox

Что такое Anbox?

Анбокс - это что-то типа вайн, только для запуска андроид-приложений. Анбокс использует технологию контейнеризации, что позволяет запускать приложения на железе и ядре хоста с производительностью сравнимой с нативной. Для запуска приложений используются контейнеры LXC и (пока что) модули ядра, собираемые через DKMS.

От других эмуляторов отличается хорошей производительностью, опенсурсностью (ЖПЛв3), наличием под онтопиком и неплохой интеграцией с хостом. Ну как, интеграция с хостом определённо превосходит любые решения с ВМ и почти так же хороша, как в ARC.

Сразу после запуска вы увидите на экране простейший «менеджер приложений», написанный специально для Anbox. Приложений тут кот наплакал: стандартные галерея, календарь, настройки и прочее, а вот маркета нет. И поэтому первое, о чем вы спросите: а как ставить приложения на Anbox?

Менеджер приложений в Anbox

И вот здесь начинается интересное. Разработчики Анбох не имеют права включать в поставку своего неэмулятора маркет и любой другой софт Google, включая сервисы Google, пока их «устройство» не пройдет сертификацию. Устройство пройти сертификацию не может - маркета не будет.

Но! В Anbox по умолчанию активирован режим отладки с помощью ADB (который в стандартном Android включается в настройках для разработчиков, куда еще надо добраться), поэтому установить приложение можно с его помощью. Установить сам ADB можно так:

$ sudo apt-get install android-sdk-platform-tools // Ubuntu $ sudo pacman -S android-tools // Arch Linux

А теперь самое интересное: тебе надо найти и скачать пакет APK нужного приложения. Для этого можно использовать сайт apkpure. Далее остается всего лишь выполнить такую команду (пример для FX File Explorer):

$ adb install ~/Downloads/File Explorer_v5.1.1.0_apkpure.com.apk FX File Explorer

Готово! Ставь приложения, развлекайся, до встречи. Шучу, на самом деле есть множество подводных камней. Например, сразу после установки Anbox я решил протестировать, как в нем работает Opera Mini, тот самый браузер, который умеет быстро отображать странички, даже если интернет до тебя доходит с помощью голубиной почты. Ведь для десктопа его нет.

В результате на экране появилось вот что:

$ adb install ~/Downloads/Opera Mini fast web browser_v24.0.2254.115689_apkpure.com.apk Failed to install /home/j1m/Downloads/Opera Mini fast web browser_v24.0.2254.115689_apkpure.com.apk: Failure

Объяснение этому простое: большая часть кода Opera Mini написана на C++, который скомпилирован в бинарник для платформы ARM. А так как в нашей машине процессор архитектуры x86_64, Android заботливо прибил приложение еще на этапе установки, чтобы мы не мучились, силясь понять, почему оно не работает.

На самом деле в маркете полно подобных приложений, и с несовместимостями архитектуры ты будешь встречаться довольно-таки часто.


Вторая интересная особенность запуска приложений в отдельных десктопных окнах: далеко не каждое приложение готово смириться с тем, что сейчас его личико будут жестко сжимать или растягивать. Большинство современных приложений в этом случае поведут себя корректно - Google позаботилась об этом, когда готовилась к реализации поддержки плавающих окон в Android 7.0. А вот со старым софтом могут возникнуть сложности, хотя обычно все заканчивается окном фиксированного размера.

Ну и третье. Анбокс, выражаясь языком Шекспира, - это alpha software, то есть ребята нам как бы говорят: все будет плохо и нестабильно, а о таких вещах, как поддержка определения координат, камера и микрофон, ты можешь забыть. Более того, в некоторых случаях ты можешь забыть и об интернете, а session manager будет время от времени падать, и его придется перезапускать.


Зато! Анбокс корректно определяет текущий уровень аккумулятора, размер оперативной памяти и даже жесткого диска (точнее, раздела /home). Да и в целом работает быстро и не вызывает желания его снести. Количество пожираемой оперативки - всего 448 Мбайт при запущенном менеджере приложений.
Приложения видят весь диск

FAQ Anbox

Как нажать кнопку «Назад» и мотать страницы?

Кнопка «Назад» эмулируется с помощью Esc. Клавиатуру также можно использовать для навигации по приложению (Tab и стрелки). Промотка либо колесиком, либо удержанием левой кнопки мыши и движением вниз-вверх.

Можно ли использовать Anbox для запуска проектов в Android Studio?

Да! Причем никаких дополнительных шагов для этого предпринимать не надо. Достаточно выбрать устройство с именем вида emulator-6663 при запуске проекта.

Можно ли получить доступ к файловой системе работающего Android из Linux?

Да, она находится в каталоге /var/lib/anbox/rootfs, но доступна только для чтения. Зато ты можешь просматривать содержимое приватных каталогов приложений (data/data).

Можно ли установить магазин приложений?

Теоретическая возможность установить Google Play Store существует. Для этого необходимо разобрать образ файловой системы Android и интегрировать в него GApps. Однако гораздо проще установить Yandex.Store или любой другой сторонний маркет. Плюс активировать установку из сторонних источников: Settings → Security → Unknown sources.

Как разобрать образ Android Anbox?

Очень просто:
$ sudo apt-get install squashfs-tools // Ubuntu $ sudo pacman -S squashfs-tools // Arch Linux $ unsquashfs -f -d /куда/распаковывать /var/lib/anbox/android.img

А можно ли использовать другой образ Android, например CyanogenMod?

Нет. Есть две причины, почему это сделать нельзя. Первая - это должна быть сборка Android для x86_64. Вторая - эта сборка должна включать в себя специфические модификации Anbox.

Чем Anbox отличается от Shashlik

Shashlik запускает каждое приложение в эмуляторе. Другими словами, когда ты кликаешь по иконке приложения, запускается эмулятор, в нем - урезанная среда Android, а уже потом стартует приложение. Anbox гораздо более легковесный и производительный.

Как работает Anbox

В основе Anbox лежит очень простая идея: если Android - это виртуальная машина, работающая поверх ядра Linux, то почему бы не попробовать запустить приложения Android в окружении обычного дистрибутива Linux. Это очевидная идея, и она приходила в голову многим разработчикам с тех пор, как появился порт Android на x86. Некоторые программисты попытались реализовать ее через размещение окружения Android в chroot, но дальше полурабочих концептов дело не доходило (пример: ).

У разработчиков Anbox ушло полтора года, чтобы довести проект до конца. Они смогли добиться интеграции приложений Android в десктоп Linux, обеспечить практически полную совместимость, а главное - сделать так, чтобы все это работало быстро, без сбоев и не требовало множества шагов для настройки.

Само окружение Android (на базе свежайшего Android 7.1.1, кстати) здесь замкнуто в песочницу, контролируемую с помощью технологии пространств имен (namespaces), той самой, что лежит в основе Docker. Пространства имен полностью отрезают окружение от среды дистрибутива Linux, а вся работа с оборудованием идет через демон anboxd. Для вывода картинки 3D-приложений используется специальный транслятор OpenGL ES → OpenGL, позаимствованный из официального эмулятора Android.

Ядро Linux также пришлось модифицировать, а точнее добавить в комплект Anbox модули с реализацией binder и ashmem, с помощью которых в Android взаимодействуют компоненты системы (IPC). Перед запуском Анбокс загружает модули в ядро и добавляет правило udev для установки корректных прав доступа к устройствaм /dev/binder и /dev/ashmem.

Каждое приложение в своем собственном окне Anbox размещает с помощью модифицированного композитного менеджера hwcomposer, который Android использует для наложения графических слоев. Hwcomposer запрашивает все слои каждого приложения и отдает их Anbox, который затем формирует индивидуальные окна для отдельно взятых приложений.

Все эти технические решения позволяют сделать Анбокс действительно быстрым, удобным в использовании и эффективным в плане расходования ресурсов «эмулятором». В том числе в 3D-приложениях.

Anbox состоит из двух компонентов: container manager и session manager.

Container manager управляет песочницами с работающим внутри окружением Android. Его задача - корректно запустить систему Android, поддерживать ее работу и корректно завершить.

Session manager , в свою очередь, отвечает за коммуникацию Android внутри песочницы и с основной системой Linux. Его задача - отвечать на запросы запуска приложений и распределять их по разным окнам.

В целом запуск приложения Android с помощью Anbox выглядит так:

  1. В ядро загружаются модули binder и ashmem.
  2. Запускается container manager, который разворачивает песочницу с Android внутри.
  3. Запускается session manager, он запускает среду Android.
  4. Юзер отдает команду на запуск приложения, которую принимает и обрабатывает session manager.
  5. Session manager ожидает команды.

Шаги 1–4 подготавливают Anbox и запускаются один раз, обычно при загрузке системы.

Такая архитектура позволяет сделать запуск приложений практически моментальным за счет небольшого (порядка 400 Мбайт) оверхеда по памяти в режиме простоя.


Выводы

Вне всяких сомнений, Anbox заслуживает внимания. Да, у него есть проблемы с совместимостью, он не умеет работать с твоей камерой и микрофоном, он падает. Но это альфа-версия, и для альфы она работает прекрасно.

Также, не так давно один разработчик нашел способ, как запустить Android приложения на ПК в браузере Chrome.

Скрипт chromeos-apk Влада Филипова, вместе с расширением ARChon Android Runtime сделали возможным запуск Android приложений в браузере Chrome на Windows, Mac и Linux ПК.


Приложения работают не очень гладко через расширение. А уж о попытках запустить Dead Trigger 2 или какие-либо другие требовательные игры следует вовсе забыть.

Также, поскольку это неофициальный репак официального расширения и запускается он вне системы Chrome OS, системный функционал (например веб камера, динамики и т.д.) будет не доступен.

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

Как запустить Android приложения на Linux

Для того, чтобы вы смогли запустить Android приложения на Linux через Chrome, вам естественно понадобится сам браузер Chrome. Версия должна быть 37 или выше.

Уже установлена нужная версия Chrome? Тогда вы можете установить версию для разработчиков через командную строку:

sudo apt-get install google-chrome-unstable

Теперь вам необходимо установить пользовательское расширение - не имеющую официального статуса и непризнанную компанией Google или Chromium - Android Runtime, созданное Владом Филипповым. Оно сильно отличается от официальной версии, главным образом тем, что его можно устанавливать в версиях браузера для ПК.

Скачать ARChon v1.1 (для 32bit Chrome) с GitHub Скачать ARChon v1.1 (для 64bit Chrome) с GitHub

Когда расширение скачается, вам нужно будет разархивировать содержимое в папку ~/Home.

Теперь устанавливаем ARChon. Откройте Google Chrome и зайдите в меню. Выберите раздел Инструменты > Расширения и, сверху, поставьте галочку ‘Включить режим разработчика’.

И в конце, нажмите кнопку ‘загрузить нераспакованное расширение’ и выберите папку, которую вы заранее поместили в директорию ~/Home.


Само расширение расширение само по себе не сможет сделать всю работу само, поэтому вам придется наладить совместимость Android приложения с расширением.

Существует несколько способов, как это можно сделать: вручную, на вашем ПК, или с помощью бесплатного Android приложения. Мы расскажем как сделать это вручную, но КСТАТИ! Существует также программа для ПК под названием ‘Twerk’, а также Archon Packager tool для мобильных устройств.

Чтобы сконвертировать APK фаилы вручную - то что делать совсем не обязательно, если вы воспользуетесь одним из приложений, упомянутых выше - вам нужно будет установить ‘chromeos-apk’ через командую строку утилиты JavaScript. Все это можно сделать в менеджере Node Packaged Modules (npm).

Сначала выполните:

sudo apt-get install npm nodejs nodejs-legacy

Пользуетесь Ubuntu 64 ? Тогда выполите еще и это:

sudo apt-get install lib32stdc++6

А теперь выполните команду, чтобы установить сам скрипт:

npm install -g chromeos-apk


Ну вот и все. Отправляйтесь на сайт Google и найдите APK приложения, которое хотите опробовать, но помните, что не все Android приложения запустятся, а те что запустятся могут быть багнутыми или лагать.

Как установить на Андроид на Линукс? Этот вопрос возник у меня после безуспешных попыток настроить . Нет, всё работало, за исключением одного: сети и интернета. Сколько я не читал мануалов по пробросу портов, у меня так ничего и не вышло. На Android 2.3 сеть работает сразу, а на Android 4 нет.И вот я решил пойти другим путём и уставить эмулятор Android на Linux. Как установить Android на Линукс?

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

Для начала идём на сайт и скачиваем нужный нам пакет с Android и всё, что к нему прилагается. Я скачал версию под Linux , конечно.


Пока всё качается, установим в Linux дополнительные компоненты для запуска Android SDK - Ява машину, через которую и будет всё работать. Открываем терминал и запускаем команду:

Sudo apt-get install openjdk-7-jre

Cd android-sdk-linux

После этого выполняем команду, как написано в мануале, который был в архиве:

Tools/android update sdk --no-ui

После этого программа соединяется с сервисом Google и начинает закачку и установку нужных ей файлов. Качалось ОЧЕНЬ долго, так как загружается более 2 гигабайтов разных пакетов для разработчиков. Возможно этот шаг можно было пропустить и сразу запустить SDK manager. Для этого перейдём при помощи команды cd в каталог tools:

Cd android-sdk-linux/tools

После этого запускаем команду:

./android

В итоге запускается программа:


Получается, что командой tools/android update sdk --no-ui я установил все пакеты. Но на самом деле мне они не нужны, так как я не буду заниматься разработкой в Android, поэтому я потом лишнее удалю. Как запустить Android в Linux ?

Теперь нужно перейти в меню во вкладку Tools - Manage AVDs . Появится окно, в котором нужно будет задать параметры Android и его рабочего окружения. Я задал такие:

После настройки параметров нажимаем OK и в менеджере появляется наша виртуальная машина с Android.


Теперь нажимаем кнопку Start и запускаем наш Android.


Как видите, всё заработало, а главное сразу работает интернет, а ради этого всё и затеялось. Теперь можно попробовать настроить свой аккаунт в Андроид и начать устанавливать приложения из Google Play.

Единственный минус - это сильные тормоза при работе. Но думаю тут просто нужно немного по-экспериментировать, устанавливая разные версии Android и задавая разные параметры его установки. Вот так можно установить Android на Linux для разработки приложений в нём, да и просто для тестов.

Если вы знаете, как улучшить работу Андроид в Линукс, то поделитесь своим опытом в комментариях.


Не нашли ответ на свой вопрос? Воспользуйтесь поиском...

Никто не станет спорить с тем, что Android ОС — самая популярная гаджет-система. Она управляет практически всеми массовыми моделями смартфоном, планшетов и гибридных ноутбуков, поэтому распространятся о её достоинствах особого смысла нет. Любой, даже шапашный знакомый этой системы отметит среди очевидных преимуществ легкую настраивость по вкусу пользователей и большое количество, как платных так и бесплатных приложений для решения задач различной функциональности. Будто бы и не слышен глас софт классицистов, которые критикуют андроид за отсутствие единых стандартов разработки. Сколько производителей устройств, столько вариантов представления этой системы. Что ж, популярным в народе программным решениям прощают многие эстетические просчеты, если, конечно, указанные обстоятельства можно счесть таковыми. Intel, например, такое спорно эффективное разнообразие не смущает. Они планируют выпуск комплектующих, способных обеспечивать и поддерживать работу андроид. Этот факт косвенно подтверждает, что система близка к тому, чтобы стать стандартом надежности для пользователей. Собственно здесь и открывается возможность потеснить массовые linux версии с пьедестала безопасности и работоспособности. Тем более, что некоторые недолюбливают Unix за недоступность развлекательного и, прежде всего, игрового контента, который в избытке представлен на площадке Android. Сложно пойти против соблазна запустить виртуальное устройство с этой системой под контролем mint, как ради развлечений, так и в помощь криативщикам, которые готовы создавать новые приложения. Самым распространенным и рекомендуемым следующим за таким решением шагом является установка Android SDK.

Создание виртуального Android устройства с помощью ASDK.


Непосредственно перед установкой требуемого приложения нужно установить Java от Oracle вместо OpenJDK , чтобы избежать проблем с запуском ряда программ. Несмотря на заявленную идентичность java-веток, конфликты иногда возникают. Далее в очереди на оптимизацию стоят 32 битные приложения на 64 разрядной системе. Им никак не обойтись без ia32-libs или ia32-libs-multiarch для 12 х.х систем в силу взятого курса на мультиархетектурность. Эти маленькие ассистенты помогут найти нужные библиотеки и обеспечат корректность запуска. Подготовив площадку для работы, скачиваем архивчик android-sdk*linux.tgz с проверенного ресурса вроде андроид девелопер. Вскрываем его в домашней папке, чтобы конечным пунктом размещения оказалась ~/android-sdk-linux/ . После этого можно запустить SDK с помощью ~/android-sdk-linux/tools/android (все необходимые модули будут докачены) Принципиальных противников прохождения джунглей из дерева папок, как обычно, выручит терминал:

Код PHP:

    sudo add- apt- repository ppa: upubuntu- com/ sdk

    sudo apt- get update

    sudo apt- get install android- sdk

Последовательность типична: подключение репозитория с подтверждением добавления ключа, обновление источников, установка. В развернутом виде приложение звймет порядка сто сорока шести программных метров (мегабайт). Иногда консольная обработка — лучший и быстрый способ обнаружить заветную иконку в менеджере приложений. Осталось запустить и заняться созданием собственного андроид смартфона через «производство» Android Virtual Device с помощью соответствующего цели пункта меню инструменты / tool. Все новые гаджеты будут храниться в ~/.android/avd/ ровно столько, сколько вы сочтете возможным.
После нажатия кнопки new откроется базовая панель с настройками, где нужно выбрать исходные параметры: версию андроид ОС — Target, аппаратную платформу CPU и карту SD, где задается образ (существующий через файл, а новый через размер / size).


Добавление клавиатуры как нового устройства в hardware существенно облегчит жизнь и управление виртуальным гаджетом. Кстати их опытные менеджеры не рекомендуют что-либо менять в скинах и возможности делать снимки экрана. Финальным шагом в девайс креативе является нажатие кнопки создать. Если в target вы выбрали google play, то весь широкий спектр его приложений станет доступным. Впрочем, никто не запрещает устанавливать желанные APK вручную.
После завершения процесса создания устройства и непосредственного запуска слева расположится непосредственно экран, а справа — панель управления. Интерфейс лучше всего русифицировать, через настройки во-избежании трудностей перевода, а в разделе безопасность позволить установку из неопознанных неизвестных источников, так как виртуалки далеко не все действия санкционируют без высочайшего юзер соизволения. Также не лишнем будет вынесение часто используемых avd на рабочий стол.
Некоторые скептики считают ASDK малоповоротливым и тормозным, поэтому рассмотрим альтернативный путь создания квази андроид машины с помощью знакомого многим виртуалбокса. По слухам, при таком способе создания виртуального устройства все приложения летают с предельно заявленной для них скоростью.

Создание виртуальной машины со стопроцентной поддержкой OpenGL.

Говорят, что заветная мечта экспериментирующих виртуальщиков - корректная полная поддержка OpenGL. Путь к ее достижению в значительной степени упростил проект AndroVM . Они предлагают для скачивания уже готовые, то есть полностью созданные виртуальные андроид машины, которые нужно просто скачать в разделе OVA files . Там представлен большой выбор, но взор лучше остановить на vbox86tp как самой продвинутой. Этот чудо продукт человеческой мысли импортируется в старый добрый virtualbox практически двумя кликами и не требует никаких настроек.


Правда для получения удовольствия от прелестей аппаратного ускорения следует скачать и распаковать в домашнюю папку AndroVMPlayer . Он помимо прочих удобств (например, мгновенного нахождения и распознавания android машины) эмулирует физические кнопки устройства. Как правило, для работы хватает и Oracle продукта.
Очевидно, что достоинства этого метода запуска андроид приложений в его простоте и скорости, но он больше подходит для развлечения, хотя для первого свидания с подобным содружеством систем и этого достаточно. Кроме того настоящий гаджет не будет захламляться остаточными кусками отслуживших свое программ. Следовательно, период стабильной его работы станет более или менее продолжительным. У sdk гораздо больше возможностей с позиции учета интересов размотчиков программного обеспечения для системы, поэтому, если круг приоритетных целей выходит за далеко за рамки досугового разнообразия, то пойти традиционным путем вопреки возможным сложностям предпочтительнее.

Существует масса эмуляторов Android для всех возможных операционок. Худшие из них еле тащатся, лучшие работают быстро, а иногда даже позволяют поиграть. Вторые обычно доступны только для Windows, а в Linux работают так себе. Но сегодня на улице линуксоидов праздник: у нас появился способ запускать приложения Android прямо в Linux, без всякой эмуляции, тормозов, каждое в отдельном окошке с возможностью изменения размера. Встречай: Anbox - лучший способ запуска приложений Android на десктопе.

Чем Anbox отличается от Shashlik

У разработчиков Anbox ушло полтора года, чтобы довести проект до конца. Они смогли добиться интеграции приложений Android в десктоп Linux, обеспечить практически полную совместимость, а главное - сделать так, чтобы все это работало быстро, без сбоев и не требовало множества шагов для настройки.

Само окружение Android (на базе свежайшего Android 7.1.1, кстати) здесь замкнуто в песочницу, контролируемую с помощью технологии пространств имен (namespaces), той самой, что лежит в основе Docker. Пространства имен полностью отрезают окружение от среды дистрибутива Linux, а вся работа с оборудованием идет через демон anboxd. Для вывода картинки 3D-приложений используется специальный транслятор OpenGL ES → OpenGL, позаимствованный из официального эмулятора Android.

Ядро Linux также пришлось модифицировать, а точнее добавить в комплект Anbox модули с реализацией binder и ashmem, с помощью которых в Android взаимодействуют компоненты системы (IPC). Перед запуском Anbox загружает модули в ядро и добавляет правило udev для установки корректных прав доступа к устройствам /dev/binder и /dev/ashmem .

Каждое приложение в своем собственном окне Anbox размещает с помощью модифицированного композитного менеджера hwcomposer, который Android использует для наложения графических слоев. Hwcomposer запрашивает все слои каждого приложения и отдает их Anbox, который затем формирует индивидуальные окна для отдельно взятых приложений.

Все эти технические решения позволяют сделать Anbox действительно быстрым, удобным в использовании и эффективным в плане расходования ресурсов «эмулятором». В том числе в 3D-приложениях.

Anbox состоит из двух компонентов: container manager и session manager.

Container manager управляет песочницами с работающим внутри окружением Android. Его задача - корректно запустить систему Android, поддерживать ее работу и корректно завершить.

Session manager , в свою очередь, отвечает за коммуникацию Android внутри песочницы и с основной системой Linux. Его задача - отвечать на запросы запуска приложений и распределять их по разным окнам.

В целом запуск приложения Android с помощью Anbox выглядит так:

  1. В ядро загружаются модули binder и ashmem.
  2. Запускается container manager, который разворачивает песочницу с Android внутри.
  3. Запускается session manager, он запускает среду Android.
  4. Юзер отдает команду на запуск приложения, которую принимает и обрабатывает session manager.
  5. Session manager ожидает команды.

Шаги 1–3 подготавливают Anbox и запускаются один раз, обычно при загрузке системы.

Такая архитектура позволяет сделать запуск приложений практически моментальным за счет небольшого (порядка 400 Мбайт) оверхеда по памяти в режиме простоя.


Выводы

Вне всяких сомнений, Anbox заслуживает внимания. Да, у него есть проблемы с совместимостью, он не умеет работать с твоей камерой и микрофоном, он падает. Но это альфа-версия, и для альфы она работает прекрасно.