LINUX.ORG.RU
ФорумTalks

Как я хотел исхоники Android-программы поправить

 , , ,


0

2

Есть тут ведроид-девелоперы? Вы можете объяснить, что за херня творится с вашими инструментами?

Рассказываю.

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

Устанавливаю Android Studio в чистую как слеза виртуалку (Оффтоп 10, если кому интересно). Не на хост потому, что после всех этих студий систему проще выбросить, чем отмыть от всего установленного шлака.

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

  1. Штатный конструктор виртуальных девайсов не создает один из файлов, который нужен эмулятору (hardware_properties.ini). Вот так! Родной конфигуратор создает неработоспособный конфиг, который невозможно запустить без правки руками.

  2. После создания недостающего файла новая проблема: «This AVD’s configuration is missing a kernel file». И что-то про файл «kernel-qemu». Лезу в каталог образов, действительно, нет такого файла! Зато есть какой-то «kernel-ranchu64». Пробую переименовать. Вроде бы сожрало, но какого хрена я вообще должен заниматься это фигней?

(Для понимания: я не делал никаких нестандартных действий, все по-умолчанию. Образы скачивал через встроенный менеджер пакетов. Виртуальный девайс создавал при помощи штатного конфигуратора)

  1. После подсовывания недостающих файлов пробуем запустить, получаем «x86 emulation currently requires hardware acceleration». Снова не запускается.

  2. Причем в логе ошибка, бэкенд-процесс уже завершился с exitcode, а в GUI весело продолжает заполняться прогресс-бар загрузки эмулятора. Ну не конченные?

  3. Читаем маны. Оказывается, теперь принято отлаживать под native в аппаратной виртуальной машине. Быстро-модно-молодежно. Однако мы уже и так внутри виртуалки. Кто-то уже поддерживает nested VM?

  4. Скрипя сердцем ставлю этот шлак на походный ноутбук. Прохожу все те же проблемы и снова вижу ошибку из п.2. Ах да, это же AMD. Гуглоиды так и не осилили виртуализацию под AMD. VMWare осилили, Oracle/VBox осилили, а гуглоиды не осилили. Молодцы, зато гномиков на собесах считать умеете лучше всех.

  5. Ладно, хер с вашим x86, раньше отлаживал под ARM. Медленно, но работало. Пытаюсь скачать ARM-образ системы и получаю фигу. Начиная с 8.0 доступны только x86-образы. Больше нет возможности ловить специфичные для платформы косяки в эмуляторе, только реальное железо, только хардкор!

  6. Ладно, хрен с вашим 8+ мне не критично, качаю образ 7.1, пытаюсь создать на его базе виртуальный девайс и… Правильно, БОЛТ! Эмулятор поддерживает только образы 8.0 и выше. Падло, как же я от тебя устал…

Итак, имеем замкнутый круг. Эмулятор не поддерживает версии ниже восьмой, но образы версий 8+ только x86 и не поддерживаются железом AMD и внутри виртуальной машины. Пришлось выискивать более древнюю версию всего этого барахла, где есть поддержка ARM-образов и со стороны эмулятора и со стороны ведроида. Вместо предполагаемого часа провозился весь день.

Я одного не понимаю. У гугеля же охренеарды денег. Набирают они тоже типа лучших из лучших. Какого они выкатывают в продакшн такое гумно? Некому тестировать? Или это такая попытка повысить порог входа в платформу, чтобы школоты было меньше? Как так-то?!


не поддерживаются железом AMD

А где тег amd?

chenbr0
()

гугеля же охренеарды денег

Да, сэкономили на качестве продуктов.

Набирают они тоже типа лучших из лучших

Лучшие из лучших заняты оптимизацией микросекунд времени отдачи рекламы.

Некому тестировать?

Есть, тебе, например.

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

Не надо искать злой умысел там, где случился обычный пофиг и так сойдёт.

PolarFox ★★★★★
()

