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.

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

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

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

Вы, сударь, чего-то путаете - хоть сейчас могу выложить в плей маркет прогу с нативной либой скомпиленной только под ARMv6 и плей маркет схавает. Только с августа 2019 будет введено требование добавлять поддержку 64 битных архитектур ТОЛЬКО в том случае, если вы уже поддерживаете соответствующий 32-битный ABI - тоесть походу все добавят в свои апк arm64-v8a бинари, а x86/x86_64 все равно большинство будут забивать, потому что устройств коммерчески интересных на них - с гулькин нос.

UPD: пруф https://developer.android.com/distribute/best-practices/develop/64-bit

It is not required to support every 64-bit architecture, but for each native 32-bit architecture you support you must include the corresponding 64-bit architecture.

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

Вообще-то нет...

Вообще мимо. С эмуляторами андроида есть хотя бы иллюзия интеграции.

Сама по себе Android Studio использует qemu-kvm.

Другое дело что эмуляция иной архитектуры (ARM на Intel) по скорости/производительности, это ещё тот адок.

А настроить запуск приблуд в qemu посредством binfmt это вообще раз плюнуть. Обычно только этого стараются не делать из-за потерь в производительности. Но если приблуда написана под Андроид на x86 или x86_64, то почему бы и нет?

Moisha_Liberman ()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)

Решил посмотреть. Ждал грёбаный час по мануалу. Ещё на этапе repo sync -j15, спросил сохранить ли ключ при ssh подключении, сохранил. Ну а потом этот час псу под хвост:

Connection closed by 46.235.227.192 port 22
fatal: Не удалось прочитать из внешнего репозитория.

Удостоверьтесь, что у вас есть необходимые права доступа
и репозиторий существует.
git@gitlab.collabora.com: Permission denied (publickey).
fatal: Не удалось прочитать из внешнего репозитория.

Удостоверьтесь, что у вас есть необходимые права доступа
и репозиторий существует.
git@gitlab.collabora.com: Permission denied (publickey).
fatal: Не удалось прочитать из внешнего репозитория.
//....(ну и куча похожего)
error: Cannot fetch system_vold.git from ssh://git@gitlab.collabora.com/spurv/system_vold.git

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

Блин...

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

Ну про ndk уж что-нибудь хоть почитали бы? В примерах даже native-activity есть. Правда, весь код на все 100% с первого захода я бы не рекомендовал писать, но да, на С/С++ под Андроид можно.

Благословляю.

Moisha_Liberman ()

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

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

Android x86 based OS for PCs/Laptops

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

Фигню слышали.

Сейлфиш даже на raspberry pi 2 портирована (https://sailpi.wordpress.com). Если знаете что такое u-boot и умеете им пользоваться, равно как и собирать кастомное ядро, то проблем нет. Если проблемы всё таки есть, то возьмите их hardware adoptation kit (https://sailfishos.org/wiki/Hardware_Adaptation_Development_Kit).

Там предполагается что Вы сможете использовать ядро от того же цианогена для своего девайса и поверх него наслоить всё необходимое.

Вяленый и всё остальное идут уже следом. Собирается и работает.

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

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

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

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

Собирается.

Вроде Гугл собирается заменить Андроид, не?

Google Fuchsia OS. Брать ознакомительную версию здесь https://mgoulao.github.io/fuchsia-web-demo/

Если коротко, то это что-то типа tizen по своей идее. Всё основано на браузере хром. Привет, html5 и прочая фигня в виде web-gl.

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

Анон, найдите себе стеночку покрепче..

Сделайте милость? И с разбега об неё приложитесь? =)))

Вот за одно за это (в 2019 году!):

Причём тут х86 и арм? Для андроид не на джаве разе пишут?

При том, что java в андроид это register-based vm. А стандартная java это stack-based vm. Кроме слов «java», «vm» и «based» вообще ни чего похожего.

Именно по этой причине гугль и выпустил документы, описывающие как распедаливать одни и те же исходники (хоть с ndk, хоть без, на «чистой» java) по различным архитектура, создавая apkшки под разные архитектуры. Вот этот документ. https://developer.android.com/studio/build/configure-apk-splits

Там идёт сперва про разрешение экрана, а потом уже про генерацию под конкретный ABI.

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

Научитесь уже буквари читать. Что ли?

Moisha_Liberman ()
Ответ на: Анон, найдите себе стеночку покрепче.. от Moisha_Liberman

