LINUX.ORG.RU

Представлен слой совместимости для запуска приложений Android на десктопных дистрибутивах Linux – Anbox

 


9

4

Anbox – это слой совместимости для запуска Android-программ в десктопных дистрибутивах Linux. Anbox похож на Wine (который запускает Win16/Win32/Win64 программы) и Darling (который запускает macOS программы, но находится на раннем этапе разработки). Anbox использует технологию контейнерезации (как и Darling). Anbox использует технологию LXC-контейнеров (Darling также использует похожую технологию). Установить Anbox можно набрав в консоли snap install --classic anbox-installer или скачав скрипт по ссылке: https://raw.githubusercontent.com/anbox/anbox-installer/master/installer.sh.

Основные возможности Anbox:

  • быстрая работа приложений;
  • поддержка 3D графики;
  • плотная интеграция с OS;
  • каждое Android-приложение работает в своем окне;
  • есть буфер обмена между Android-приложениями и десктопными;
  • лицензия: GPLv3.

Также есть и недостатки, так как Anbox еще alpha-версия:

  • Не может запускать Android приложения, у которых есть библиотеки с CPU-архитектурой, с которой не совместим хост (например не возможен запуск на x86_64 приложений с библиотеками ARM или ARM64).
  • Установка приложений только через adb (можно установить F-Droid или Yalp Store — открытая и не официальная программа для установки ПО из GooglePlay).
  • Официально поддерживается только Ubuntu 16.04.
  • Anbox (как и Darling) требует модуля ядра (в отличии от Wine), который собирается с помощью DKMS на машине пользователя.

Также стоит отметить, что если будет установлен софт для Android, который прописывал бы в автозагрузку на реальном Android устройстве, то такое приложение будет запущено автоматически на десктопном дистрибутиве Linux. Например, если установить Android-версию viber, то после перезагрузки компьютера можно обнаружить процесс с именем com.viber.voip и /system/bin/surfaceflinger.

Существуют такие эмуляторы Android, как Shashlik, LeapDroid, YouWave), Nox App Player, Windroy (сайт в текущий момент не работает), Genymotion, MEmu, AndY, AMI DuOS, BlueStacks, AndroVM (в текущий момент происходит редирект на сайт genymotion.com), Android emulator from SDK, Droid4X (сайт в текущий момент не работет), Google App Runtime for Chrome или ARC, который базируется на Native Client (частично исходники можно посмотреть на сайте chromium.googlesource.com). Несмотря на такое изобилие, данные эмуляторы обладают рядом недостатков: или работают только под Windows/macOS, или проприетарны, или имеют низкую производительность, либо же разработка прекращена.

>>> Подробности

★★★★★

Проверено: Shaman007 ()
Последнее исправление: CYB3R (всего исправлений: 16)

Ответ на: комментарий от intelfx

Не знаю, не пробовал. Я OsmAND использую чисто на посмотреть.

Теоретически, ARC создаёт тебе каталог со всеми установленными приложениями и они должны друг друга видеть. Но это теоретически. На практике Anbox наверняка будет лучше, поскольку эмулирует ОС целиком, а не только частичное API.

Под ARC многие приложения не идут.

Aceler ★★★★★
()
Ответ на: комментарий от NiTr0

Да я уже понял свою ошибку, прекратите меня пинать ))

mbivanyuk ★★★★★
()

2gis работает?

на каких архитектурах работает? он arm эмулирует, или только нативный софт гоняет?

buratino ★★★★★
()
Ответ на: комментарий от Psych218

это х86 андроид и он там сильно тормозит по графике и у него проблемы с сетью и установкой приложений из гуглплэй, или есть какие то хитрости?

kirill_rrr ★★★★★
()
Ответ на: комментарий от kirill_rrr

Тормозов не замечал. Проблем с сетью нет. Но мне там нужно только одно приложение — steam, для этих задач хватает вполне. Может для чего-то сложнее и вылезают косяки.

Psych218 ★★★★★
()

Непонятен скрипт, 'SUPPORTED_DISTROS=(«Ubuntu» «LinuxMint» «neon» «elementary»)'
не работает, abort
Выполнял по требованиям что приводится в скрипте, от ppa:morphis/anbox-support установкой anbox-modules-dkms
software-properties-common linux-headers-generic
один хер abort

Rousk
()
Ответ на: комментарий от ei-grad

По ссылке 4.2
Android Studio не нужен для эмулятора

mittorn ★★★★★
()

Пардон если было, но как это реализовано:

