Налаштовуємо Anbox: як запускати додатки Android в Linux без емулятора

  1. Зміст статті Існує маса емуляторів Android для всіх можливих операційних систем. Найгірші з них...
  2. Ubuntu
  3. Arch Linux
  4. пробуємо
  5. FAQ першопрохідника
  6. Як натиснути кнопку «Назад» і мотати сторінки?
  7. Чи можна використовувати Anbox для запуску проектів в Android Studio?
  8. Чи можна отримати доступ до файлової системи працює Android з Linux?
  9. Чи можна встановити магазин додатків?
  10. Як розібрати образ Android Anbox?
  11. А чи можна використовувати інший образ Android, наприклад CyanogenMod?
  12. Чим Anbox відрізняється від Shashlik
  13. Як воно працює
  14. висновки

Зміст статті

Існує маса емуляторів Android для всіх можливих операційних систем. Найгірші з них ледве тащаться, кращі працюють швидко, а іноді навіть дозволяють пограти. Другі зазвичай доступні тільки для Windows, а в Linux працюють так собі. Але сьогодні на вулиці линуксоидов свято: у нас з'явився спосіб запускати додатки Android прямо в Linux, без будь-якої емуляції, гальм, кожне в окремому віконці з можливістю зміни розміру. Зустрічай: Anbox - кращий спосіб запуску додатків Android на робочому столі.

Почнемо з того що Anbox - Чи не емулятор. Це система запуску повноцінного життєвого Android прямо на поточному ядрі Linux з можливістю виведення інтерфейсу кожної програми в окремому вікні з підтримкою 3D-прискорення. Щось на кшталт Wine, який запускає програми Windows без необхідності запуску Windows у віртуальній машині, але без властивих Wine глюків і недоробок.

Два головних переваги Anbox - швидкість і безшовна інтеграція з десктопом. Програми запускаються без жодних прошарків і емуляції. А найголовніше - вони працюють швидко. У другій частині ми докладніше розглянемо, як працює Anbox, а поки встановимо його і подивимося, що це таке.

ставимо

В даний момент Anbox підтримує виключно процесори архітектури x86_64 та дистрибутиви Ubuntu 17.04, 16.10, 16.04, 14.04, а також Linux Mint, Neon і Elementary. Встановлюється або за допомогою самодостатнього пакета формату Snap , Або за допомогою скрипта anbox-installer. Але так як обидва варіанти працюють однаково, а перший менш універсальний, розглянемо тільки другий.

Ubuntu

Перше, що необхідно зробити, - це завантажити сам скрипт і дати йому права на виконання:

$ Wget https://raw.githubusercontent.com/anbox/anbox-installer/master/installer.sh -O anbox-installer $ chmod + x anbox-installer

Далі запускаємо скрипт:

$ Sudo ./anbox-installer

Скрипт попросить написати в терміналі I AGREE, після чого встановить Anbox в систему і запропонує перезавантажити машину. Після перезавантаження в меню з'явиться пункт Anbox.

Після перезавантаження в меню з'явиться пункт Anbox

Встановлюємо Anbox в Ubuntu

Arch Linux

Anbox можна запустити не тільки в офіційно підтримуваних дистрибутивів, але і в інших Лінукс, просто зібравши його з початкових кодів. Найпростіше це зробити в Arch Linux, так як Anbox вже є в AUR і весь процес збірки можна автоматизувати.

Встановимо парочку необхідних для складання пакетів:

$ Sudo pacman -S linux-headers dkms

А потім зберемо Anbox з AUR. Краще зробити це за допомогою AUR-клієнта, такого як pacaur або yaourt:

$ Yaourt -S anbox-image anbox-modules-dkms-git anbox-git

Далі завантажимо необхідні модулі ядра:

$ Sudo modprobe binder_linux $ sudo modprobe ashmem_linux

Запустимо container manager:

$ Sudo systemctl start anbox-container-manager.service

Запустимо session manager:

$ Anbox session-manager --gles-driver = host &

Готово. Можна клікати по іконці Anbox на робочому столі або піти шляхом джедая і запустити його прямо з терміналу:

$ Anbox launch --package = org.anbox.appmgr --component = org.anbox.appmgr.AppViewActivity

пробуємо

Відразу після запуску ти побачиш на екрані найпростіший «менеджер додатків», написаний спеціально для Anbox. Додатків тут кіт наплакав: стандартні галерея, календар, налаштування та інше, а ось маркету немає. І тому перше, про що ти запитаєш: а як ставити софт, братан?

І тому перше, про що ти запитаєш: а як ставити софт, братан

Менеджер додатків

