Android virtual device linux

Платформа Андроид является самой распространённой операционной системой в мире. И необходимость установить её на компьютер может возникнуть как у программиста, разрабатывающего программное обеспечение, так и у геймера, мобильное устройство которого не поддерживает современные игры. Пригодится Android и веб-дизайнеру, создающему мобильную версию сайта. И, если на компьютере установлена Unix-подобная операционная система, такому пользователю понадобится эмулятор Андроид на Линукс.

Эмуляторы Android для Linux

Ассортимент эмуляторов Ubuntu Андроид значительно меньше по сравнению с аналогичными программами для Windows. Большинство из них поставляется в виде образов ISO и запускаются с внешнего USB-носителя. Некоторые, такие как Android-x86, представляют собой отдельные операционные системы. Перед тем как выбрать emulator Android на Ubuntu, следует знать, что каждый из них предназначен для выполнения своих задач. И, если некоторые программы больше подходят для геймеров, то для тестирования приложений установленный на Linux Mint эмулятор Андроид должен быть совсем другой.

Android Virtual Device

Одним из самых популярных вариантов среди разработчиков является пакет Android Virtual Device. Он интегрирован в программную среду Андроид Студио и часто используется для тестирования. Хотя некоторые его версии содержат ошибки – их приходится запускать из командной строки, используя параметр -use-system-libs.

Функциональность включает GPS, имитацию вращения и камеры. Установив Google Play, в нём можно использовать любые Андроид-приложения. Хотя для игр, которые в AVD немного зависают, программа не совсем подходит, и геймерам её устанавливать не стоит.

Android x86

Программу Android x86 можно отнести к не совсем типичным эмуляторам. Фактически, она представляет собой дистрибутив и устанавливается с помощью файла RPM. Компьютер загрузится в режиме мобильного устройства – с возможностью установки любого приложения из Google Play.

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

Anbox

Большинство эмуляторов для Unix-подобных операционных систем не отличаются такой же простотой использования как аналогичные программы для Виндовс. Однако это не касается пакета Anbox, работу которого официально поддерживает ОС Ubuntu 16.04 LTS (хотя работает он и на других версиях этой платформы). Установка выполняется с помощью менеджера пакетов Snap.

Преимуществами Anbox являются возможность запуска Андроид-приложений в отдельных окнах и предустановленные программы системы Android 7.0 Nougat. А к минусам стоит отнести слишком сложную установку.

Genymotion

Эмулятор Genymotion представляет собой ещё один пакет, который подходит программистам и тестировщикам. С помощью этой программы проще тестировать приложения для ОС Android. А доступна она не только для Linux, но и для Windows, и даже для MacOS.

Для работы Genymotion требуется установка на компьютере программного продукта VirtualBox. Стоит отметить, что программа позволяет эмулировать не просто платформу Андроид, но и конкретные модели смартфонов. Загрузка ядра под конкретный телефон выполняется с помощью нажатия всего лишь одной кнопки.

Shashlik

Программа Shashlik относится к сравнительно новым эмуляторам. Поэтому часть проблем с настройками и запуском приложений пока ещё не решена разработчиками. Запускаются не все apk-файлы, а работа поддерживается далеко не всеми версиями Linux.

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

Установка Android эмулятора в Linux

Для установки макета AVD понадобится сначала запустить Android Studio. Есть возможность и отдельного запуска, но она потребует от пользователя больше времени.
Android-x86 запускают с помощью rpm-файла. После установки добавляется запись в меню Grub, и пользователь может выбрать при следующей загрузке уже не Linux, а этот эмулятор, позволяющий превратить компьютер в устройство на Android.

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

При установке deb пакета Shashlik в некоторых версиях Linux возникает ошибка. Иногда проблему решают повторением установки, в других случаях помогает использование команд sudo apt-get install lib32z1 и sudo dpkg -i shashlik_0.9.3.deb (для актуальной в настоящее время версии 0.9.3).

Linux может быть не такой популярной операционной системой, как Windows, но она определенно довольно широко используется; и если вы когда-нибудь хотели опробовать приложение Android в своей системе Linux, вы наверняка задались вопросом, какой лучший эмулятор для этого.

В конце концов, в то время как Windows и macOS имеют множество эмуляторов Android, которые пользователи могут попробовать, у Linux в основном их не хватает.

Тем не менее, есть некоторые эмуляторы Android, которые определенно стоит попробовать, будь то проверить новую игру, попробовать приложение или даже протестировать разрабатываемое приложение для Android. Вот 5 лучших эмуляторов Android, которые вы можете использовать в Linux.

1. Genymotion

Genymotion — это один из самых популярных эмуляторов Android, доступных в Linux (кстати, он также доступен в Windows и macOS), который вы можете попробовать, и на сегодняшний день он один из лучших. В отличие от большинства эмуляторов, Genymotion имеет красивый интерфейс.

