LINUX.ORG.RU

Новый проект позволит запускать Android приложения в Linux

 , , , ,


3

2

Новый проект «SPURV» даст возможность запускать Android приложения на десктопном Linux. Это экспериментальная контейнерная среда Android, которая может запускать Android приложения наравне с обычными приложениями Linux на дисплейном сервере Wayland.

В определенном смысле его можно сравнить с эмулятором Bluestacks, который позволяет запускать Android приложения под Windows в оконном режиме. Подобно Bluestacks, «SPURV» создает эмулируемое устройство в системе Linux. Но в отличие от Bluestacks, это не рантайм «все-в-одном», который можно скачать и установить.

«SPURV» больше похож на набор инструментов, которые можно использовать для настройки контейнера Android, установки Android приложений внутри него, и запуска этих приложений в полноэкранном режиме на десктопе Wayland в системе Linux поверх ядра Linux.

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

На видео приведена демонстрация одновременного использования Linux и Android приложений в Wayland.

Разработка ведется британской компанией Collabora.

Исходные коды можно скачать на Gitlab.

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

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

А что майкрософту мешает это сделать сейчас, с их открытого гитлаба? Если по лицензии кода они не имеют права этого делать то им тогда иски можно будет предъявить!

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

У меня этот ваш Anbox не работает; после полугода пердолинга в попытках завести хоть снап, хоть кастомный билд — в итоге оказалось, что собранным под ведроидный x86-ABI, да и самому ведроиду с какой-то версии, нужен SSSE4, а мой всратый процессор его не умеет. По этой же причине, похоже, у меня в виртуалке с 4-м Android-x86 половина приложений падает при запуске, а >=6 и Remix OS не запускаются вообще. Сабж потыкаю, что он представляет из себя, но вряд ли он чудо сделает: раз уж даже QEMU не умеет эмулировать недостающие инструкции для x86, то остаётся либо очередная тормозная эмуляция ARM, либо неработающий x86, третьего не дано.

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

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

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

А зачем вообще это умение? Разве не очевидно, что эмуляция одного процессора на другом, это всегда кошмарно медленно и неюзабельно для повседневного использования?

В случае запуска андроид-приложений под linux на x86 разве стоит задача эмуляции процесса, если мы говорим о классическом android-приложении, написанном на джаве? Там ведь байткод под капотом? Не это ли преимущенство джавы, абстрагирование от аппаратной архитектуры?

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

А нельзя как-то эмулировать без эмуляции?

Вполне можно. Вместо эмуляции железа можно преобразовать код так, чтобы он использовал текущее железо. В общем случае это весьма объемная задача, но с развитием с одной стороны языков программирования высокого уровня, функциональных языков, где описывается нужный результат, а не тупая последовательность действий без понятного результата и нейронный сетей с другой стороны, это все вполне можно будет делать.

Вот WINE как-то может, там даже скорость игр под линуксом такая же, как на винде.

Вайн тут не при чем. Вайн, это как драйвер ntfs. Он же ничего не эмулирует, просто альтернативная реализация под posix. Вот и вайн тоже такой же вариант для winapi.

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

В случае запуска андроид-приложений под linux на x86 разве стоит задача эмуляции процесса, если мы говорим о классическом android-приложении, написанном на джаве? Там ведь байткод под капотом? Не это ли преимущенство джавы, абстрагирование от аппаратной архитектуры?

да там везде уже ndk давно. Никому же не нужны простые калькуляторы на джаве. Всем подавай мощные игрухи на цпп...

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

Чисто в теории получится, т.к. для Android x86 были библиотеки для поддержки приложений для ARM.

Это не библиотеки, а запуск приложения в qemu. Никакими api или библиотеками эмуляцию другого процессора не заменить.

Все верно ozz_is_here_again говорил, а ты не в теме. Гугль android arm translation library. Вот например можно было их даже скачать например для x86 эмуля genymotion: https://mega.nz/usg=ALkJrhgzajMZiTGuDUTxVBaGBlodOhsZbQ#F!JhcFwKpC!yfhfeUzvIZo... Только беда в том, что эти библиотеки были созданы толи интелом, толи кем и исходников не было. Смысл, как я понимаю, в том, что arm код транслируется в x86 при установке приложения пользователю. Даже сейчас, если вскроеш кучу популярных прог под андроид, то с удивлением обнаружишь там только arm бинари (*.so) как раз потому что на реальных телефонах с x86 всегда стояли эти трансляторы и многие разрабы просто не заморачивались билдить еще и под x86 и утяжелять апк-шник.

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