Расскажу свою историю. Изредка мне бывает нужно запустить Android-приложения. Последние 2 раза это были приложения банков. В прошлый раз я обошёлся Android-x86 на VirtualBox, а в этот раз оказалось, что банк собирает свой APK только под ARM.

Взял bwrap. Раньше брал firejail; почему перешёл с него на Bubblewrap, не помню, но принципы у них похожие: берём /, пробрасываем его только для чтения внутрь контейнера. Вместо $HOME пробрасываем ~/achtung/radioactive/waste для записи. Если хотим, отправляем контейнеры в изолированные пространства имён процессов, сети и прочего. Вместо того, чтобы давать контейнеру доступ к иксам, героически подключаемся к отдельному запущенному в нём X-серверу через Xpra в надежде, что это защитит нас от кейлоггеров и средств снятия снимков экрана.

С android command line tools долго ковырялся, но не смог запустить эмулятор. Всё стёр, скачал полный архив с Android Studio, скачал какой-то образ Android (восьмой? десятый? не помню) под ARM. В консоль почти не возвращался, всё как-то работало само. Приложение запустилось с дикими тормозами и регулярно падало (или даже вся система падала), пока я не подбросил виртуальной оперативной памяти. (Лень было разбираться, где это в GUI делать, исправил в конфигурационном файле.) Целей своих добился, но вера в банковскую систему (двух разных не важно каких стран) слегка подорвана.

Может быть, Вам нужно было это на GNU/Linux ставить, а не на Windows? Это, конечно, не сродни разработке под iOS не из-под macOS, но легко себе представить, что разработчикам Android не так интересно поддерживать Windows.

AITap ★★★★★
()

и не поддерживаются железом AMD

Сотый раз убеждаюсь, что я не зря переплачиваю за Intel и NVidia и клиентам советую тоже самое. :)

[UPD:] Ктати один модер цеплялся за меня, когда я говорил, что с AMD и Radeon много проблем. Это одна из них, называется она плохая поддержка железа, которой якобы не существует. Это в прошлом говорил он. :D Если копнуть глубже, то там и пару игр появится, CAD какой-нибудь и т.д. Лень просто собирать.

xwicked ★★☆
()
Последнее исправление: xwicked (всего исправлений: 2)

Устанавливаю Android Studio в чистую как слеза виртуалку (Оффтоп 10, если кому интересно).

Это законно? Что же могло пойти не так.

vvn_black ★★★★★
()

исхоники Android-программы поправить

Обычно, для этого достаточно gradle, ну и предварительно sdk поставить. Студию тащить совсем необязательно.

vvn_black ★★★★★
()

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

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

KVM умеет nested vm, vmware esxi кажется тоже, про остальные не уверен.

PolarFox ★★★★★
()

Tl;dr ты не включил nested virtualization но продолжил кушать кактус и превозмогать.

faq2
()

Android Studio

Корень проблемы.

А чтиво хорошее. Стилистика и грамматика в норме. Пиши ещё.

Mirage1_
()

Нужно было включить в железе аппаратную поддержку виртуализации и работать на Linux.

Vsevolod-linuxoid ★★★★★
()

Вложенная виртуализация в hyper v на системах с процессорами amd поддерживается только начиная с win11(точнее там с определенного Билла win10, но практически это означает то, что написано). Читай документацию прежде чем кого-то блеймить

cobold ★★★★★
()

Студия спрашивает все пути, можно собрать всё в одной директории и потом её удалить. Но тебе проще виндовые виртуалки ковырять, нафига вообще линукс поставил?

InterVi ★★★★★
()

УМВР, и amd ryzen, да. Ставить просто надо android studio, а уже с нее запускать эмуляторы и т.д. Неочевидно да. Или давись Genymotion, зато он реально везде работает. Anbox, waydroid, это да скорей поиграться, но и предназначение у них другое.

anonymous_sama ★★★★★
()

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

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