LINUX.ORG.RU

Эмулятор Android Studio

 , ,


0

3

Доброго времени суток!

Есть одна проблема (или скорее задача) которую надо как-то решить, методы особого значения не имеют. В связи с некоторыми проблемами с эмуляторами под Windows, пока остановился на варианте использования эмулятора Android в ОС Debian 10.

Установил последний Android Studio и штатный эмулятор. Создал последовательно несколько виртуальных устройств (скачал разные образы).

Проблема первая: Android 5.0 x86. Запускается, работает быстро, но возникает спам табличкой Play services stopped. Причина неизвестна, не успеваю закрывать как при каких-то действиях они снова появляются. Кто-то знает с чем связано? С виртуалкой ничего не делалось, скачана заводская.

Проблема вторая: Android 6.0 (ARM) зависает после запуска, на экране заставка андроида. Дальше загрузка не идет. В консоли ошибка: pulseaudio: pa_simple_read failed. Reason: Bad State. Я наслышан что эмуляция arm в разы медленнее x86, но я просто попробовать.

Проблема третья: ни Android 6.0, ни 7.0 (x86 либо x86_64) не запускается, ошибок вроде бы и нет. Открывается окно эмулятора, но в самом окне как бы дырка и отображается мусор из ниже расположенных окон. Логотипа андроида нет. В случае x86_64 процесс эмулятора кушает 101% CPU (по top), в случае x86 только 35%. Первое напоминает какой-то deadlock, второе точно нет.

Кроме того, пробовал Genymotion, на Android 5.1 та же проблема с Google Play (окошки и еще раз окошки, которые мешают работать) а более новые версии не запускаются.

Кто-то знает в чем может быть проблема? Камень AMD, виртуализация в BIOS включена, другие эмуляторы (тот же VirtualBox на любой ОС, на винде - Bluestacks, Nox, LDPlayer) работают нормально. KVM на Debian поставил по инструкции, якобы эмулятор должен его сам подцеплять и никакие другие действия не нужны но проверить это я не могу.

Если у тебя цель просто запускать андроидный софт, смотри в сторону waydroid.

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

t184256 ★★★★★
()

методы особого значения не имеют

Первая стока и первая ошибка. И далее, сплошные ошибки и заблуждения и ни слова конкретики.

Что-за железо… Хотя-бы памяти для андроида достаточно, андроид память любит…

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

