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)

Не может запускать Android приложения, у которых есть библиотеки с CPU-архитектурой, с которой не совместим хост (например не возможен запуск на x86_64 приложений с библиотеками ARM или ARM64).

Собственно, на этом и всё :) Как я понимаю, для полноценной работы на этом большинства сколько-нибудь полезных андроид-программ, видимо, надо собрать ARM-десктоп, ибо это большинство тащит за собой NDK?

Я не хочу сказать что-то плохое, молодцы ребята, что пилят продукт, просто область применения получается микроскопическая?

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

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

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

во многих аппках есть х86 натив либы.

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

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

У меня два планшета на x86 под андроидом, значит все что есть в Google Play есть в версии под x86 насколько я понимаю. Следовательно в чем может быть проблема?

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

Не знаю, поэтому и спрашиваю. То есть проблем типа «Приложение не работает под вашей платформой» на твоих планшетах никогда не возникало?

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

Нет конечно, таких проблем не было. Только неделю назад купил дочке планшет на Intel, все работает отлично.

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

значит все что есть в Google Play есть в версии под x86

Абсолютно не значит! Если разраб не запилил версию по x86, то ее и не будет в Google Play...

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

У меня два планшета на x86 под андроидом, значит все что есть в Google Play есть в версии под x86 насколько я понимаю. Следовательно в чем может быть проблема?

Нет, большинство андроид-девайсов на x86 умеют нативно транслировать из arm в x86. Приложение не обязано быть собрано с поддержкой x86.

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

в х86 андроидах вроде как есть и транслятор арм-х86, позволяющий пускать натив либы от арма на х86. но во многих софтинах либы таки х86 нативные.

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

В каком месте они молодцы, если в принципе область применения ничтожна?

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

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

mbivanyuk ★★★★★
()
Ответ на: комментарий от 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 ★★★★★
()
Ответ на: комментарий от EXL

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

щито?

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

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

NiTr0 ★★★★★
()
Ответ на: комментарий от 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 ★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.