Installation d'une VM Android
Cette page vous guide dans l'installation d'un environnement Android virtuel sous Linux.
Si vous n'avez pas besoin d'Android Studio (rich IDE), vous pouvez n'installer que le strict nécessaire pour monter une machine virtuelle Android.
Toutes les informations sur les outils en ligne de commande sont disponibles en ligne : https://developer.android.com/studio/command-line
Prérequis
Avant d'installer la machine virtuelle en elle-même, il est nécessaire de mettre en place un certain nombre de variables d'environnement et installer le sdkmanager.
Vous trouverez ci-dessous les actions à effectuer en fonction de votre distribution (actions génériques, commandes correspondantes pour certaines distributions).
Linux générique
Installer la dernière version d'openJDK' (cf. https://doc.ubuntu-fr.org/openjdk)
Télécharger les outils en ligne de commande : https://developer.android.com/studio#command-line-tools-only
Créer l'arborescence de répertoires qui accueillera le SDK :
sudo mkdir -p /opt/android-sdk/cmdline-tools
Décompresser le contenu de l'archive et renommer le répertoire parent
cmdline-tools
entools
Déplacer ou copier ce répertoire dans le répertoire créé précédemment :
sudo cp -r tools /opt/android-sdk/cmdline-tools
Mettre les variables d'environnement en place en ajoutant les 2 lignes suivantes au fichier
.profile
de l'utilisateur :export ANDROID_SDK_ROOT="/opt/android-sdk"
PATH="$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/cmdline-tools/tools/bin:$ANDROID_SDK_ROOT/emulator"Créer le groupe
android-sdk
, y inclure l'utilisateur courant et donner les droits sur le dossier :sudo groupadd android-sdk
sudo gpasswd -a $USER android-sdk
sudo setfacl -R -m g:android-sdk:rwx /opt/android-sdk
sudo setfacl -d -m g:android-sdk:rwX /opt/android-sdk
sudo chown :android-sdk /opt/android-sdk -R
sudo chmod u+w /opt/android-sdkinfoVous devez vous relogguez ou exécuter
newgrp android-sdk
Installer
tools
:/opt/android-sdk/cmdline-tools/bin/sdkmanager --sdk_root=/opt/android-sdk "tools"
Désormais vous avez tout le nécessaire pour utiliser les outils en ligne de commande afin de gérer votre environnement.
Android Virtual Device
Gérer les SDK et outils
Quelques commandes utiles de sdkmanager :
sdkmanager --list
sdkmanager --update
Avant de continuer assurez-vous d'avoir tous les prérequis en place :
- vérifier le PATH pour l'accès aux commandes
echo $PATH
/home/marie/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/opt/android-sdk/cmdline-tools/latest/bin:/opt/android-sdk/cmdline-tools/tools/bin
- vérifier ANDROID_SDK_ROOT
echo $ANDROID_SDK_ROOT
/opt/android-sdk
- vérifier les droits dans le dossier d'installation
$ ls -al -g $ANDROID_SDK_ROOT
Permissions Size User Group Date Modified Name
drwxrwxr-x@ - user android-sdk 14 Sep 13:13 emulator
drwxrwxr-x@ - user android-sdk 14 Sep 13:19 licenses
drwxrwxr-x@ - user android-sdk 14 Sep 13:11 patcher
drwxrwxr-x@ - user android-sdk 14 Sep 13:13 platform-tools
drwxrwxr-x@ - user android-sdk 14 Sep 13:19 system-images
drwxrwxr-x@ - user android-sdk 14 Sep 13:15 tools
- vérifier ce qui est installé
$ sdkmanager --list
Installed packages:=====================] 100% Computing updates...
Path | Version | Description | Location
------- | ------- | ------- | -------
emulator | 30.0.26 | Android Emulator | emulator/
patcher;v4 | 1 | SDK Patch Applier v4 | patcher/v4/
platform-tools | 30.0.4 | Android SDK Platform-Tools | platform-tools/
Gérer les machines virtuelles
Avant de créer un AVD (Android Virtual Device), il vous faut une image système installée sur votre environnement.
Si ce n'est pas le cas, installer les éléments nécessaires platforms
et platform-tools
:
sdkmanager "platforms;android-33" "system-images;android-33;google_apis;x86_64"
sdkmanager --install platform-tools
Ensuite, créer l'AVD suivant l'image installée :
avdmanager create avd -n avd-android33-pixel -k "system-images;android-33;google_apis;x86_64" --device "pixel"
Enfin, démarrer l'AVD à partir de la ligne de commande en utilisant le nom donné lors de la commande de création :
emulator -avd avd-android33-pixel
Pour liste les AVDs disponibles dans l'émulateur :
$ emulator -list-avds
avd-android30-pixel
avd-android33-pixel
Astuces
Clavier physique
Pour utiliser le clavier physique de l'ordinateur dans l'émulateur, modifier la valeur de la variable hw.keyboard
dans le fichier ~/.android/avd/<votre avd>/config.ini
hw.keyboard = yes
Manipuler l'émulateur
On peut envoyer des commandes à l'émulateur pour simuler des activités particulières : recevoir un sms, modifier la position du gps, la puissance du gsm, etc.
La liste des actions possibles est disponible ici : https://developer.android.com/studio/run/emulator-console
telnet localhost 5554
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Android Console: Authentication required
Android Console: type 'auth <auth_token>' to authenticate
Android Console: you can find your <auth_token> in
'/home/user/.emulator_console_auth_token'
OK
auth FEHdxl/bQ4B24S2l
Android Console: type 'help' for a list of commands
OK
sms send 4085555555 hi there
OK
Ouvrir un root shell
Créez une console root shell sur le terminal actuel. Elle diffère de la commande shell adb des manières suivantes :
- Elle crée un shell racine qui vous permet de modifier de nombreuses parties du système.
- Elle fonctionne même si le démon adb dans le système émulé est défectueux.
- En appuyant sur Ctrl+C (⌘C), l'émulateur s'arrête à la place du shell.
cf. https://developer.android.com/studio/run/emulator-commandline#advanced
Se connecter via ADB
adb devices
adb shell
emu64x:/ $ su
emu64x:/ # (you win!)
Screenshots
Problèmes connus
Erreur sdkmanager "Could not create settings"
Quelle que soit la commande de sdkmanager
, on obtient cette réponse :
$ sdkmanager --list
Warning: Could not create settings
java.lang.IllegalArgumentException
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.<init>(SdkManagerCliSettings.java:428)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:152)
at com.android.sdklib.tool.sdkmanager.SdkManagerCliSettings.createSettings(SdkManagerCliSettings.java:134)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:57)
at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48)
Solution
Il faut aider l'application java à trouver le root sdk :
sdkmanager --sdk_root=/opt/android-sdk --list
Erreur "Warning: Failed to read or create install properties file."
Impossible d'écrire dans le répertoire /opt/android-sdk
.
Solution
$ sudo chmod g+w /opt/android-sdk
Erreur emulator "PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [/opt/android-sdk]!"
Erreur emulator
Il y a deux binaires dans l'installation /opt/android-sdk/tools/emulator
et /opt/android-sdk/emulator/emulator
. C'est un peu obscur.
Moins de problèmes ont été rencontrés avec la version installée dans /opt/android-sdk/emulator
(cf. sdkmanager --list
). Pour autant selon la variable $PATH
, c'est l'autre binaire qui sera utilisé (cf. which emulator
)