Памяти достаточно! Если виртуальное устройство настроено на 1-2 гига памяти, а физическая машина содержит 8 гигабайт и кроме этого эмулятора больше ничего не запущено (и в top смотреть умею!) то обижаете. Железо - обычный десктоп, AMD 6 ядер. debian 4.19.0-12-amd64. Я не первый год работаю с другими эмуляторами, в том числе с VirtualBox, в том числе на этой же машине (в основном под виндой). Если уж на то пошло, на всех используемых дисках места тоже достаточно (хотя на системном разделе маловато, гиг всего, но образа и все что касается Android Studio все стоит на физически другом диске.

Специально поставил все самые новые версии эмуляторов чтобы в случае проблем не возникал аргумент «обновите эмулятор».

Почему старые версии Android? Да все просто - экономия ресурсов. Чем новее версия - тем больше она жрет (тем больше места на диске занимает образ, и так далее). Как правило, весь софт поддерживается начиная с версии 6.0 (редко - 7.0). Крутился бы на 5.0 или 5.1 которые запустились без проблем, но на них половина софта не пойдет потому что разработчики ленивые, потому их использовать не вариант.

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

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

Странно

Я делал «устройство Андроид» из ноубука с 8 ГБ ОЗУ, лайва LinuxMint, «десктопной» ВМ Boxes и образа Android x86 (9-я версия, свежее не было). Надо было «срочно» попользоваться приложением Android-only. Смартфона не было.

Так вот эта конструкция из «ПО» и «железа» довольно сносно работала (кошмара хватало).

У Вас ресурсы качественней (6 ядер, система установлена, настоящая ВМ и т.д.), а с результатом как-то не складывается…

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

repo.waydro.id

#!/usr/bin/env bash

set -e

if [ -n "$1" ]; then
    UPSTREAM_CODENAME="$1"
else
    if [ -e /etc/os-release ]; then
        OS_RELEASE=/etc/os-release
    elif [ -e /usr/lib/os-release ]; then
        OS_RELEASE=/usr/lib/os-release
    fi

    UPSTREAM_CODENAME=$(grep "^UBUNTU_CODENAME=" ${OS_RELEASE} | cut -d'=' -f2)

    if [ -z "${UPSTREAM_CODENAME}" ]; then
        UPSTREAM_CODENAME=$(grep "^DEBIAN_CODENAME=" ${OS_RELEASE} | cut -d'=' -f2)
    fi

    if [ -z "${UPSTREAM_CODENAME}" ]; then
        UPSTREAM_CODENAME=$(grep "^VERSION_CODENAME=" ${OS_RELEASE} | cut -d'=' -f2)
    fi

    # Debian 12+
    if [ -z "${UPSTREAM_CODENAME}" ] && [ -e /etc/debian_version ]; then
        UPSTREAM_CODENAME=$(cut -d / -f 1 /etc/debian_version)
    fi

    if [ -z "${UPSTREAM_CODENAME}" ]; then
        echo "[!] Could not detect your distribution. Please provide a valid option as first argument"
        exit 1
    fi
fi

# Remap
if [ "${UPSTREAM_CODENAME}" = "kinetic" ]; then
    UPSTREAM_CODENAME="ubuntu-devel"
fi

# Catch
if ! [[ "${UPSTREAM_CODENAME}" =~ ^(focal|jammy|ubuntu-devel|bookworm|bullseye|sid)$ ]]; then
    echo "[!] Distribution \"${UPSTREAM_CODENAME}\" is not supported"
    exit 1
fi

curl --progress-bar --proto '=https' --tlsv1.2 -Sf https://repo.waydro.id/waydroid.gpg --output /usr/share/keyrings/waydroid.gpg
echo "deb [signed-by=/usr/share/keyrings/waydroid.gpg] https://repo.waydro.id/ ${UPSTREAM_CODENAME} main" | tee /etc/apt/sources.list.d/waydroid.list
apt update
master_0K
()
Ответ на: комментарий от master_0K

У меня есть пробелы в знаниях. Например, я впервые слышу про Boxes (уже прочитал что это), как бы знаю про KVM, VirtualBox, Microsoft VirtualPC но именно Boxes - впервые. По опыту мне никогда не удавалось загрузить образ Android x86 (iso) коих в сети полно, люди заявляют что это образ который должен запускаться в VirtualBox в частности (видел подобные заявления открытым текстом) но успешной загрузки таких образов не видел ни разу. Хотя Genymotion полностью базируется на VirtualBox, а Memu Player, BlueStacks и LD (или во всяком случае два из этих трех) на каком-то форке VirtualBox’а. Завтра пробую Waydroid. За скрипт спасибо но когда нет подключения к репозиторию он бесполезен.

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

В Android я мало, что понимаю. Про Boxes мне тогда подсказали. Он был в лайве Fedora, но добиться работы этой связке не удалось … Я стал пробовать другие системы. В большинстве случаев Boxes был «сломан». В LinuxMint был рабочий Boxes. Вся связка заработала. Образ Android x86 брал с «официального» сайта проекта (я до сих пор немного сомневаюсь в его официальности). Но других вариантов под x86 (x86_64) не было. А эмулировать ARM на доступном мне «железе» … «не вариант».

Под VirtualBox у проекта Android x86 есть специальные образы, насколько я помню.

Завтра пробую Waydroid. За скрипт спасибо но когда нет подключения к репозиторию он бесполезен.

У меня тот скрипт отображается при открытии адреса https://repo.wayro.id. (Сделал «зарубку»: «Посмотреть Waydroid при случае»).

master_0K
()

Кроме того, пробовал Genymotion, на Android 5.1 та же проблема с Google Play (окошки и еще раз окошки, которые мешают работать) а более новые версии не запускаются.

Не прошло и восьми лет, а для кого-то это ещё как «вчера»…

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

Проблема, как всегда, в застрявших в прошлом мозгах.

По-русски пожалуйста. Я вроде бы уже объяснил что 5-й андроид запускал исключительно для теста, мне он не подходит т.к нужен 6й и новее для запуска приложений. Но ни один андроид новее 5-го пока не запустился.

Не прошло и восьми лет, а для кого-то это ещё как «вчера»…

Что вчера? Google Play падает на эмуляторе? Баг настолько древний и до сих пор его не исправили?

Вы о Boxes или Waydroid? О Waydroid. Этот эмулятор для меня закрыт, я не уважаю разработчиков которые не поддерживают Debian 10.

Пока искал решение по запуску Waydroid на buster, наткнулся на Anbox (который стал без танцев с бубном просто через APT). И тут снова проблемы - сайт build.anbox.io с которого качать образы, лежит (таймаут подключения), и судя по вебархиву, лежит он с октября 2022 года. Очередное разгильдяйство.

Пришлось открывать в вебархиве, доставать sha256 хеш и по гуглу по этому хешу искать нужный образ (github у AkihiruSuda). Но не запускается. ashmem, binder активированы, несмотря на то что не во всех инструкциях пишут что надо образ положить в /var/lib/anbox/android.img я это сделал, лог заканчивается строчкой «Set container state ro STOPPED», независимо от запуска (меню, команда в терминале). Из под root, под юзером просто моментально захлопывается, видимо этот софт вообще не предназначен для работы из под юзера. https://pastebin.com/dVT0UYc2

Кто шарит в работе LXC - в чем проблема?

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

Позволю себе такую наглость как up темы. Проблема все еще актуальна. Решение найти не могу. Советы в духе включить виртуализацию в BIOS не помогают потому что она и так включена. Информации по Anbox вообще мало.

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

«С выпуском Android 10 Google прекратила поддержку Android 7 или более ранней версии.» Доступ для старых устройств на Android в Play Market закрыт.

P.S. Бросай Debian - у тебя мозги засираются протухшим кодом, который больше не работает в современном мире. Обновляй железо и ставь нормальную операционную систему с ПО, соответствующем текущему моменту, а не 5-10 летней выдержки. Это не тот случай, когда бесконечные патчи на старый код делают его свежее.

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

Up?

Сначала замечания. Если отвечаете в одном сообщении нескольким собеседникам, «кастуйте» по никам. Без «каста» уведомление приходит только, тому юзеру на чьё сообщение отвечаете. Каст приходит всем кто указан. Не стоит злоупотреблять этой возможностью. Вместо дублирования одного ответа «всем» лучше написать сообщение с «кастом» юзеров. В других случаях нужны веские причины для «каста». Отвечать на свои сообщения идея «так себе» – тема «всплывёт» в трекере, но обычно толку от этого не будет.

По сути

Мои новости Вас не порадуют:

искал решение по запуску Waydroid на buster, наткнулся на Anbox

если копнуть github чуть глубже, то находится Anbox. Там написано следующее

Waydroid is rebuilding the original idea behind Anbox with explicit focus on modern Wayland powered desktop environments.

Зато у хорошего человека AkihiroSuda есть такая "игрушка"AinD: Android in Docker. Ain't an emulator. Я не смотрел, но в Вас верю. ;)

P.S. Глянул лог. Инит завершается – как предположение, образ не находит (права, юзер, повреждения, не та версия, …) См. надо в anbox-init.sh

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

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

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

Сколько нужно памяти для эмулирования устройства с 512 - 2048 МБ памяти? Я думаю вот столько + физическая система + обвес на эмуляторе. В 8 гигабайт мне влазит 3 виртуалки с виндой на 2 Гб каждая. Окей сейчас пару линеек доставлю но что это даст если проблема не в этом?

Доступ для старых устройств на Android в Play Market закрыт - серьезно? Я почему-то с маркета успешно софт ставил и на 5й (MEmu) и на 7й (Bluestacks). Только Bluestacks мне не подходит по другим причинам. И еще кроме Play Marketa есть аналоги, и я не про русские национальные (то есть даже если реально закроют).

Вы хотите сказать что Debian - говно? Я с этим категорически не соглашусь, но хотел бы услышать Ваше мнение о том какой Linux дистрибутив по Вашему мнению не говно. Только не надо называть что-то малоизвестное. Вот из мейнстримных.

Hermannn
() автор топика
Ответ на: комментарий от t184256

На моей системе waydroid не ставится. Потому что какой-то умник удалил (не верю что их там не было) пакеты для Debian 10 из репозитория. Компилировать из исходников не умею (ну как, умею, часто компилируется успешно но часто это заканчивается какой-то глупой ошибкой причину которой невозможно определить не будучи разработчиком). Для Anbox вроде бы поддерживаемая конфигурация, должен работать. Предлагаете поставить чистый дистрибутив того что они называют поддерживаемым и на него waydroid? Окей побежал искать чистый хард. Но вообще это глупость, как будто видишь софт который работает на Windows 11 и не работает на Windows 10, глупость полнейшая когда системы почти ничем не отличаются.

Hermannn
() автор топика
Ответ на: комментарий от t184256

Пятница вечер. Поскольку завтра на работу идти не требуется - занялся снова данным рукоблудием. Итак,

@andytux советовал х86 запускать напрямую. Образ с android-x86(.org) скачанный год-два назад и тогда не хотевший запускаться внутри VirtualBox но зачем-то все это время занимавший место на моем диске, после прожига на флешку вполне нормально запустился и работает. Плей сервисы полезли обновляться, гугл хром запускается, сеть есть, работать можно но то что я хочу так не реализовать (нужны определенные доработки на хосте, которые могут уже использоваться из виртуальной машины. Сделать это непосредственно на андроиде невозможно. Для более простых задач на этом можно было бы и остановиться.

Далее я полез устанавливать на чистый хард свежую скачанную Ubuntu 22.10. Скажу сразу что после Debian от этого плохо становится. Во первых, неадекватно долгая загрузка Live CD, в разы дольше любого другого образа который я в своей жизни запускал. Только после которой можно запустить установщик. Во вторых, вырви глаз интерфейс с салатовым фоном терминала (хорошо что только в лайв, стало нормально). В третьих, какой-то гном вообще не тот, в гноме узкая панель задач с меню вверху была чем он принципиально отличался от КДЕ (который был похож на винду с панелью внизу). Но ладно, я не об этом.

Поставил waydroid по инструкции. Контейнер запустил. Диск смонтировался:

overlay          98G  8.9G   85G  10% /var/lib/waydroid/rootfs
overlay          98G  8.9G   85G  10% /var/lib/waydroid/rootfs/vendor

При запуске сессии происходит что-то непонятное:

oot@desktop:/var/lib/waydroid# tail waydroid.log
(000568) [03:30:53] % mount -o bind /var/lib/waydroid/waydroid.prop /var/lib/waydroid/rootfs/vendor/waydroid.prop
(000568) [03:30:53] Save config: /var/lib/waydroid/waydroid.cfg
(000568) [03:30:53] % lxc-start -P /var/lib/waydroid/lxc -F -n waydroid -- /init
(000568) [03:30:53] New background process: pid=2430, output=background
(000568) [03:30:53] % lxc-info -P /var/lib/waydroid/lxc -n waydroid -sH
lxc-start: waydroid: conf.c: turn_into_dependent_mounts: 3919 No such file or directory - Failed to recursively turn old root mount tree into dependent mount. Continuing...
RUNNING
(002355) [03:30:53] Failed to start Clipboard manager service, check logs
lxc-start: waydroid: conf.c: run_buffer: 321 Script exited with status 126
lxc-start: waydroid: start.c: lxc_end: 988 Failed to run lxc.hook.post-stop for container "waydroid"
root@desktop:/var/lib/waydroid# 

Процесс № 2430 существует, в состоянии defunct. Google ведет на не закрытый баг репорт которому больше года https://github.com/waydroid/waydroid/issues/497 Ошибка вроде связана с работой lxc, не waydroid Подскажите что дальше делать.

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

Пока изучал параметры командной строки, нашел waydroid first-launch мало ли, может еще что-то не инициализировано. Но оно тоже ничего хорошего не выдает:

(000568) [03:58:07] % lxc-info -P /var/lib/waydroid/lxc -n waydroid -sH
STOPPED
(003989) [03:58:07] Waiting for binder Service Manager...
(003989) [03:59:08] Service Manager never appeared
(003989) [03:59:08] Failed to access IPlatform service

Статус всего:

user@desktop:~$ waydroid status
Session:	RUNNING
Container:	STOPPED
Vendor type:	MAINLINE
Session user:	user(1000)
Wayland display:	wayland-0
Hermannn
() автор топика
Ответ на: комментарий от Hermannn

Хороший тред, подписался.

Непонятно, как твои проблемы с линукс дистрами относятся к проблеме, и тем более непонятно в чем проблема с андроид студио.

Я б ещё вбросил про винду, где апк из коробки почти работают, но это попозже.

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

А тут уже все смешалось, кроме винды.

Краткое содержание проблемы:

  1. Надо запустить Андроид 6 или новее на ПК под виртуализацией, не важно какой, не важно на какой ОС.

  2. Вопрос был в том, какого чёрта Android Studio запускает 5.0 нормально но зависает на всех более новых версиях системы в своем родном эмуляторе. Та же проблема с бесплатной версией коммерческого эмулятора Genymotion. Видимо, никто не знает.

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

  4. Мне предложили waydroid (о нем слышу впервые), но он не стал на Debian 10. Я нашел его аналог anbox, он стал но не запустился,

  5. Специально под waydroid поставил последнюю версию Ubuntu, при запуске эмулятора (точнее, LXC контейнера) вновь непонятная ошибка.

Да, здесь вопросов на 3 темы наберется, и исходное название темы потеряло актуальность, надо бы сменить на «Эмуляция Android на десктопе». Студия здесь была только при том что я ее ставил с родными для нее эмуляторами (потому что когда-то давно я ее использовал пару раз под виндой и помню что эти эмуляторы были рабочими).

Hermannn
() автор топика