І ось тут починається цікаве. Розробники Anbox не мають права включати в поставку свого неемулятора маркет і будь-який інший софт Google, в тому числі сервіси Google, поки їх «пристрій» не пройде сертифікацію. Пристрій пройти сертифікацію не може - маркету не буде.

Але! У Anbox за замовчуванням активований режим налагодження за допомогою ADB (який в стандартному Android включається в настройках для розробників, куди ще треба дістатися), тому встановити додаток можна з його допомогою. Встановити сам ADB можна так:

$ Sudo apt-get install android-sdk-platform-tools // Ubuntu $ sudo pacman -S android-tools // Arch Linux

А тепер найцікавіше: тобі треба знайти і завантажити пакет APK потрібного додатка. Для цього можна використовувати сайт apkpure . Далі залишається лише виконати таку команду (приклад для FX File Explorer):

$ Adb install ~ / Downloads / File Explorer_v5.1.1.0_apkpure.com.apk $ Adb install ~ / Downloads / File Explorer_v5 FX File Explorer

Готово! Став додатки, розважайся, до зустрічі. Жартую, насправді є безліч підводних каменів. Наприклад, відразу після установки Anbox я вирішив протестувати, як в ньому працює Opera Mini, той самий браузер, який вміє швидко відображати сторінки, навіть якщо інтернет до тебе доходить за допомогою голубиної пошти . Адже для робочого столу його немає.

В результаті на екрані з'явилося ось що:

$ Adb install ~ / Downloads / Opera Mini fast web browser_v24.0.2254.115689_apkpure.com.apk Failed to install / home / j1m / Downloads / Opera Mini fast web browser_v24.0.2254.115689_apkpure.com.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res = -113]

Пояснення цьому просте: велика частина коду Opera Mini написана на C ++, який скомпільований в бінарник для платформи ARM. А так як в нашій машині процесор архітектури x86_64, Android дбайливо прибив додаток ще на етапі установки, щоб ми не мучилися, намагаючись зрозуміти, чому воно не працює.

Насправді в маркеті повно подібних додатків, і з несумісністю архітектури ти будеш зустрічатися досить-таки часто.

Насправді в маркеті повно подібних додатків, і з несумісністю архітектури ти будеш зустрічатися досить-таки часто

налаштування

Друга цікава особливість запуску додатків в окремих десктопних вікнах: далеко не кожен додаток готове змиритися з тим, що зараз його личко будуть жорстко стискати або розтягувати. Більшість сучасних додатків в цьому випадку поведуть себе коректно - Google подбала про це, коли готувалася до реалізації підтримки плаваючих вікон в Android 7.0. А ось зі старим софтом можуть виникнути складності, хоча зазвичай все закінчується вікном фіксованого розміру.

Вікна можна робити будь-яких розмірів і форм

Ну і третє. Anbox, висловлюючись мовою Шекспіра, - це alpha software, тобто хлопці нам як би говорять: все буде погано і нестабільно, а про такі речі, як підтримка визначення координат, камера і мікрофон, ти можеш забути. Більш того, в деяких випадках ти можеш забути і про інтернет, а session manager буде час від часу падати, і його доведеться перезапускати.

Упс ...

Зате! Anbox коректно визначає поточний рівень акумулятора, розмір оперативної пам'яті і навіть жорсткого диска (точніше, розділу / home). Та й в цілому працює швидко і не викликає бажання його знести. Кількість пожирає оперативки - всього 448 Мбайт при запущеному менеджері додатків.

Додатки бачать весь диск

FAQ першопрохідника

Як натиснути кнопку «Назад» і мотати сторінки?

Кнопка «Назад» емулюється за допомогою Esc. Клавіатуру також можна використовувати для навігації за додатком (Tab і стрілки). Промотка або коліщатком, або утриманням лівої кнопки миші і рухом вниз-вгору.

Чи можна використовувати Anbox для запуску проектів в Android Studio?

Так! Причому ніяких додаткових кроків для цього робити не треба. Досить вибрати пристрій з ім'ям виду emulator-6663 при запуску проекту.

Чи можна отримати доступ до файлової системи працює Android з Linux?

Так, вона знаходиться в каталозі / var / lib / anbox / rootfs, але доступна тільки для читання. Зате ти можеш переглядати вміст приватних каталогів додатків (data / data).

Чи можна встановити магазин додатків?

Теоретична можливість встановити Google Play Store існує. Для цього необхідно розібрати образ файлової системи Android і інтегрувати в нього GApps. Однак набагато простіше встановити Yandex.Store або будь-який інший сторонній маркет. Плюс активувати установку зі сторонніх джерел: Settings → Security → Unknown sources.

Як розібрати образ Android Anbox?

Дуже просто:

$ Sudo apt-get install squashfs-tools // Ubuntu $ sudo pacman -S squashfs-tools // Arch Linux $ unsquashfs -f -d / куди / розпаковувати /var/lib/anbox/android.img