Также стоит отметить, что если будет установлен софт для Android, который прописывал бы в автозагрузку на реальном Android устройстве, то такое приложение будет запущено автоматически на десктопном дистрибутиве Linux.

anonymous
()

Anbox использует технологию контейнерезации

Ещё один?

Почему за почти десять лет существования Android/Linux не сделали нативную реализацию виртуальной машины Android для linux/glibc? Вон даже на Sailfish OS есть, а с GNU/Linux воз и ныне там. Что мешает? Были специфичные патчи для ядра — для энергосбережения и ещё чего-то — но их вроде в ванильное уже перенесли, да и заглушки сделать можно.

Тред не читал,

bodqhrohro_promo
()

Кто уже пробовал? Как оно? На Федору в снап пакете не ставится (нет пакета snap install --classic)

incker
()

Простите, вмешаюсь...

Простите, вмешаюсь в вашу высокоинтеллектуальную беседу с одним единственным, но глобальным вопросом, НАХРЕНА??? Ну, разработчикам - я бы ещё понял, хотя если честно, мой ноут (i3, 4 RAM) просто ну ни как не вытягивает эмулятор встроенный в Android Studio. А ждать загрузки виртуального телефона полчаса в мои планы как-то не входит. А если не разработчикам, то тогда вообше непонятки, зачем такой бутерброд из осей устраивать?

cadaber ★★
()
Ответ на: комментарий от hobbit

это всё же общепринятая практика или всё же исключение?

Это общепринятая практика.

Обычно, в нативных APK три архитектуры: armeabi, armeabi-v7a и x86.

Но может быть и фуллсет: http://exlmoto.ru/wp-content/Images/SPOUTDR/Ark.png

mips, и 64-битные часто выкидывают, чтобы охватить больший кусок устройств и сократить размер APK, даже в ущерб преимуществ использования нативных архитектур.

В остальных случаях обеспечена обратная совместимость вниз: на 64-битном ARM кроме arm64-v8a будет работать armeabi и armeabi-v7a. На armeabi-v7a — armeabi. На x86_64 — x86. Про MIPS не знаю, может кто подскажет.

Кроме того в x86 и x86_64 процах от Intel имеются встроенные аппартные (?) бинарные трансляторы с ARM'овских архитектур. Что позволяет запускать приложения использующие ARM'овские нативные библиотеки.

EXL ★★★★★
()
Ответ на: комментарий от NextGenenration

Тем временем дивиз жабы «Write once, run anywhere».

И причём тут Java, если разговор идёт о приложениях на C, C++ и прочих компилируемых языках? Перепиши на Java — охватишь x86, x86_64, armeabi, armeabi-v7a, arm64-v8a, mips, mips64 и все будущие платформы.

Какая тонкая ирония.

Какой смачный пук в лужу.

EXL ★★★★★
()
Ответ на: комментарий от incker

Я пробовал на Arch Linux. Об впечатлениях отписался выше по треду.

TL;DR: не готово для повседневного использования.

EXL ★★★★★
()
Ответ на: Простите, вмешаюсь... от cadaber

Ты не умеешь читать. Это контейнеризация, а не

ждать загрузки виртуального телефона полчаса в мои планы как-то не входит

Эмуляция via QEMU была в подохшем Shashlik'е от проекта KDE, там действительно нужно было ждать по полчаса чтобы запустить Hello World.

Здесь двигаются в другую сторону: контейнер в фоне и каждое Android-приложение запускается в собственном нативном (по отношению к хосту) окне. Запускается достаточно быстро. А вот работает пока весьма медленно и глючит отрисовка. Ну на то это и Alpha.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от anonymous

Будто запускалки Android-приложений только дяди в дорогих костюмах делают.

bodqhrohro_promo
()
Ответ на: комментарий от Psych218

Мне казалось у меня тоже не слишком высокие запросы: гонять оперу-мини, поставленную через гуглплей. Но гуглплей я не осилил вообще.

kirill_rrr ★★★★★
()
Ответ на: комментарий от InterVi

Прости, просто неприятно, что я написал ответ на твой вопрос, а ты буквально следующим постом спрашиваешь его снова:

Представлен слой совместимости для запуска приложений Android на десктопных дистрибутивах Linux – Anbox (комментарий)
Представлен слой совместимости для запуска приложений Android на десктопных дистрибутивах Linux – Anbox (комментарий)

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от curufinwe

Перечисли, каких приложений не хватает в линуксе, и они есть в андроиде.

