Introduction
Une fois la plateforme et les APIs Android SDK installés, la seconde étape consiste à configurer les émulateurs des supports mobiles Android avec le gestionnaire AVD (Android Virtual Device). Le gestionnaire AVD est intégré dans la plateforme Android SDK.
Dans ce tutoriel, la plateforme Android SDK est installée sur une plateforme Windows XP avec les packages Android 2.3.3 et Android 4.1. Un émulateur est créé avec Android AVD Manager pour chaque version d’Android.
Sont présentés dans cet article les principes de fonctionnement de la technologie d’émulation d’un support mobile AVD :
images système et utilisateur (system.img
, userdata.img
, userdata-qemu.img
), familles de résolution et de densité de pixels (dpi) d’un appareil mobile, paramètres de configuration à l’émulation (config.ini
, hardware.ini
,
hardware-qemu.ini
)…
La création des supports mobiles AVD avec l’interface graphique d’Android AVD Manager
est très partiellement abordée, celle-ci ne permet pas notamment de personnaliser les chemins d’installation des composants d’un support mobile AVD (images, carte SD, partition cache…). En revanche, la gestion en lignes de
commandes avec le programme android
, qui offre plus de souplesse, est détaillée.
Les émulateurs Android peuvent être créés et paramétrés après l’intégration de la plateforme Android SDK dans l’outil de développement Eclipse, quoiqu’il en soit ce paramétrage constitue d’un point de vue pratique la seconde étape de la mise en place de la plateforme complète pour le développement d’applications mobiles Android.
Environnement Android SDK
Pour la plateforme Android SDK installée, les variables d’environnement Windows ci-dessous sont définies :
Variable | Description |
---|---|
%ANDROID_HOME% |
Répertoire racine |
%ANDROID_AVD% |
Répertoire d’installation des supports mobiles définis
(%ANDROID_HOME%\avd ) |
%ANDROID_SDK% |
Répertoire d’installation de la plateforme Android SDK
(%ANDROID_HOME%\android-sdk ) |
%ANDROID_TOOLS% |
Répertoire d’installation des outils de la plateforme
Android SDK (%ANDROID_SDK%\tools ), répertoire
contenant notamment les programmes android ,
apkbuilder , emulator , mksdcard , etc. |
La plateforme Android SDK (version 20.0.3) est installée dans le répertoire
%ANDROID_SDK%
(C:\Software\android\android-sdk
) avec les packages
suivants :
- Android 4.1 (API Level 16) : SDK et exemples
- Android 2.3.3 (API Level 10) : SDK et exemples
- Google APIs pour Android 4.1
- Google APIs pour Android 2.3.3
- Android Support Library
Pour plus d’informations sur l’installation et l’architecture de Google Android SDK : Google Android SDK - Installation de la plateforme de développement et architecture
Les supports mobiles AVD et l’émulation
L’émulation
Bien entendu, il est hors de question de déboguer un
projet Android sur ses smartphones ou tablettes Android.
La plateforme Android SDK propose donc la possibilité
de définir dessupports mobiles grâce à AVD avec un
niveau d’API (Android 2.3.3, Android 4.1…) afin
d’émuler l’utilisation d’un smartphone ou d’une tablette
Android dans l’environnement de développement (voir
image ci-contre).
Les applications Android en cours de développement sont
déployées dans l’émulateur.
Dans la pratique, un support mobile AVD est défini par
niveau d’API Android et par résolution de l’appareil mobile
(Nexus S, Nexus One, Galaxy SII, Tablettes, etc.). Les
niveaux d’API disponibles dépendent des packages Android
installés dans la plateforme Android SDK.
Dans ce tutoriel, 2 supports mobiles AVD sont créés pour :
|
Principe de fonctionnement
Architecture des images systèmes
En fonction du niveau d’API choisi, l’émulateur lance l’image
système Android correspondante.
Installée lors de la descente des packages Android,
cette image est un fichier system.img
qui contient le système d’exploitation Android.
À l’intérieur de l’image Android sont
incluses les 2 couches essentielles, à savoir :
|
Répertoire d’installation des images systèmes
Historiquement, les images systèmes (system.img
) d’Android 1.x, 2.x et 3.x
utilisées par l’émulateur sont installées dans le répertoire
%ANDROID_HOME_SDK%\platforms\android-<api-level>\images
.
À partir de la version 4.0, les images systèmes sont installées dans le
répertoire
%ANDROID_HOME_SDK%\system-images\android-<api-level>
et le
type d’architecture des cores des supports mobiles (ARM, Intel X86…) est
intégré dans la nomenclature du répertoire d’installation des images. Cette
évolution prend en compte la diversification des types de cores sur les
appareils mobiles qui jusqu’aux versions 3 incluses tournaient essentiellement
avec une architecture core ARM.
La taille des images est de plus en plus volumineuse avec les versions. Pour monter ces images dans l’émulateur, certains vont devoir racheter un PC pour plus de puissance.
Package | Répertoire d’installation (system.img) | Taille (Mb) |
---|---|---|
Android 2.3.3 (API Level 10) | %ANDROID_HOME_SDK%\platforms\android-10 |
91 |
Android 4.1 (API Level 16 - ARM v7a) | %ANDROID_HOME_SDK%\system-images\android-16\armeabi-v7a |
201 |
Les résolutions et densités dans les émulateurs
Le tableau ci-dessous regroupe les familles de résolutions d’écran et de densités de pixels des appareils Android (Samsung Nexus, Samsung Galaxy SII …), liste qui n’est pas exhaustive. Les pourcentages correspondent aux proportions au niveau mondial au 1er août 2012 : Android dashboards
Densité faible (low dpi) | Densité moyenne (medium dpi) | Densité haute (high dpi) | Densité extra haute (extra high dpi) | |
Petite taille (small) | QVGA (240x320)
1,5 % |
1,2 % |
||
Taille classique (normal) | WQVGA400 (240x400)
WQVGA432 (240x432)
0,5 % |
HVGA (320x480)
12,1 % |
WVGA800 (480x800)
WVGA854 (480x854)
55,3 % |
17,4 % |
Taille large (large) | WVGA800 (480x800)
WVGA854 (480x854)
0,1 % |
WVGA800 (480x800)
WVGA854 (480x854)
2,7 % |
4,5 % |
|
Taille extra large (xlarge) | WXGA (1280x800)
4,7 % |
D’autres familles sont disponibles mais elles sont spécifiques à quelques apparails mobiles dont les parts de marché sont assez marginales au niveau mondial. Les appareils Samsung Nexus S ou Galaxy SII sont par exemple dans la famille WVGA800 - Densité haute (high dpi).
Les plateformes Android, et ceci pour chaque niveau d’API (Android 2.3.3, Android
4.1…), intègrent ces familles de résolution d’écran et de densité de pixels
dans le répertoire %ANDROID_SDK%\platforms\android-<api
level>\skins
.
Version d’Android | Répertoire racine | Sous répertoire par famille de résolution et de densité |
---|---|---|
Android 2.3.3 (API Level 10) | %ANDROID_SDK%\platforms\android-10\skins\ |
HVGA
QVGA
WQVGA400
WQVGA432
WVGA800 (Samsung Nexus S, Galaxy SII…)
WVGA854 |
Android 4.1 (API Level 16) | %ANDROID_SDK%\platforms\android-16\skins\ |
HVGA
QVGA
WQVGA400
WQVGA432
WSVGA
WVGA800 (Samsung Nexus S, Galaxy SII…)
WVGA854
WXGA720 (Tablettes)
WXGA800
WXGA800-7in
|
À partir d’Android 4, les familles WXGA%
correspondent aux
formats des tablettes.
Chaque sous répertoire contient un fichier hardware.ini
définissant la configuration par défaut (densité, mémoire RAM…). Ce fichier
est un fichier modèle lors de la configuration et de l’émulation des supports mobiles AVD pour
une famille donnée (WVGA800 par exemple).
%ANDROID_SDK%\platforms\android-10\skins\WVGA800\hardware.ini
# skin-specific hardware values
hw.lcd.density=240
vm.heapSize=24
hw.ramSize=256
Pour une famille donnée, les paramètres par défaut (mémoire RAM, etc.) sont
modifiés directement dans le fichier hardware.ini
. Dans ce
tutoriel, le paramètre de la mémoire RAM hw.ramsize
est divisée
par 2 pour la famille WVGA800 compte tenu des caractéristiques techniques du PC
utilisé. Si c’est possible, augmenter le plus possible la mémoire RAM.
# skin-specific hardware values
...
hw.ramSize=128
Le gestionnaire AVD en mode graphique
Gestion en mode graphique des supports mobiles AVD
L’utilitaire graphique Android AVD Manager est installé dans le répertoire
%ANDROID_SDK%
.
C:\> "%ANDROID_SDK%\AVD Manager"
Les propriétés d’un support mobile AVD sont également modifiables
avec une interface graphique en cliquant sur le bouton
"Edit..." .
Les familles de résolutions de d’écran et de densités de pixels en
fonction de la version d’Android sont proposées dans la liste
déroulante "Skin - Built-in" . Dans l’exemple ci-contre, la famille
WVGA800 est sélectionnée.
Le bouton "Start..." lance l’émulateur pour le support
mobile AVD couramment sélectionné.
Avec l’interface graphique, les AVD sont créés sous Windows XP dans
le répertoire C:\Documents and
Settings\<user>\.android\avd\<Nom de l’AVD>.avd
Exemple pour l’AVD nexus-2.3 (Windows XP) :
C:\Documents and Settings\<user>\.android\avd\nexus-2.3.avd
Seule l’utilisation d’AVD avec android en ligne de
commandes permet de personnaliser les répertoires d’installation. |
Configuration technique et paramétrage des supports mobiles AVD
Structure avant la première émulation du support AVD : les fichiers config.ini et userdata.img
Lors de la création basique d’un support mobile AVD en mode graphique,
2 ou 3 fichiers sont créés dans le répertoire par défaut C:\Documents and
Settings\<user>\.android\avd\<Nom de l’AVD>.avd
:
Fichier | Description |
---|---|
config.ini |
Le fichier config.ini définit l’architecture des cores, la famille de résolutions
et de densité de pixels, ainsi que l’image système à charger :
Les propriétés hardware hw.% du support AVD sont personnalisés dans ce fichier
config.ini , par exemple le support du clavier ou du GPS :
Outre les propriétés hardware hw.% , bien d’autres paramètres de configuration peuvent
être définis et personnalisés dans ce fichier config.ini , par exemple une carte SD :
N.B. : lors de la définition d’une carte SD, celle-ci doit être déjà être créée avec l’exécutable
mksdcard.exe installé dans le répertoire %ANDROID_TOOLS% .
La liste des paramètres de configuration d’un support mobile AVD est donnée en annexe
de cet article, liste non exhaustive. |
userdata.img |
Image modèle (template) pour le stockage des données utilisateurs. Cette image est copiée à la première émulation de l’AVD, copie dans laquelle seront stockées les préférences utilisateur et les applications Android en cours de développement. |
Émulation d’un support AVD :
Un support AVD est émulé avec l’exécutable emulator.exe
disponible dans le
répertoire %ANDROID_TOOLS%
:
%ANDROID_TOOLS%\emulator.exe -avd "Nom de l’AVD"
%ANDROID_TOOLS%\emulator.exe -avd nexus-2.3
Après la première émulation de l’AVD, initialisation qui est très longue, 2 fichiers très importants sont créés
dans le répertoire par défaut C:\Documents and
Settings\<user>\.android\avd\<Nom de l’AVD>.avd
:
hardware-qemu.ini
et userdata-qemu.img
.
Les répertoires .lock
sont présents lorsque l’émulateur est en
cours d’exécution pour l’AVD.
Fichier | Description |
---|---|
userdata-qemu.img |
Image dans laquelle les préférences utilisateur et
applications Android en cours de développement sont stockées (packages
Java, préférences, bases SQLite, etc.). Ce fichier image est
initialisé à partir du fichier modèle userdata.img . |
hardware-qemu.ini |
À la première initialisation de l’émulateur pour un AVD, un nouveau
fichier de configuration hardware-qemu.ini est généré. Ce fichier est
régénéré et lu par l’exécutable emulator.exe lors de chaque émulation d’un AVD.
Hormis les paramètres définissant l’architecture core CPU/ABI et la
famille de résolution (skin.name , skin.path , abi.type ), paramètres définis
uniquement dans le fichier config.ini , à chaque régénération, le fichier
de configuration hardware-qemu.ini est une compilation des autres paramètres
de configuration définis dans le fichier config.ini et dans le fichier hardware.ini
propre à la famille de résolution.
(%ANDROID_SDK%\platforms\android-<api-level>\skins\<famille
de résolution> )
NB important : si un même paramètre est défini dans les 2 fichiers
|
Gestion des supports mobiles AVD et des émulateurs Android en lignes de commandes
L’outil android
L’utilitaire graphique Android AVD Manager ne permet pas de délocaliser les répertoires d’installation des supports mobiles AVD.
Système d’exploitation | Répertoire d’installation par défaut avec la version graphique d’Android AVD Manager |
---|---|
Windows XP | C:\Documents and Settings\<user>\.android\<Nom de l’AVD>.avd |
Windows 7 ou Vista | C:\Users\<user>\.android\<Nom de l’AVD>.avd |
Le programme android
disponible dans le répertoire
%ANDROID_TOOLS%
offre la souplesse de la personnalisation des
répertoires d’installation des AVD (%ANDROID_AVD%
dans ce
tutoriel). Outre la création et la mise à jour de projets Android, l’outil
android
gère également les supports mobiles AVD en lignes de
commandes (création, modification et suppression).
Lister les images systèmes disponibles pour les supports mobiles AVD : android list targets
La commande android list targets
liste les images systèmes
Android SDK disponibles sur la plateforme :
%ANDROID_TOOLS%> android list targets
Available Android targets: ---------- id: 1 or "android-10" Name: Android 2.3.3 Type: Platform API level: 10 Revision: 2 Skins: HVGA, QVGA, WQVGA400, WQVGA432, WVGA800 (default), WVGA854 ABIs : armeabi ---------- id: 2 or "android-16" Name: Android 4.1 Type: Platform API level: 16 Revision: 2 Skins: HVGA, QVGA, WQVGA400, WQVGA432, WSVGA, WVGA800 (default), WVGA854, W XGA720, WXGA800, WXGA800-7in ABIs : armeabi-v7a
L’identifiant (id=1
ou id=android-10
) est très important, cet identifiant
est donné en paramètre pour la création en ligne de commandes d’un support
mobile AVD.
Création de supports mobiles AVD : android create avd
Les supports mobiles AVD sont créés avec la commande android create
avd
, seule commande qui autorise le paramétrage du répertoire
d’installation des AVD.
%ANDROID_TOOLS%> android create avd --name "Nom de l’AVD" --target "ID ou nom d’Android SDK";
[--skin <Nom de la famille de résolution>]
[--path "Chemin de l’installation de l’AVD"]
[--abi <Nom de l’architecture ABI Core>]
[--sdcard <Chemin ou taille de la carte SD>]
[--force ]
Pour créér l’AVD nexus-2.3 (Android 2.3.3, famille SVGA800, Carte SD de 10M)
dans le répertoire %ANDROID_AVD%\nexus-2.3
en ligne de commandes
:
%ANDROID_TOOLS%> android create avd --name nexus-2.3 --target android-10 --skin SVGA800 --path %ANDROID_AVD%\nexus-2.3 --sdcard 10M
Auto-selecting single ABI armeabi Android 2.3.3 is a basic Android platform. Do you wish to create a custom hardware profile [no]no Created AVD 'nexus-2.3' based on Android 2.3.3, ARM (armeabi) processor, with the following hardware config: hw.lcd.density=240 vm.heapSize=24 hw.ramSize=128
L’option --force
est indispensable si le répertoire est déjà
existant.
Comment la plateforme Android SDK retrouve le support mobile AVD nexus-2.3
installé dans un répertoire personnalisé ? Tout simplement en lisant le fichier
<Nom de l’AVD>.ini
alors créé dans le répertoire par défaut
d’installation des AVD (C:\Documents and
settings\<user>\.android\avd
pour Windows XP), fichier de
configuration qui référence le chemin d’installation de l’AVD avec la variable path
:
C:\Documents and Settings\<user>\.android\avd\nexus-2.3.ini
target=android-10
path=C:\Software\android\avd\nexus-2.3
Dans ce répertoire sont créés les fichiers dont le principe de fonctionnement est évoqué les paragraphes précedents :
config.ini
userdata.img
sdcard.img
userdata-qemu.img
(généré à la première émulation)hardware-qemu.ini
(généré à chaque émulation)
Lister les supports mobiles AVD définis : android list avd
Les supports mobiles AVD sont listés avec la commande android list
avd
%ANDROID_TOOLS%> android list avd
Available Android Virtual Devices: Name: nexus-2.3 Path: C:\Software\android\avd\nexus-2.3 Target: Android 2.3.3 (API level 10) ABI: armeabi Skin: WVGA800 Sdcard: 10M --------- Name: nexus-4.1 Path: C:\Software\android\avd\nexus-4.1 Target: Android 4.1 (API level 16) ABI: armeabi-v7a Skin: WVGA800
Renommer et déplacer des supports mobiles AVD : android move avd
Pour renommer un support mobile AVD :
android move avd --name "Ancien nom de l’AVD" --rename "Nouveau nom de l’AVD"
%ANDROID_TOOLS%> android move avd --name nexus-2.3 --rename nexus-2.3.3
AVD 'nexus-2.3' moved.
Le fichier nexus-2.3.ini
dans le répertoire C:\Documents and
Settings\<user>\.android\avd
est rénommé en nexus-2.3.3.ini
.
Pour déplacer un support mobile AVD vers un nouveau répertoire :
android move avd --name "Nom de l’AVD" --path "Nouveau chemin de l’AVD"
%ANDROID_TOOLS%> android move avd --name nexus-2.3 --path %ANDROID_AVD%\nexus-2.3.3
AVD 'nexus-2.3' moved.
Attention ! Le nouveau répertoire ne doit pas déjà exister.
Le fichier nexus-2.3.ini
dans le répertoire C:\Documents and
Settings\<user>\.android\avd
reflète la modification de chemin réalisée
par cette commande :
nexus-2.3.ini
target=android-10
path=C:\Software\android\avd\nexus-2.3.3
Suppression de supports mobiles AVD : android avd delete
La suppression de supports mobiles AVD est réalisée avec la commande
android delete avd
. Le nom du support mobile AVD est donné en
argument avec l’option --name
%ANDROID_TOOLS%> android delete avd --name "nom de l’AVD"
Exemple : suppression de l’AVD Nexus 4.1
%ANDROID_TOOLS%> android delete avd --name nexus-4.1
Deleting file C:\Documents and Settings\<user>\.android\avd\nexus-4.1.ini Deleting folder C:\Software\android\avd\nexus-4.1 AVD 'nexus-4.1' deleted.
Conclusion
- Utiliser la version graphique d’Android AVD Manager pour gérer et paramétrer les suppports mobiles, c’est
bien pratique, en revanche seule l’utilisation du programme
android
en ligne de commandes permet de gouverner les répertoires d’installation des supports mobiles AVD. - Maîtriser les fichiers de configuration
config.ini
ethardware.ini
pour un AVD est indispensable pour gérer plus efficacement les options à l’émulation d’un support mobile AVD (mémoire RAM, etc.), et notamment déplacer des composants de l’AVD vers des disques plus performants (disk.cachePartition
,sdCard
…). - Dernier point, loin s’en faut, il n’est pas du tout inutile de comprendre le chargement des images noyaux d’une plateforme Android SDK (
system.img
) et où sont stockées les préférences et applications Android en cours de développement dans un support mobile AVD (userdata-qemu.img
).
Annexe : Paramètres de configuration des AVD (liste non exhaustive) (hardware…)
Option | Valeur par défaut | Propriété |
---|---|---|
Taille de la mémoire RAM | 96 MB |
hw.ramSize |
Support Touch-screen | yes |
hw.touchScreen |
Support Trackball | yes |
hw.trackBall |
Support clavier | yes |
hw.keyboard |
Support DPad support | yes |
hw.dPad |
Support modem GSM | yes |
hw.gsmModem |
Support Camera | no |
hw.camera |
Taille horizontale maximum en pixels de la caméra | 640 |
hw.camera.maxHorizontalPixels |
Taille verticale maximum en pixels de la caméra | 480 |
hw.camera.maxVerticalPixels |
Supprt GPS support | yes |
hw.gps |
Support Batterie | yes |
hw.battery |
Acceleromètre | yes |
hw.accelerometer |
Support enregistrement Audio | yes |
hw.audioInput |
Support Audio | yes |
hw.audioOutput |
Support SD Card | yes |
hw.sdCard |
Densité caractéristique de l’écran AVD | 160 |
hw.lcd.density |
Taille de la carte SD | 9 MB |
sdCard.size |
Chemin de la carte carte SD | sdCard.path |
|
Support d’une partition Cache | yes |
disk.cachePartition |
Taille de la partition Cache | 66 MB |
disk.cachePartition.size |
Chemin de la partition Cache | disk.cachePartition.path |