А чи можна використовувати інший образ Android, наприклад CyanogenMod?

Ні. Є дві причини, чому це зробити не можна. Перша - це повинна бути збірка Android для x86_64. Друга - ця збірка повинна включати в себе специфічні модифікації Anbox .

Чим Anbox відрізняється від Shashlik

Shashlik запускає кожен додаток в емуляторі. Іншими словами, коли ти клацаєш по іконці програми, запускається емулятор, в ньому - урізана середу Android, а вже потім стартує програма. Anbox набагато більш легкий і продуктивний.

Як воно працює

В основі Anbox лежить дуже проста ідея: якщо Android - це віртуальна машина, яка працює поверх ядра Linux, то чому б не спробувати запустити програми Android в оточенні звичайного дистрибутива Linux. Це очевидна ідея, і вона приходила в голову багатьом розробникам з тих пір, як з'явився порт Android на x86. Деякі програмісти спробували реалізувати її через розміщення оточення Android в chroot, але далі полурабочие концептів справа не доходила (приклад: ARC Welder ).

У розробників Anbox пішло півтора року, щоб довести проект до кінця. Вони змогли домогтися інтеграції додатків Android в десктоп Linux, забезпечити практично повну сумісність, а головне - зробити так, щоб все це працювало швидко, без збоїв і не вимагало безлічі кроків для настройки.

Саме оточення Android (на базі свіжого Android 7.1.1, до речі) тут замкнуто в пісочницю, контрольовану за допомогою технології просторів імен (namespaces), тієї самої, що лежить в основі Docker. Простору імен повністю відрізають оточення від середовища дистрибутива Linux, а вся робота з обладнанням йде через демон anboxd. Для виведення картинки 3D-додатків використовується спеціальний транслятор OpenGL ES → OpenGL, запозичений з офіційного емулятора Android.

Ядро Linux також довелося модифікувати, а точніше додати в комплект Anbox модулі з реалізацією binder і ashmem, за допомогою яких в Android взаємодіють компоненти системи (IPC). Перед запуском Anbox завантажує модулі в ядро ​​і додає правило udev для установки коректних прав доступу до пристроїв / dev / binder і / dev / ashmem.

Кожна програма в своєму власному вікні Anbox розміщує за допомогою модифікованого композитного менеджера hwcomposer, який Android використовує для накладення графічних шарів. Hwcomposer запитує всі верстви кожної програми і віддає їх Anbox, який потім формує індивідуальні вікна для окремо взятих додатків.

Всі ці технічні рішення дозволяють зробити Anbox дійсно швидким, зручним у використанні і ефективним в плані витрачання ресурсів «емулятором». У тому числі в 3D-додатках.

Anbox складається з двох компонентів: container manager і session manager.

Container manager управляє пісочницями з працюючим усередині оточенням Android. Його завдання - коректно запустити систему Android, підтримувати її роботу і коректно завершити.

Session manager, в свою чергу, відповідає за комунікацію Android всередині пісочниці і з основною системою Linux. Його завдання - відповідати на запити запуску додатків і розподіляти їх по різним вікнам.

В цілому під час запуску програми Android за допомогою Anbox виглядає так:

  1. В ядро ​​завантажуються модулі binder і ashmem.
  2. Запускається container manager, який розгортає пісочницю з Android всередині.
  3. Запускається session manager, він запускає середу Android.
  4. Юзер віддає команду на запуск програми, яку приймає і обробляє session manager.
  5. Session manager очікує команди.

Кроки 1-3 готують Anbox і запускаються один раз, зазвичай при завантаженні системи.

Така архітектура дозволяє зробити запуск додатків практично моментальним за рахунок невеликого (близько 400 Мбайт) оверхедів по пам'яті в режимі простою.

архітектура Anbox

висновки

Поза всякими сумнівами, Anbox заслуговує на увагу. Так, у нього є проблеми з сумісністю, він не вміє працювати з твоєї камерою і мікрофоном, він падає. Але це альфа-версія, і для альфи вона працює прекрасно.

Чи можна використовувати Anbox для запуску проектів в Android Studio?
Чи можна отримати доступ до файлової системи працює Android з Linux?
Чи можна встановити магазин додатків?
Як розібрати образ Android Anbox?
А чи можна використовувати інший образ Android, наприклад CyanogenMod?
І тому перше, про що ти запитаєш: а як ставити софт, братан?
Чи можна використовувати Anbox для запуску проектів в Android Studio?
Чи можна отримати доступ до файлової системи працює Android з Linux?
Чи можна встановити магазин додатків?
Як розібрати образ Android Anbox?

Дополнительная информация

rss
Карта