Вы можете создать виртуальное устройство и просто подключиться к нему. По умолчанию виртуальные устройства в Genymotion поставляются с базовыми возможностями, но если вы хотите установить приложения из Play Store, Genymotion дает вам удобную кнопку для установки Open Gapps на ваше виртуальное устройство всего за пару кликов.

Это довольно круто, и после установки Gapps вы можете установить практически любое приложение, которое захотите попробовать. Genymotion идеально подходит не только для того, чтобы попробовать случайное приложение для Android, которое вы нашли, но и для тестирования приложения, которое вы разрабатываете самостоятельно.

Эмулятор поставляется с набором потрясающих функций, предназначенных для разработчиков, включая тот факт, что полностью поддерживается Android Studio, поэтому вы можете напрямую запускать свое приложение из Android Studio и открывать его в эмуляторе.

Genymotion поставляется с эмуляторами под управлением Android версии 4.1, вплоть до Android 9.0 Pie и в различных форм-факторах от смартфонов до планшетов и даже пользовательских размеров экрана, которые могут пригодиться, если вы проверяете, как выглядит пользовательский интерфейс вашего приложения в различных форм-факторах.

Если вы ищете эмулятор для игр на Android, Genymotion, вероятно, не для вас. Я попытался установить PUBG Mobile и Free Fire на него, но он просто говорит, что устройство несовместимо. Я установил Pigeon Pop на него, и все прекрасно работает, но были видимые задержки ввода, которые неприемлемы, для комфортной игры.

Тем не менее, когда я пытался установить Genymotion на наш HP Envy с Ubuntu 18.04.1, у него были проблемы с Virtual Box, хотя Virtual Box был установлен правильно. Если вы сталкиваетесь с такими же проблемами, это может быть связано с тем, что в вашей системе включена безопасная загрузка UEFI.

Видимо, это вызывает проблемы с Virtual Box. Чтобы преодолеть это, вы можете использовать mokutil и отключить безопасную загрузку на своем ноутбуке, после чего Virtual Box должен нормально работать, и вы сможете легко запускать Genymotion. Вы можете посетить эту страницу Ubuntu Wiki для подробного руководства о том, как использовать mokutil для отключения безопасной загрузки.

2. Android-x86

Если Genymotion не подходит для ваших целей, и вы действительно хотите запустить Android как виртуальную машину в вашей Linux системе, Android-x86, вероятно, то, что вы ищете. Программное обеспечение фактически предназначено, как порт Android для систем на базе x86.

Это проект с открытым исходным кодом, это означает, что вы можете проверить код, если это вас интересует. Тем не менее, лучшая часть проекта Android-x86 заключается в том, что он обновляется довольно часто и в настоящее время имеет стабильный релиз который доступен, на базе Android Oreo.

Установить Android-x86 в вашей системе Linux довольно просто. Вам нужно загрузить ISO-файл Android-x86 в свою систему, создайть новую виртуальную машину в Virtual Box и установить ISO в качестве загрузочного устройства. Оттуда вы можете легко установить Android на свою виртуальную машину.

В целом, Android-x86 чувствует себя немного менее отзывчивым, чем Genymotion, но это не проблема, особенно если вы просто собираетесь использовать его для тестирования приложений. Если вам нужны игры, то Android-x86, вероятно, не тот эмулятор, который вам нужен.

3. Android SDK

Если вы разработчик и хотите использовать эмулятор, который официально поддерживается Google и позволяет создавать несколько виртуальных устройств, под управлением чего-либо от Android Lollipop до Android Pie, WearOS и даже Android TV тогда, вам нужен официальный менеджер Android Virtual Device (или AVD Manager), включенный в Android Studio.

Вам просто нужно установить Android Studio на вашей системе на базе Linux, и как только вы запустили программное обеспечение, вы можете просто перейти к «Tools -> AVD Manager«, чтобы создать свое первое виртуальное устройство в Android Studio.

Однако самая большая причина, по которой многие разработчики предпочитают использовать сторонний эмулятор вместо официального от Google, заключается в том, что он загружается довольно медленно. Конечно, со временем все улучшилось, но не настолько, чтобы обогнать по скорости Genymotion.

Однако для разработчиков это определенно самый гибкий вариант. В конце концов, он не только предлагает возможность создавать несколько виртуальных устройств под управлением чего-либо от Android 5 до Android 9 Pie, он также позволяет создавать виртуальные устройства Android TV и виртуальные устройства WearOS.

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

Вы можете повернуть эмулятор, изменить местоположение, батарею и условия сети, использовать камеру и многое другое с эмулятором Android Studio. Если вы разработчик, вам обязательно стоит попробовать его, прежде чем проверять другие эмуляторы.

