...
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 Java 8, plus précisément openjdk-8 (cf. https://doc.ubuntu-fr.org/java)
- Télécharger les outils en ligne de commande : https://developer.android.com/studio#command-tools
- Décompresser son contenu dans
/opt/android-sdk
sudo mkdir -p /opt/android-sdk
- Mettre les variables d'environnement en place (cf. https://doc.ubuntu-fr.org/variables_d_environnement#variables_d_environnement_persistantes) :
ANDROID_SDK_ROOT=/opt/android-sdk
- ajouter à
PATH
:/opt/android-sdk/emulator
/opt/android-sdk/platform-tools
/opt/android-sdk/tools/bin
- Donner les droits au dossier pour le groupe
android-sdk
groupadd android-sdk
gpasswd -a $USER android-sdk
setfacl -R -m g:android-sdk:rwx /opt/android-sdk
setfacl -d -m g:android-sdk:rwX /opt/android-sdk
chown :android-sdk /opt/android-sdk -R
chmod u+w /opt/android-sdk
- ⚠️ vous devez vous relogguez ou exécuter
newgrp android-sdk
Installer tools
: 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.
Instructions spécifiques
Retrouvez ici les lignes de commandes correspondant aux étapes décrites dans le chapitre ci-dessus.
Ubuntu
Bloc de code |
---|
|
$ cd ~
$ wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip
$ sudo mkdir -p /opt/android-sdk
$ sudo unzip ~/commandlinetools-linux-6609375_latest.zip -d /opt/android-sdk
$ groupadd android-sdk
$ gpasswd -a $USER android-sdk
$ setfacl -R -m g:android-sdk:rwx /opt/android-sdk
$ setfacl -d -m g:android-sdk:rwX /opt/android-sdk
$ chown :android-sdk /opt/android-sdk -R
$ chmod u+w /opt/android-sdk
$ newgrp android-sdk
$ sdkmanager --sdk_root=/opt/android-sdk "tools" |
Arch Linux
cf. https://wiki.archlinux.org/index.php/Android#SDK_packages et https://wiki.archlinux.org/index.php/Android#Making_/opt/android-sdk_group-writeable
Bloc de code |
---|
|
$ yay -S android-sdk
$ groupadd android-sdk
$ gpasswd -a $USER android-sdk
$ setfacl -R -m g:android-sdk:rwx /opt/android-sdk
$ setfacl -d -m g:android-sdk:rwX /opt/android-sdk
$ chown :android-sdk /opt/android-sdk -R
$ chmod u+w /opt/android-sdk
$ newgrp android-sdk
$ sdkmanager --sdk_root=/opt/android-sdk "tools" |
Android Virtual Device
Gérer les SDK et outils
Quelques commandes utiles de sdkmanager :
Bloc de code |
---|
|
$ 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
Bloc de code |
---|
|
$ echo $PATH
…:/opt/android-sdk/emulator:/opt/android-sdk/platform-tools:/opt/android-sdk/tools/bin:/opt/android-sdk/emulator |
- vérifier ANDROID_SDK_ROOT
Bloc de code |
---|
|
$ echo $ANDROID_SDK_ROOT
/opt/android-sdk |
- vérifier les droits dans le dossier d'installation
Bloc de code |
---|
|
$ ll -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é
Bloc de code |
---|
|
$ 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 AVDs
Avant de créer un AVD (Android Virtual Device), il vous faut une image système installée sur votre environnement.
Ensuite vous pouvez créer un AVD selon un profil de hardware.
Si ce n'est pas le cas, installez les éléments nécessaires :
Bloc de code |
---|
|
$ sdkmanager "platform-tools" "emulator" "platforms;android-30" "system-images;android-30;google_apis;x86_64"
|
Enfin, vous pouvez créer un AVD suivant l'image souhaitée :
Bloc de code |
---|
|
$ avdmanager create avd -n avd-android30-pixel -k "system-images;android-30;google_apis;x86_64" --device "pixel" |
Ensuite vous pouvez démarrer votre AVD à partir de la ligne de commande :
Bloc de code |
---|
|
$ emulator -avd avd-android30-pixel |
Astuces
Clavier physique
Pour utiliser le clavier physique de votre ordinateur dans l'émulateur, modifier la valeur de la variable hw.keyboard
dans le fichier ~/.android/avd/avd-android30-pixel.avd/config.ini
Bloc de code |
---|
|
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
Bloc de code |
---|
|
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
Screenshots
Image ModifiedImage ModifiedImage ModifiedImage Modified
Problèmes connus
Erreur sdkmanager "Could not create settings"
Quelle que soit la commande de `sdkmanager`, on obtient cette réponse :
Bloc de code |
---|
|
$ 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) |
Info |
---|
|
Il faut aider l'application java à trouver le root sdk : Bloc de code |
---|
$ 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`.
Info |
---|
|
Bloc de code |
---|
$ sudo chmod g+w /opt/android-sdk |
|
Erreur emulator "PANIC: Broken AVD system path. Check your ANDROID_SDK_ROOT value [/opt/android-sdk]!"
cf. https://stackoverflow.com/questions/39645178/panic-broken-avd-system-path-check-your-android-sdk-root-value
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é 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
)
Références
...
https://medium.com/michael-wallace/how-to-install-android-sdk-and-setup-avd-emulator-without-android-studio-aeb55c014264
...
Präsentation
Diese Seite führt Sie durch die Installation einer virtuellen Android-Umgebung unter Linux.
Wenn Sie Android Studio (rich IDE) nicht benötigen, können Sie nur das Nötigste installieren, um eine virtuelle Android-Maschine einzurichten.
Voraussetzung
Bevor die virtuelle Maschine selbst installiert wird, müssen eine Reihe von Umgebungsvariablen eingerichtet und sdkmanager installiert werden.
Nachfolgend die Aktionen, die entsprechend Ihrer Distribution auszuführen sind (generische Aktionen, entsprechende Befehle für bestimmte Distributionen).
Generisches Linux
- Installieren Sie Java 8, genauer gesagt openjdk-8 (siehe https://doc.ubuntu-fr.org/java)
- Download der Kommandozeilen-Tools: https: //developer.android.com/studio#command-tools
- Den Inhalt dekomprimieren in
/opt/android-sdk
sudo mkdir -p /opt/android-sdk
- Umgebungsvariablen einrichten (siehe https://doc.ubuntu-fr.org/variables_d_environnement#variables_d_environnement_persistantes):
ANDROID_SDK_ROOT=/opt/android-sdk
- zu
PATH
hinzufügen:/opt/android-sdk/emulator
/opt/android-sdk/platform-tools
/opt/android-sdk/tools/bin
- Die Ordner-Rechte für die Gruppe
android-sdk
vergebengroupadd android-sdk
gpasswd -a $USER android-sdk
setfacl -R -m g:android-sdk:rwx /opt/android-sdk
setfacl -d -m g:android-sdk:rwX /opt/android-sdk
chown :android-sdk /opt/android-sdk -R
chmod u+w /opt/android-sdk
- ⚠️ Loggen Sie sich erneut ein oder führen Sie
newgrp android-sdk
aus Tools
installieren: sdkmanager --sdk_root=/opt/android-sdk "tools"
Jetzt haben Sie alles, was Sie für die Verwaltung der Kommandozeilen-Tools in Ihrer Umgebung brauchen.
Spezifische Anweisungen
Im Folgenden die Kommandozeilen, die den im obigen Kapitel beschriebenen Schritten entsprechen.
Ubuntu
Bloc de code |
---|
|
$ cd ~
$ wget https://dl.google.com/android/repository/commandlinetools-linux-6609375_latest.zip
$ sudo mkdir -p /opt/android-sdk
$ sudo unzip ~/commandlinetools-linux-6609375_latest.zip -d /opt/android-sdk
$ groupadd android-sdk
$ gpasswd -a $USER android-sdk
$ setfacl -R -m g:android-sdk:rwx /opt/android-sdk
$ setfacl -d -m g:android-sdk:rwX /opt/android-sdk
$ chown :android-sdk /opt/android-sdk -R
$ chmod u+w /opt/android-sdk
$ newgrp android-sdk
$ sdkmanager --sdk_root=/opt/android-sdk "tools" |
Arch Linux
vgl. https://wiki.archlinux.org/index.php/Android#SDK_packages und https://wiki.archlinux.org/index.php/Android#Making_/opt/android-sdk_group-writeable
Bloc de code |
---|
|
$ yay -S android-sdk
$ groupadd android-sdk
$ gpasswd -a $USER android-sdk
$ setfacl -R -m g:android-sdk:rwx /opt/android-sdk
$ setfacl -d -m g:android-sdk:rwX /opt/android-sdk
$ chown :android-sdk /opt/android-sdk -R
$ chmod u+w /opt/android-sdk
$ newgrp android-sdk
$ sdkmanager --sdk_root=/opt/android-sdk "tools" |
Android Virtual Device
Verwalten von SDKs und Tools
Einige nützliche sdkmanager-Befehle:
Bloc de code |
---|
|
$ sdkmanager --list
$ sdkmanager --update |
Bevor Sie fortfahren, vergewissern Sie sich, dass alle Voraussetzungen erfüllt sind:
- überprüfen Sie den PATH für den Zugriff auf die Befehle
Bloc de code |
---|
|
$ echo $PATH
…:/opt/android-sdk/emulator:/opt/android-sdk/platform-tools:/opt/android-sdk/tools/bin:/opt/android-sdk/emulator |
- ANDROID_SDK_ROOT überprüfen
Bloc de code |
---|
|
$ echo $ANDROID_SDK_ROOT
/opt/android-sdk |
- Prüfen Sie die Rechte im Installationsordner
Bloc de code |
---|
|
$ ll -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 |
- Prüfen Sie, was installiert ist
Bloc de code |
---|
|
$ 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/ |
AVDs verwalten
Bevor Sie ein AVD (Android Virtual Device) erstellen, müssen Sie ein System-Image auf Ihrer Umgebung installieren.
Erstellen Sie anschließen ein AVD entsprechend eines Hardware-Profils.
Ist dies nicht der Fall, installieren Sie die erforderlichen Elemente:
Bloc de code |
---|
|
$ sdkmanager "platform-tools" "emulator" "platforms;android-30" "system-images;android-30;google_apis;x86_64"
|
Schließlich können Sie ein AVD entsprechend dem gewünschten Bild erstellen:
Bloc de code |
---|
|
$ avdmanager create avd -n avd-android30-pixel -k "system-images;android-30;google_apis;x86_64" --device "pixel" |
Starten Sie Ihr AVD dann ab der folgenden Kommandozeile:
Bloc de code |
---|
|
$ emulator -avd avd-android30-pixel |
Tipps
Physische Tastatur
Um die physische Tastatur Ihres Computers im Emulator zu verwenden, ändern Sie den Wert der Variablen hw.keyboard
in der Datei ~/.android/avd/avd-android30-pixel.avd/config.ini
Bloc de code |
---|
|
hw.keyboard = yes |
Handhabung des Emulators
Es können Befehle an den Emulator gesendet werden, um bestimmte Aktivitäten zu simulieren: Empfang einer SMS, Änderung der GPS-Position, Leistung des GSM, usw.
Die Liste der möglichen Aktionen finden Sie hier: https: //developer.android.com/studio/run/emulator-console
Bloc de code |
---|
|
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 |
Öffnen einer Root-Shell
Erstellen Sie eine Root-Shell-Konsole auf dem aktuellen Terminal. Sie unterscheidet sich vom Shell-Befehl adb in den folgenden Punkten:
- Sie erstellt eine Root-Shell, die es ermöglicht, viele Teile des Systems zu ändern.
- Sie funktioniert auch, wenn der adb-Daemon im emulierten System defekt ist.
- Durch Drücken von Strg+C (⌘C) wird der Emulator statt der Shell angehalten.
siehe https://developer. android.com/studio/run/emulator-commandline#advanced
Screenshots
Image RemovedImage RemovedImage RemovedImage Removed
Bekannte Probleme
Fehler sdkmanager "Could not create settings"
Ungeachtet des `sdkmanager'-Befehls erhalten wir diese Antwort:
Bloc de code |
---|
|
$ 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) |
Info |
---|
|
Die Java-Anwendung braucht Hilfe, um das Root Sdk zu finden: Bloc de code |
---|
$ sdkmanager --sdk_root=/opt/android-sdk --list |
|
Fehler "Warning: Failed to read or create install properties file."
Es kann nicht in das Verzeichnis `/opt/android-sdk` geschrieben werden.
Info |
---|
|
Bloc de code |
---|
$ sudo chmod g+w /opt/android-sdk |
|
Fehler Emulator "PANIC: Broken AVD system path. Überprüfen Sie Ihren ANDROID_SDK_ROOT-Wert [/opt/android-sdk]!"
Siehe https://stackoverflow.com/questions/39645178/panic-broken-avd-system-path-check-your-android-sdk-root-value
Emulator-Fehler
Es gibt zwei Binaries in der Installation /opt/android-sdk/tools/emulator
und /opt/android-sdk/emulator
. Das ist ein wenig undurchsichtig.
Weniger Probleme traten mit der in /opt/android-sdk/emulator
installierten Version auf (siehe sdkmanager --list
). Abhängig von der Variable $PATH
wird jedoch das andere Binary verwendet (siehe which emulator
)
...