- Зміст статті Існує маса емуляторів Android для всіх можливих операційних систем. Найгірші з них...
- Ubuntu
- Arch Linux
- пробуємо
- FAQ першопрохідника
- Як натиснути кнопку «Назад» і мотати сторінки?
- Чи можна використовувати Anbox для запуску проектів в Android Studio?
- Чи можна отримати доступ до файлової системи працює Android з Linux?
- Чи можна встановити магазин додатків?
- Як розібрати образ Android Anbox?
- А чи можна використовувати інший образ Android, наприклад CyanogenMod?
- Чим Anbox відрізняється від Shashlik
- Як воно працює
- висновки
Зміст статті
Існує маса емуляторів 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 в 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 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 виглядає так:
- В ядро завантажуються модулі binder і ashmem.
- Запускається container manager, який розгортає пісочницю з Android всередині.
- Запускається session manager, він запускає середу Android.
- Юзер віддає команду на запуск програми, яку приймає і обробляє session manager.
- Session manager очікує команди.
Кроки 1-3 готують Anbox і запускаються один раз, зазвичай при завантаженні системи.
Така архітектура дозволяє зробити запуск додатків практично моментальним за рахунок невеликого (близько 400 Мбайт) оверхедів по пам'яті в режимі простою.
архітектура Anbox
висновки
Поза всякими сумнівами, Anbox заслуговує на увагу. Так, у нього є проблеми з сумісністю, він не вміє працювати з твоєї камерою і мікрофоном, він падає. Але це альфа-версія, і для альфи вона працює прекрасно.
Чи можна використовувати Anbox для запуску проектів в Android Studio?Чи можна отримати доступ до файлової системи працює Android з Linux?
Чи можна встановити магазин додатків?
Як розібрати образ Android Anbox?
А чи можна використовувати інший образ Android, наприклад CyanogenMod?
І тому перше, про що ти запитаєш: а як ставити софт, братан?
Чи можна використовувати Anbox для запуску проектів в Android Studio?
Чи можна отримати доступ до файлової системи працює Android з Linux?
Чи можна встановити магазин додатків?
Як розібрати образ Android Anbox?