При том, что java в андроид это register-based vm. А стандартная java это stack-based vm. Кроме слов «java», «vm» и «based» вообще ни чего похожего.

Именно по этой причине гугль и выпустил документы, описывающие как распедаливать одни и те же исходники (хоть с ndk, хоть без, на «чистой» java) по различным архитектура, создавая apkшки под разные архитектуры. Вот этот документ. https://developer.android.com/studio/build/configure-apk-splits

Вот не надо тут умничать - большая часть апп, написанных на одной лишь джаве содержат в себе универсальный для всех платформ dex-байткод и ничего кроме него. Сплиты по abi - это только для апп содержащих нативные либы. К тому же apk-splits уже не так актуальны в свете того что уже где-то больше года как поддерживаются app-bundles.

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

Что ты подразумеваешь под «наативный код», код на `С/С++`? Если да то все зависит от сложности кода. В моих экспериментах с Anbox. Мне удалось запустить многие программы и корректно с ними работать. Игры работать отказывались даже самые простые на мой взгляд. Как по мне хороший результат.

oster2011 ★★ ()
Последнее исправление: oster2011 (всего исправлений: 1)
Ответ на: Собирается. от Moisha_Liberman

Собирается только в фантазиях лоровских Вась. В реальности Fuchsia просто проект одного из сотрудников, а слово «Google» к названию ты прилепил сам непонятно зачем.

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

Ну спасибо! Успокоили!

Собирается только в фантазиях лоровских Вась. В реальности Fuchsia просто проект одного из сотрудников, а слово «Google» к названию ты прилепил сам непонятно зачем.

А то я думал что врут https://ru.m.wikipedia.org/wiki/Google_Fuchsia

И эти вот тоже врут https://fuchsia.googlesource.com

Но да, мы, васяны лоровские, мы такие... Доверчивые... =)))

Moisha_Liberman ()
Ответ на: Ну спасибо! Успокоили! от Moisha_Liberman

И что ты показал этими линками? Ты знаешь сколько проектов сотрудников на googlesource? Ты вообще знаешь, что в гугле официально положено часть рабочего времени уделять личным проектам?

Nill ()
Ответ на: Надо... Надо... от Moisha_Liberman

Надо... Надо...

Нет не надо)

Вот у меня прога сейчас открыта, я добавляю splits { abi { enable true reset() include «armeabi», «x86», «x86_64» universalApk false } } Билдятся несколько apk - открываем их в любом архиваторе и что мы видим. https://pasteboard.co/I9bJZrJ.png Я специально красным выделил, чтоб было понятно, что в билдах для разных платформ байткод совершенно одинаковый (глянь на CRC). Да и все остальное одинаковое, потому что прога на чистой джаве. А теперь извинись перед анонимом, которому сказал разбиться об стену ;)

Сплиты по ABI позволяют реально сократить размер загружаемого из плея на мобилу.

Это да, но если у тебя только джава/котлин в проекте, то делать сплит по abi нет никакого смысла, потому что как уже сказали байткод универсальный.

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

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

Да ладно, нативные либы давно суют везде подряд, даже для банальной криптографии в мессенджерах, например. Если не юзать NDK, то оно будет тормозить так, что айфон захватит половину рынка. Да и UI на жабке напрямую не делают почти — либо WebView, либо всякие прослойки для веб-макак типа React Native. Хз, где вы там в 2k19-м жабку нашли в ведроиде, на ней только жабисты и пишут, но это не показатель: у жабистов атрофированы мозги, они придумали ORM, чтобы не учить SQL, и они же придумали всякие извращения типа GWT/Vaadin, чтобы не учить вебню.

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

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

Какое по-твоему количественное соотношение приложений-мессенджеров под андроид к приложениям-мордам для всяких магазинов, сервисам, фонарикам и прочей лабуде, которой как тут уже сказали 99% на андроиде? И для всей этой лабуды нативные С/С++ либы нафиг не нужны. То-то и оно...

Если не юзать NDK, то оно будет тормозить так, что айфон захватит половину рынка.
Да и UI на жабке напрямую не делают почти — либо WebView, либо всякие прослойки для веб-макак типа React Native.

Ты сам себе тут противоречишь - по-твоему нативное Java UI тормозит, но зато не тормозят WebView и ректакт? Really?))

Хз, где вы там в 2k19-м жабку нашли в ведроиде, на ней только жабисты и пишут

facepalm... как и все следующее далее по тексту

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