Синтезатора речи с качественным голосом например очень не хватает. Есть говно фестиваль с заикающимся роботизированным мужиком, но он с Nuance vocalizer и божестаенной Миленочкой для андроида и рядом не валялся.

anonymous
()
Ответ на: комментарий от anonymous

Синтезатора речи с качественным голосом например очень не хватает

Не уверен, что он пойдёт в этом эмуляторе.

anonymous
()
Ответ на: комментарий от makoven

Фабрис запилил слишком сложные для тебя аргументы командной строки? :)

Ну да, если бы дело только аргументами командной строки ограничивалось =)

Siado ★★★★★
()
Ответ на: комментарий от buratino

Софт только нативный. 2gis крашится при открытии карты.

gasinvein ★★★
()
Ответ на: комментарий от EXL

Какой смачный пук в лужу.
И причём тут Java, если разговор идёт о приложениях на C, C++ и прочих компилируемых языках?

Порой складывается впечатление что я инопланетянин, которого понимают только избранные.

NextGenenration ★★
()
Ответ на: комментарий от Inshallah

Darling

Раньше работало - вот, например, старый скриншот: https://upload.wikimedia.org/wikipedia/commons/a/ab/Darling_HelloWordApp.png

С тех пор много чего переделали внутри, так что больше нет. Сейчас ведётся работа над портированием поддержки GUI на новую архитектуру.

anonymous
()
Ответ на: комментарий от NextGenenration

Порой складывается впечатление что я инопланетянин, которого понимают только избранные.

Да, похоже на то.

anonymous
()
Ответ на: комментарий от NextGenenration

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

А те приложения, которые написаны на чистой Java, действительно «Write once, run anywhere», даже в Android. Причём Backward-совместимость там настолько сильная, что никакой нативщине и не снилось. Google в составе Android SDK поставляет специальные support-либы, чтобы приложение написанное по гайдлайнам Android 7.1.1 могло работать и на Android 2.3.3.

EXL ★★★★★
()
Ответ на: комментарий от EXL

mips, и 64-битные часто выкидывают, чтобы охватить больший кусок устройств

щито?

Кроме того в x86 и x86_64 процах от Intel имеются встроенные аппартные (?) бинарные трансляторы

нет там никаких «аппаратных» трансляторов. софтово там все.

NiTr0 ★★★★★
()

Народ, а чего стряслось с vmware 12.5.5, что на ней не стартует ни один андроид?

Погуглил, чуваки что-то там квакнули в гугл-группах и затихло...

Deleted
()
Ответ на: комментарий от NiTr0

щито?

1. Берём самое популярное приложение на Android, Angry Birds:

https://apkpure.com/angry-birds/com.rovio.angrybirds

2. Смотрим в APK:

http://esxi.z-lab.me:666/~exl_lab/screens/apk_arch.png

3. Вместо x86_64 положили только x86, для охвата как x86, так и x86_64.

Именно это я хотел сказать, да только коряво сформулировал.

EXL ★★★★★
()
Ответ на: комментарий от NiTr0

Именно это я хотел сказать, да только коряво сформулировал.

Правильно будет так:

64-битные библиотеки часто выкидывают, даже в ущерб преимуществ использования нативных архитектур. Благодаря этому сокращается размер APK, а совместимость «вниз» всё равно позволяет охватить большой кусок устройств. MIPS же выкидывают просто из-за его нераспространённости на Android-устройствах. На MIPS 64 насколько мне известно, вообще нет Android девайсов в природе.

EXL ★★★★★
()
Последнее исправление: EXL (всего исправлений: 1)
Ответ на: комментарий от NiTr0

все, что будет работать на каком-нить х86 андроиде (ну типа всяких там леновок), будет работать и тут

Ответ неверный. Во всяких x86 андроидах используется транслятор arm->x86 от intel libhoudini. Поэтому там запускаются все без исключения приложеньки, даже которые без x86 либ.

navrocky
()
Ответ на: комментарий от hobbit

Не, ну почему микроскопическая? Того факта, что оно может запускать приложения, НЕ игрушки, большинство которых имеет нативный код скомпилированный хотя бы под x86, уже недостаточно? Вам бы только игрушки запускать?

Например, любители Telegram могут ставить Plus Messenger, который имеет гораздо больше функций, чем тот же Telegram Desktop.

А Шкайпорабы (в том числе и вынужденные) могут поставить Шкаеп от Android. Ну или программы от иных сервисов, разработчики которых в открытую плевали на Linux.

nexfwall ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.