Android Studio: установка на Linux и работа с Android Virtual Devices

By | 11/21/2018
 

Есть у нас UI-автотесты, которые немного поломались – надо пофиксить, заодно появился повод вообще с ними разобраться.

Для тестирования используется Android Virtual Device и эмулятор из Android Studio. В этом посте – установка студии и создание такого устройства, в следующем – запуск Appium тестов на нём.

Установка и запуск выполняются на Arch Linux, но процесс не специфичен для этой системы.

Установка Android Studio

Устанавливаем Android Studio:

yaourt -S android-studio

Кроме самой студии потребуется эмулятор девайсов – Android Emulator, он будет установлен во время первого запуска Студии:

Либо можно установить из AUR – android-emulator.

sdkmanager

Для управления пакетами в Android Studio используется sdkmanager.

Получаем список установленных пакетов:

./Android/Sdk/tools/bin/sdkmanager --list
Warning: File /home/setevoy/.android/repositories.cfg could not be loaded.
Installed packages:=====================] 100% Computing updates...
Path                                                                              | Version | Description                        | Location
-------                                                                           | ------- | -------                            | -------
build-tools;28.0.3                                                                | 28.0.3  | Android SDK Build-Tools 28.0.3     | build-tools/28.0.3/
emulator                                                                          | 28.0.16 | Android Emulator                   | emulator/
extras;android;m2repository                                                       | 47.0.0  | Android Support Repository         | extras/android/m2repository/
extras;google;m2repository                                                        | 58      | Google Repository                  | extras/google/m2repository/
extras;m2repository;com;android;support;constraint;constraint-layout-solver;1.0.2 | 1       | Solver for ConstraintLayout 1.0.2  | extras/m2repository/com/android/support/constraint/constraint-layout-solver/1.0.2/
extras;m2repository;com;android;support;constraint;constraint-layout;1.0.2        | 1       | ConstraintLayout for Android 1.0.2 | extras/m2repository/com/android/support/constraint/constraint-layout/1.0.2/
patcher;v4                                                                        | 1       | SDK Patch Applier v4               | patcher/v4/
platform-tools                                                                    | 28.0.1  | Android SDK Platform-Tools         | platform-tools/
platforms;android-28                                                              | 6       | Android SDK Platform 28            | platforms/android-28/
sources;android-28                                                                | 1       | Sources for Android 28             | sources/android-28/
tools                                                                             | 26.1.1  | Android SDK Tools                  | tools/
Available Packages:
Path                                                                                     | Version      | Description
-------                                                                                  | -------      | -------
add-ons;addon-google_apis-google-15                                                      | 3            | Google APIs
add-ons;addon-google_apis-google-16                                                      | 4            | Google APIs
add-ons;addon-google_apis-google-17                                                      | 4            | Google APIs
...

AVD

AVD – Android Virtual Device, для управления используем avdmanager.

Получаем список имеющихся вирутальных устройств – пока тут пусто:

./Android/Sdk/tools/bin/avdmanager list avd
Available Android Virtual Devices:

Мне надо создать устройство – телефон Nexus и с API v26.

Находим девайс в списке поддерживаемых:

./Android/Sdk/tools/bin/avdmanager list | grep -A 2 "Nexus 5X"
id: 9 or "Nexus 5X"
Name: Nexus 5X
OEM : Google

Находим пакет с нужной версией API с помощью sdkmanager (тут немного поломалось форматирование, в консоли оно выглядит приятнее):

./Android/Sdk/tools/bin/sdkmanager --list | grep 26
Warning: File /home/setevoy/.android/repositories.cfg could not be loaded.
tools                                                                             | 26.1.1  | Android SDK Tools                  | tools/
build-tools;26.0.0                                                                       | 26.0.0       | Android SDK Build-Tools 26
build-tools;26.0.1                                                                       | 26.0.1       | Android SDK Build-Tools 26.0.1
build-tools;26.0.2                                                                       | 26.0.2       | Android SDK Build-Tools 26.0.2
build-tools;26.0.3                                                                       | 26.0.3       | Android SDK Build-Tools 26.0.3
platforms;android-26                                                                     | 2            | Android SDK Platform 26
sources;android-26                                                                       | 1            | Sources for Android 26
system-images;android-26;android-tv;x86                                                  | 11           | Android TV Intel x86 Atom System Image
system-images;android-26;android-wear-cn;x86                                             | 4            | China version of Android Wear Intel x86 Atom System Image
system-images;android-26;android-wear;x86                                                | 4            | Android Wear Intel x86 Atom System Image
system-images;android-26;default;x86                                                     | 1            | Intel x86 Atom System Image
system-images;android-26;default;x86_64                                                  | 1            | Intel x86 Atom_64 System Image
system-images;android-26;google_apis;x86                                                 | 12           | Google APIs Intel x86 Atom System Image
system-images;android-26;google_apis;x86_64                                              | 12           | Google APIs Intel x86 Atom_64 System Image
system-images;android-26;google_apis_playstore;x86                                       | 7            | Google Play Intel x86 Atom System Image

Вот он – system-images;android-26;google_apis_playstore;x86.

Устанавливаем его:

./Android/Sdk/tools/bin/sdkmanager "system-images;android-26;google_apis_playstore;x86"
Warning: File /home/setevoy/.android/repositories.cfg could not be loaded.
License android-sdk-preview-license:    ] 10% Computing updates...
---------------------------------------
...
---------------------------------------
Accept? (y/N): y
[=======================================] 100% Unzipping... x86/vendor.img

Создаём новое устройство с помощью avdmanager create avd:

./Android/Sdk/tools/bin/avdmanager create avd --name Nexus_5X_API_26 -k "system-images;android-26;google_apis_playstore;x86" --device "Nexus 5X"

В --device указываем имя из результатов avdmanager list.

Проверяем устройства:

./Android/Sdk/tools/bin/avdmanager list avd
...
Name: Nexus_5X_API_26
Device: Nexus 5X (Google)
Path: /home/setevoy/.android/avd/Nexus_5X_API_26.avd
Target: Google Play (Google Inc.)
Based on: Android 8.0 (Oreo) Tag/ABI: google_apis_playstore/x86

Проверяем в самом Android Studio – Tools > AVD Manager:

Запускаем эмулятор:

./Android/Sdk/tools/emulator -avd Nexus_5X_API_26

Пока с этим всё – можно переходить к Appium.