Под android на c++? А так можно?

Да хоть на FreePascal под андроид пиши, а не только на С/С++. Еще с версии 2.3, если не ошибаюсь. Только API гораздо скромнее. Для создания игруличек хватает, для прикладных апп - конечно, нет. Но NDK создано в первую очередь для того, чтоб портировать сложные низкоуровневые либы с десктопа (такие как FFMPEG, Curl, OpenCV, всякие SIP клиенты и пр...) и юзать в андроид приложениях UI и бизнес логика которых все-таки в 99% на Java/Kotlin.

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

Если используется ndk и бинарники, то apk все равно снабжается сборками под большинство платформ, дабы не ограничивать искусственно число совместимых устройств. Вопрос эмуляции чужой платформы опять же отпадает сам собой.

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

Да, похоже это все же эмуляция, а не трансляция на этапе установки. Но и не на базе qemu как предполагал AVL2, а похоже кое-что интеловское, закрытое и вероятно более легковесное. Я про этот houdini если что.

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

Для андроида есть хоть одна полезная прога? Или это для отладки?

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

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

Зачем вся эта дроч на гитлаб? Нельзя было просто организацию в гитхабе сделать и туда спокойно ставить код?

Суть не в гитлабе. Главное — это свой сервер. Для этого есть много причин.

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

Или, если случайно скоммитил приватный ключ в репозиторий, то можно быстро остановить сервер, вычистить ключ из репы, и убедиться по логам, что его никто не успел скачать. А с гитхаба нельзя ни логи посмотреть, ни удаление гарантировать — у них всё равно могло что-то остаться, и по commit id оказаться доставаемо.

anonymous ()

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

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

Ну по идее приложения с нейтив кодом нужно запускать с емуляцией процессорной архитектуры. Но большинство приложений под Андройд на сколько я понимаю на JVM работают.
Тем более есть куча приложений, которые должны работать на андройд-планшетах с x86, не?

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

Если гитхаб ляжет, продадут, закроют, или заблокируют, то разрабы ничего не заметят.

Если Гитхаб на долго ляжет, вероятно не только разрабы, но и вообще куча населения земли что-то заметят.

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

Если используется ndk и бинарники, то apk все равно снабжается сборками под большинство платформ, дабы не ограничивать искусственно число совместимых устройств. Вопрос эмуляции чужой платформы опять же отпадает сам собой.

Естественно, я же тоже говорил, что сейчас собирают сразу под несколько платформ. Найти программу только под арм или только под x86 уже довольно сложно.

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

Android уже давно официально умеет x86. Части приложений написанные на жабе не зависят от архитектуры по определению (лишь бы была реализация виртуальной машины для байткода под нужную архитектуру), загвоздка только в нативных библиотеках в составе приложений. Но у того же Google Play уже давно в требованиях наличие нативных либ под arm, arm64, x86, x86_64, ты просто не сможешь опубликовать приложение содержащее нативный код, но без поддержки каких то из этих архитектур.

Так что если не интересует поддержка старья (которая была написана в те времена, когда Android умел лишь ARM) и экзотики (которая не планируется к публикации на Google Play и плюёт на его требования совместимости), то достаточно лишь эмулировать ABI. Ну и системные компоненты типа графики и звука. Ибо нужно транслировать вызовы Android API в X11/Wayland/PulseAudio.

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

Так то джола, а мне надо в дебиане (причём желательно восьмом), и поверх Х11. К тому же у джолы всё закрыто и я слышал что купить эту прослойку для прошитого джолой устрорйства вообще нельзя.

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

Да ничерта тут не отлажено. Есть давно устаревший AlienDalvik на телефонах с ядром 3.10, под которым уже ничерта нового не запустить - там API от дроида 4.4. Это не говоря о глюках, возможных в любом приложении сложнее читалки.
На XA2 - новый костыль, судя по всему - на основе anbox. Судя по перечню багов на TJC, у него всё ещё хуже.

dogbert ★★★★★ ()