4. Anbox

Anbox — один из самых уникальных эмуляторов Android в этом списке. Это не столько эмулятор, сколько своего рода Android Run Time (ART) в «песочнице», которая работает в системах GNU / Linux. Поставляется с версии Android 7.1 — что очень удобно для эмулятора.

Единственная причина, по которой Anbox так далеко в списке, заключается в том, что у него есть некоторые явные проблемы. Для начала, эмулятор не поставляется с установленным Google Apps на нем, что означает, что нет Play Store, нет Play Services и т. д. Итак, если вы планируете установить, скажем, PUBG Mobile, вы столкнетесь с множеством проблем.

Я попытался установить казуальную игру (Pigeon Pop), для которой требуется установить Play Games на устройство, которое Anbox не поддерживает. Так что да, есть проблемы.

Кроме того, если вы разработчик, который пытается протестировать собственное приложение на Anbox, вы не сможете просто перетащить, чтобы установить его. Вместо этого вам придется использовать ADB для установки APK на Anbox с помощью команды ‘adb install

Что еще хуже, так это то, что установка Anbox может быть немного «затруднительна» для начинающих пользователей Linux. Это двухэтапный процесс, где вы должны сначала установить несколько модулей ядра, а затем загрузить саму «основу» Anbox, прежде чем запускать среду выполнения.

К счастью, веб-сайт Anbox делает довольно солидную работу, объясняя, как можно сделать это. Имейте в виду, что если вы столкнетесь с проблемами при загрузке модулей ядра, вы можете столкнуться с той же проблемой, что я описал с Genymotion, поэтому попробуйте использовать то же решение.

5. ARChon

Если вы хотите запускать приложения Android в своей системе Linux без необходимости устанавливать для них отдельный эмулятор, ARChon может вас заинтересовать. ARChon в основном позволяет запускать приложения для Android в Chrome.

Таким образом, вы можете проверять приложения, не беспокоясь о загрузке эмуляторов, создании виртуального устройства или о проблеме с безопасной загрузкой UEFI, которая возникла в Genymotion.

Archon просто устанавливается как расширение Chrome в вашей системе (есть инструкции на веб-сайте) и оттуда вы можете использовать любой из различных инструментов, упомянутых на веб-сайте, для конвертации приложения для Android, в приложения, совместимые с ARChon, и просто запускать их прямо в Chrome.

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

Запустите Android-приложения на Linux с помощью этих эмуляторов

Это были 5 лучших эмуляторов Android для Linux, которые, могут вам понравиться. Если вы хотите протестировать разрабатываемое приложение или просто опробовать новое приложение для Android на своем ПК с Linux, эти эмуляторы должны соответствовать вашим ожиданиям.

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

В процессе работы над одним проектов возникла ситуация, когда необходимо проводить в автоматическом режиме ряд операций из мобильного приложения. Поскольку набор входных данных, которые вводит пользователь для работы приложения меняется, была необходима реализация, которая позволила бы имитировать действия пользователя. Более того, необходимо было, чтобы приложение запускалось автоматически на удаленном linux-сервере, выполняло действия и сохраняло результаты. О том, как решал данную задачу, я и хочу рассказать читателям.

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

Требования и инструменты

Главным требованием было то, что приложение должно запускаться на linux-сервере. Для меня это значило, что привычного мне, заядлому «виндузятнику», графического интерфейса не будет со всеми вытекающими из этого сложностями. Также среди полезных пожеланий была возможность вести отладку все на том же сервере при необходимости.

Для реализации использовались:

  1. Среда разработки — IntelliJ IDEA;
  2. Удаленный сервер linux — Debian 7;
  3. Android SDK;
  4. Putty — для реализации удаленной отладки.

Шаг 1. Разворачиваем SDK

Сам Android SDK можно взять отсюда. Для его работы, разумеется, необходим предустановленный JDK, у меня это была версия 1.7. Ранее была необходима именно х86 версия, но начиная с некоторых последних версий данная проблема отпала. После того как Android SDK у нас есть, начинаем его устанавливать и настраивать:

  1. Копируем архив на нашу linux-машину и распаковываем в нужный каталог;
  2. Далее обновляем наш SDK.
    Тут два варианта. Первый, когда вы точно знаете, что вам необходимо, тогда получаем список доступных библиотек:

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

