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

Автор: | 21/11/2018
 

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

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

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

Установка Android Studio

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

[simterm]

$ yaourt -S android-studio

[/simterm]

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

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

sdkmanager

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

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

[simterm]

$ ./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                            
...

[/simterm]

AVD

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

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

[simterm]

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

[/simterm]

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

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

[simterm]

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

[/simterm]

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

[simterm]

$ ./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

[/simterm]

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

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

[simterm]

$ ./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  

[/simterm]

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

[simterm]

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

[/simterm]

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

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

[simterm]

$ ./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

[/simterm]

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

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

[simterm]

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

[/simterm]

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