- Запуск приложений в Android Virtual Device на удаленном Linux-сервере
- Требования и инструменты
- Шаг 1. Разворачиваем SDK
- Шаг 2. Создаем и запускаем Android Virtual Device
- Шаг 3. Запуск приложений
- Шаг 4. Настройка удаленной отладки
- Create & Manage Android Virtual Device
- What is AVD Manager?
- How to Install AVD Manager?
- What is Android Emulator
- Why use Android Emulator
- How does the Emulator work
- How to Install Android Emulator
- System Requirement to run Android Emulator
- What is an Android Virtual Device
- Creating AVD
- Create New Virtual Device
- Select Hardware
- Select System Image
- Verify Configuration
- Managing the AVD
- Running/Stopping the AVD
- References
- Summary
Запуск приложений в Android Virtual Device на удаленном Linux-сервере
В процессе работы над одним проектов возникла ситуация, когда необходимо проводить в автоматическом режиме ряд операций из мобильного приложения. Поскольку набор входных данных, которые вводит пользователь для работы приложения меняется, была необходима реализация, которая позволила бы имитировать действия пользователя. Более того, необходимо было, чтобы приложение запускалось автоматически на удаленном linux-сервере, выполняло действия и сохраняло результаты. О том, как решал данную задачу, я и хочу рассказать читателям.
Первая часть задачи решалась достаточно просто — взять библиотеку для тестирования мобильных приложений и реализовать необходимую логику. Выбор пал на Robotium. Во-первых, он бесплатный, во-вторых он позволяет достаточно удобно работать с тестируемым приложением, по крайней мере для меня. Не буду акцентировать внимание на реализации тестов, этому посвящены другие статьи, напомню только, что в результате получается еще одно приложение, которое умеет запускать тестируемое приложение, анализировать, что оно отображает и т.д. Вторая часть работы имела гораздо больше всевозможных подводных камней, но обо всем по порядку.
Требования и инструменты
Главным требованием было то, что приложение должно запускаться на linux-сервере. Для меня это значило, что привычного мне, заядлому «виндузятнику», графического интерфейса не будет со всеми вытекающими из этого сложностями. Также среди полезных пожеланий была возможность вести отладку все на том же сервере при необходимости.
Для реализации использовались:
- Среда разработки — IntelliJ IDEA;
- Удаленный сервер linux — Debian 7;
- Android SDK;
- Putty — для реализации удаленной отладки.
Шаг 1. Разворачиваем SDK
Сам Android SDK можно взять отсюда. Для его работы, разумеется, необходим предустановленный JDK, у меня это была версия 1.7. Ранее была необходима именно х86 версия, но начиная с некоторых последних версий данная проблема отпала. После того как Android SDK у нас есть, начинаем его устанавливать и настраивать:
- Копируем архив на нашу linux-машину и распаковываем в нужный каталог;
- Далее обновляем наш 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 в диалоге выбора устройства мы увидим и наш удаленный эмулятор (см. изображение). С ним можно работать точно так же как и с локальным.
Спасибо за внимание, надеюсь данный пост будет полезен еще кому-то, потому что мне его в свое время очень не хватало.
Источник
Create & Manage Android Virtual Device
This is a guide on how to Create & Manage Android Virtual Device (AVD) in Android Studio. We learned how to install Android Studio in the windows. Before starting with the Android App development using Android Studio, we need to create an Android Virtual Device (AVD). The AVD is then used by the Android emulator to mimic the real device so that we can test our application. To Create AVD we first need to Install AVD Manager. We also need to Install Android Emulator. We will learn all these in this guide.
Before going further, we need to know what is AVD Manager, AVD ( Android Virtual Device) and Android Emulator.
Table of Contents
What is AVD Manager?
The AVD Manager is a GUI interface provided by Android Studio to create and manage Android Virtual Devices. We can create as many as AVD’s and configure them by specifying the hardware and software parameters.
You can access the AVD Manager from the Android Studio from the menu Tools -> AVD Manager ( or Tools -> Android -> AVD Manager in the older version of the studio).
How to Install AVD Manager?
AVD Manager is installed, when you install Android Studio. We have an article on how to Install Android Studio, which you can refer to.
What is Android Emulator
The Android emulator is a program that takes the configuration from the Android Virtual Device (AVD). It then simulates the device on your computer. The emulator allows us to develop and test Android applications without using a real device. The Android Emulator needs AVD to run. You need to specify which AVD to use to the Android Emulator and emulator mimics the device.
Why use Android Emulator
You can use the real device to run and test your Android application, which is actually a better and faster way to test your app
But, you need a device of every size, type (like the tablet, phone, wear, tv), etc and with the various configuration like RAM, API Version, Network supported, etc. This is something which is not possible if you are using the real device. Also, the devices with the new features keep coming out at regular intervals.
With Android Emulator you can create a virtual device of any configuration, size, type. You can test your app on various types of devices simultaneously before releasing it to the Production.
How does the Emulator work
The Android emulator uses the Operating system Virtualization technologies to mimic the real device on your PC.
Operating system virtualization is the technique, where software is used to run many operating systems in the hardware at the same time. Some of the virtualization technologies used in windows are
Intel’s HAXM (Hardware Accelerated Execution Manager) is used by the Android Emulator.
A Windows CPU can support only one virtualization technology at a time. The Hyper-V is installed, when you install the Windows OS. if it is enabled, you need to disable it.
How to Install Android Emulator
The Android Emulator is installed, when you install Android Studio.
You can go to Android SDK Manager -> SDK Tools and check if the Android Emulator is installed or not. You can also check if the updates are available. select the checkbox and click on the OK button to install or update the Android Emulator.
System Requirement to run Android Emulator
Android Emulator is notorious to consume a lot of memory & CPU. I would recommend a minimum of 16GB RAM and the latest CPU.
The latest version of the Android Emulator does not support 32bit OS. The support for the older 32-bit version will stop in June 2020. Hence prepare to move to 64bit OS at earliest.
The following is the recommended system configuration for Android Emulator.
- Microsoft Windows 7 and above either 32bit/64bit.
- 3 GB RAM minimum, 8 GB RAM recommended
- 2 GB of available disk space minimum,
- 4 GB Hard disk space Recommended (500 MB for IDE + 1.5 GB for Android SDK and emulator system image)
- 1280 x 800 minimum screen resolution
What is an Android Virtual Device
An Android Virtual Device (AVD) is an emulator configuration that represents a specific Android device. An AVD contains a hardware profile, system image, storage area, skin, and other properties specific to the device.
You have to create AVD for every device that you want to test.
Creating AVD
- Start Android Studio and open the AVD Manager
- Tools -> AVD Manager ( or Tools -> Android -> AVD Manager )
- Click the AVD Manager icon in the toolbar.
Create New Virtual Device
If you are starting the AVD Manager for the first time, you will see the following screen. Else you will see the list of AVDs created.
Click on Create Virtual Device to continue
Select Hardware
This will take you to select Hardware Page. This page lists the devices which can be used to generate the Android Virtual Device
In the left-hand panel displays a list of the Category of the device. It includes TV, Phone, Wear & Tablet. Select the category.
The middle pane displays the list of devices available. Select one based on the requirement of your app. After this click on the Next button.
Note that phones with larger resolution Choose the pixels resolution according to your requirements as it will take huge RAM in large pixels resolution device. If your computer has low RAM then prefer to choose less resolution device.
Click Next to continue
Select System Image
The Recommend tab lists the recommended system images for the Hardware you have selected in the last page. There x86 images and other images tabs also display the list of images.
The download link next to each system image name indicates that the image is not yet downloaded into the system. Click on download to download the image.
Choose the system image based on the API level targeted by your App. The app won’t run if you choose lower API than the one target by the App
Select the image and click on Next to continue.
Verify Configuration
The Final Window is Verify Configuration.
Here you can name your AVD, change startup orientation and few other hardware properties. Click on Show Advanced Settings to show more settings.
Click on Finish to create the AVD.
Managing the AVD
Opening the AVD Manager takes you to the List of AVDS
Running/Stopping the AVD
Under the action column, click on the icon to run the AVD. The Android Emulator uses the AVD to mimic the device. You can then use the control panel to manage the device. The Extend control button at the bottom gives you more options.
Click on the icon to edit the AVD. Right-click anywhere on the device and click on delete to delete. Right-Click menu also gives options to duplicate, delete, wipe data, cold start & stop the AVD.
References
Summary
In this tutorial, we learned how to create and manage Android Virtual Devices. In the next tutorial, we will how to create a Simple NativeScript Application
Источник