Второй вариант скачать все, что доступно на текущий момент. Мне он оказался ближе, потому что сам я не разработчик Android и не был уверен, что выберу все, что нужно:

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

  • Ждем окончания загрузки пакетов.
  • Далее для простоты управления можно добавить утилиты adb, android, emulator из каталогов platform-tools и tools в системные переменные, но я запускал их просто из каталога.

    Шаг 2. Создаем и запускаем Android Virtual Device

    Теперь нам необходимо создать наше виртуальное устройство, тут тоже ничего сложного, команда для этого стандартная:

    Имя устройства — ну тут все и так понятно.
    Порядковый номер версии ОС Android — его можно увидеть в списке доступных версий для создания устройства. Сам список можно получить командой:

    Набор инструкций процессора — какой процессор эмулировать, если для версии Android использовался только один вариант процессора, то данный параметр можно проигнорировать, иначе в ответ на команду утилита выдаст сообщение о необходимости явно указать набор инструкций, а также укажет возможные варианты. Например, у меня значение этого параметра было default/armeabi.

    После этого создает папку с набором файлов виртуального устройства, расположен он в каталоге */.android/avd, который находится или в директории root, или в директории, где расположен сам SDK (зависит от прав пользователя). Имя каталога с файлами совпадает с именем виртуального устройства.

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

    -no-window — указывает на запуск с отключенным экраном.
    Имя устройства — имя, которое мы указали при создании устройства выше.
    Более подробное описание и другие ключи для запуска можно найти здесь.

    Теперь нужно дождаться, пока устройство загрузится:

    Теперь нам осталось только установить наши приложения: основное, которое обращается к серверу, и robotium-приложение, которое умеет обращаться к основному и выполнять действия:

    -r — данный ключ показывает, что если приложение уже существует, то перезаписать его.
    Имя приложения — имя вашего apk-файла с расширением.

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

    Шаг 3. Запуск приложений

    Запустить robotium-приложение достаточно просто (я приведу конкретный пример для наглядности):

    emulator-5554 – имя эмулятора, обычно оно стандартно, если эмулятор запущен в системе один, но посмотреть список доступных запущенных устройство можно командой:

    e class com.example.robotium.Kernel – имя класса в robotium-приложении, непосредственно выполняющего тесты.
    com.example– имя package из файла AndroidManifest.xml для robotium-приложения.

    Казалось бы, вот и финиш, но не тут-то было. Приложение стартовало, какое-то время выполнялось и выпадало с ошибкой. Все оказалось банально, при запуске эмулятор стартует с заблокированным экраном – и ему все равно отображается этот экран или нет. Одна из первых ссылок в поисковике советует нам просто вбить команду:

    Тест на своей windows-машине показал, что это работает, причем независимо от того запущен эмулятор с параметром –no-window, и без него. А вот запуск на debian-е не дал ничего, ошибка повторялось, а значит причина в другом, предположил я. Долгие поиски не дали ничего конкретного, видимо, мало кому приходит в голову гонять тесты для GUI на терминальном сервере. В основном встречались комментарии, что поскольку тесты эти для gui, то и работать они при отключенном экране не могут, мол, нет GUI отображающегося, нет и тестов для них. Но у меня ситуация была из разряда «партия сказала надо» и придти с таким ответом к своему teamlead-у я не мог, поэтому я взял за аксиому, что экран просто не разблокировался, к сожалению проверить визуально как оно было на самом деле я не смог, сервер терминальный все-таки. Добавил дополнительные проверки на состояние экрана в момент запуска и действительно оказалось, что экран мало того, что не разблокирован, но и еще выключен – подвела-таки команда.

    Проблему решить помогла программная разблокировка. Для этого в robotium-приложении добавляем код:

    Чтобы данный код заработал в файл AndroidManifest.xml необходимо добавить следующие строчки:

    Следует отметить, что добавлять нужно не в файл robotium-приложения, а в файл тестируемого приложения, потому что вся работа с ОС Android ведется именно через него, а значит ему и нужны все права на доступ.

    После этого еще раз выполняем описанную ранее команду — ура, все запустилось все работает.

    Шаг 4. Настройка удаленной отладки

    К сожалению, с нуля, ни сама Android SDK, ни IDEA не умеют работать с виртуальными устройствами на удаленных серверах, а значит заставим их думать, что устройство здесь, рядом. Для этого настроим в Putty туннель к нашему серверу. Для этого надо добавить два порта — для устройства emulator-5554 это будут порты 5554 и 5555. Для уточнения на всякий случай пример на изображении:

    Теперь на удаленном сервере выключаем сервис ADB:

    А на локальной машине запускаем или перезапускаем (сразу выключив):

    Теперь если выполнить команду ./adb devices — мы увидим удаленные запущенные устройства. К сожалению, запускать эмуляторы удаленно мы не можем, только видеть уже запущенные, ну и работать с ними. Теперь, при запуске robotium-приложения непосредственно из IDEA в диалоге выбора устройства мы увидим и наш удаленный эмулятор (см. изображение). С ним можно работать точно так же как и с локальным.

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


    [an error occurred while processing the directive]
    Карта сайта