Только сегодня пробовал, anbox работает. Даже Google Play в него ставится и далее все что угодно. До этого пробовал когда проект только появился(года полтора назад что ли?) не работал, а сейчас вполне шевелится.

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

Только сегодня пробовал, anbox работает. Даже Google Play в него ставится и далее все что угодно. До этого пробовал когда проект только появился(года полтора назад что ли?) не работал, а сейчас вполне шевелится.

ну да, поправил я PATH. Однако skype например не заработал. Audio-звонки делать из вацапа надо попробовать. Камера не поддерживается совершенно официально, есть подозрения, что и микрофон тоже.

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

Да вот не взлетает на моем Оптимусе, а на десктопе и не пробовал, ибо там нормальная игровая видюха и мне еще игры под Иксами запускаться, чего на вяленом не сделаешь. Потому не вышло.

Да, как я помню в виртуалках Вэйланд тоже не работает, потому и под виртуалкой не потестишь

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

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

А ещё микроэмулятор умудрялся тормозить у меня на х86_64. Страшно его на arm запускать.

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

Новизна будет когда это можно будет просто поставить и работает.

Без пердолинга с настройками, в общем так как это сделано в Bluestacks. Уж если под виндой можно играть в андроидные игры, то почему под линуксом нельзя?

anonymous ()
So gaming isn't really our intended application, but it does place emphasis
all of the same bottlenecks & features that we are targeting.

We're currently not intending to make this a end-user application
but rather a developers tool and for embedding into products.

About a paradigm shift, this work still requires the host machine to run Linux,
which is not what most people use.

Ясно.

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

Да. Вы тут правы.

А теперь извинись перед анонимом, которому сказал разбиться об стену ;)

Перед аноном я извинился. =)

но если у тебя только джава/котлин в проекте, то делать сплит по abi нет никакого смысла

Да. Соглашусь. Просто, получилось так, что я практически сразу, как только можно стало, свалил с «чистой явы» на NDK (собственно, почему и помянул native activity как пример). А сейчас уже более года в глаза не видел даже и Android Studio ибо переполз на Sailfish. Хоть там и не GTK+ и hildon, как это в Maemo было, а Qt/QML, но всё как-то поживее крутится и не жрёт батарейку как не в себя.

Гимора в разы меньше, процессор бы в INOI R7 поновее воткнуть, а то не очень шустрый браузер (Sailfish SilicaWebView на Qt основан, у него скорость это родовая травма, подтормаживает на Qualcomm Snapdragon 212, да и графон на Adreno 304 ну так себе, «в общем, есть»). Ну, в общем, мириться можно, но жду более новые девайсы на этой платформе.

На ведро назад не хочу. Ни под Джаву, ни под Котлин.

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

Было сказано...

Дословно:

В реальности Fuchsia просто проект одного из сотрудников, а слово «Google» к названию ты прилепил сам непонятно зачем.

Какие вопросы? Я googlesource как домен не регистрировал. Он принадлежит гуглю, а не мне. Если гугль не против того, чтобы в названии было слово Google, то вопросы опять к гуглю, а не ко мне.

В реальности Fuchsia просто проект одного из сотрудников

Java тоже была проектом «одного из сотрудников». Точнее, двоих. И что дальше?

Moisha_Liberman ()
Ответ на: Было сказано... от Moisha_Liberman

Надоели уже лоровские фантазии о фучии, как замене Андроида. Нет у Гугла таких планов. Чем там какой-то Вася занимается в положенное ему свободное время никого не волнует. Ты будешь шокирован, когда узнаешь, что сотрудники гугла в свободное время еще разрабатывают. Чем бы дитя не тешилось, лишь бы не вешалось

Nill ()

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

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

Понимаю... =)))

Всё понимаю. Понимаю даже почему от одной мысли о замене технологического убожества под названием андроид у Вас оно перекусывает лом. Вы станете не нужны как класс. Ибо в «облачной» OS рулит не отдельный девелопер, а хозяин облака. А вы, парни, к таковым не относитесь.

Я давно уже всё это вкурил... =))) Поэтому я на Sailfish, ну а вы (и Вы лично) можете подождать чем там дело закончится. Я тоже со стороны понаблюдаю, хоть поржу... =)))

UPD. За «нет у Гугла таких планов» спасибо отдельное, Вы сорвали покровы. Скажите, Вам это Брин лично доложил? =)))

Moisha_Liberman ()
Последнее исправление: Moisha_Liberman (всего исправлений: 1)