Android Emulator est inclus dans Android Studio.
Les versions de l'émulateur antérieures à 25.3.0 étaient distribuées avec SDK Tools pour Android.
Pour vous assurer que vous disposez de la dernière version, recherchez les mises à jour de SDK Manager.
Pour télécharger les versions précédentes d'Android Emulator, consultez les archives de téléchargement d'Android Emulator.
Pour les notes de version d'Android Emulator antérieures à la version 25.3.0, consultez les notes de version de SDK Tools pour Android.
Pour les problèmes connus et le dépannage, consultez la page Dépannage de l'émulateur.
35.4.4 Canary (12 décembre 2024)
Nouveau simulateur Android XR
Nous avons ajouté un nouvel émulateur Android XR expérimental pour le développement et le test d'applications créées avec le SDK Jetpack XR pour les casques. Pour en savoir plus sur l'installation de l'émulateur Android XR et la configuration de votre environnement de développement, consultez ce guide.
L'émulateur Android XR est un outil expérimental. Nous avons néanmoins décidé de vous en informer plus tôt pour vous permettre de tester cette fonctionnalité dès le début. Attendez-vous à rencontrer des problèmes, en particulier sur certaines configurations de GPU et de pilotes Windows. Des problèmes peuvent également survenir lors des tests de compatibilité des applications mobiles 2D existantes. Vos commentaires nous aideront à améliorer et à guider la priorisation des fonctionnalités à venir.
À ce jour, l'émulateur Android XR a été testé sur les configurations matérielles suivantes:
- Mac (ARM)
- Windows 11
- GPU nVidia, 4 Go de VRAM, pilote version 553.35 ou ultérieure
- 16 Go de RAM ou plus
- 8 cœurs ou plus
Problèmes connus
Émulateur : stabilité et performances
- Sur certaines configurations Windows, des plantages ou des blocages critiques du système peuvent se produire au démarrage ou lors de l'exécution d'applications. Veuillez vous assurer que Windows Hypervisor Platform (WHPX) est activé en suivant le guide du développeur Android Studio pour activer WHPX.
- Problèmes tels que des éléments d'UI ou des AVD qui ne répondent pas sur les ordinateurs portables après un cycle de suspension-réactivation (par exemple, lorsque vous fermez et ouvrez un ordinateur portable).
- Des plantages occasionnels lorsque vous passez du mode "Écran d'accueil" au mode "Écran complet" dans une application
- Les API Gemini ne sont pas encore disponibles. L'application du modèle de démarrage de l'API Gemini plante.
Émulateur : simulation des entrées et des sorties
- Le clavier virtuel pour les champs de recherche et de modification n'est peut-être que partiellement visible dans le champ de vision.
Impossible de déplacer des éléments dans la direction Z (à l'intérieur et à l'extérieur de l'écran) à l'aide de la souris et du clavier
L'instabilité de l'entrée audio de l'hôte du micro AVD peut entraîner des redémarrages et des plantages de l'AVD.
Le son est parfois parasité ou déformé.
Lorsque la caméra est déplacée hors du salon virtuel, des erreurs de rendu sont visibles.
Les configurations Windows affichent des couleurs plus sombres que d'habitude.
L'audio ne fonctionne plus après avoir laissé l'émulateur inactif et verrouillé l'écran sous macOS. (Un redémarrage de l'émulateur le restaurera.)
La connexion réseau est interrompue lorsque la machine hôte change de réseau Wi-Fi.
Lorsque le verrouillage des majuscules est activé, les lettres minuscules sont toujours saisies.
Le défilement à l'aide du pavé tactile sur Mac n'est pas fluide.
Il est possible que le défilement par clic et glisser sur certains éléments d'interface utilisateur ne fonctionne pas par conception. Si ce n'est pas le cas, utilisez plutôt la molette de la souris pour faire défiler l'écran.
Texte et interface utilisateur flous, ainsi que d'autres problèmes dans Chrome sur certaines configurations système Windows Solution de contournement probable: Activer WHP.
Émulateur : simulation des plans et des ancrages
- Les ancres ne réapparaissent parfois pas à proximité du même emplacement
- Les panneaux mobiles ne sont pas forcément ancrés au mur ou au plafond.
- Les plans simulés ne correspondent pas à la disposition physique de la pièce 3D en mode passthrough
- Zones d'ancrage des objets dans la salle virtuelle limitées dans l'ensemble
- Petit artefact visible dans la vue de passthrough sous Windows
- Dans certains cas, placer des ancrages peut entraîner un plantage de l'application.
- Des lignes noires peuvent apparaître au-dessus des applications lorsque vous les déplacez près du sol sous Windows.
Émulateur – Autres:
- L'émulateur ne démarre qu'en mode "autonome". Le mode "Embedded" (interface utilisateur intégrée) n'est pas encore compatible.
- Se connecter avec des comptes sur l'émulateur sous Windows peut entraîner le blocage de l'émulateur
- Le contenu de l'interface utilisateur des fenêtres peut disparaître après avoir redimensionné la fenêtre (solution de contournement: appuyer sur le bouton "Accueil")
- Dans l'application JXRCore ActivityPanelTest, le panneau secondaire ne s'affiche pas initialement
- Les éléments des réglages rapides peuvent disparaître des paramètres système après une longue période.
- L'interface utilisateur de l'émulateur peut initialement apparaître en dehors de la région de l'écran. Si c'est le cas, ajustez légèrement la taille de la fenêtre de l'émulateur. Elle devrait se remettre en place.
- L'émulateur peut ne pas démarrer lorsque vous utilisez le Bureau à distance Chrome sous Windows
- Open XR n'est pour le moment pas compatible avec l'émulateur, et les applications Open XR peuvent provoquer le plantage de l'émulateur.
- Échecs rares lors de l'envoi de rapports de bugs via les paramètres étendus d'Android Studio sous Windows
- L'icône de navigation arrière n'est pas visible correctement dans l'application Paramètres tant que le curseur ne la survole pas sur Mac
- Dans certains cas, la compilation peut générer une erreur lorsque vous utilisez le module "Profil de référence" dans le cadre d'un projet de modèle XR.
- L'accessibilité de "XR Talkback" n'est pour le moment que partiellement intégrée à l'émulateur
Application Scene Viewer:
- Déplacer des éléments dans Scene Viewer peut entraîner son plantage. Pour contourner ce problème, il vous suffit de légèrement modifier la position de la tête par rapport à sa position initiale (par exemple, en utilisant le panoramique, le dolly, les touches WASD, etc.) avant de tenter de déplacer l'élément.
- La fonctionnalité de taille réelle au format 1:1 ne fonctionne pas correctement si la taille réelle du modèle 3D est inférieure ou supérieure aux limites minimales et maximales d'échelle (actuellement définies sur 20 cm et 70 m, respectivement).
- Le modèle 3D peut sauter sur le premier frame après le chargement.
35.2.10 (1er octobre 2024)
- Ajout de nouveaux AVD Pixel, y compris Pixel 9, Pixel 9 Pro, Pixel 9 Pro XL et Pixel 9 Pro Fold
- Ajout d'une nouvelle image système pour tablette pour Vanilla Ice Cream (API 35)
35.1.20 (29 août 2024)
- Ajout de l'AVD Pixel 8a
- Correction de plusieurs bugs pour les appareils pliables
- Mise à jour de Qt et corrections des plantages et blocages liés à Qt
- [Correction de bug] Correction des plantages et des blocages sous Windows avec les applications utilisant Vulkan
34.2.16 (9 juillet 2024)
- [Correction de bug] Blocages de l'interface utilisateur sur le Pixel Fold lors du pliage/dépliage
- [Correction de bug] Affichage incorrect de la version d'Android en tant que version Preview d'Android Vanilla Ice Cream au lieu de l'API 35 sur Mac M1.
- [Correction de bug] Problème 296162661 : HasSystemFeature FEATURE_SENSOR_HINGE_ANGLE renvoie la valeur "true" sur l'émulateur de la tablette Pixel C
34.2.15 (31 mai 2024)
- Plusieurs corrections de plantage liées au mode swangle et au nettoyage des annonceurs
34.2.14 (20 mai 2024)
Testé avec Android Studio Jellyfish Stable Correctif 1.
- [Correction de bug] L'instantané se bloque parfois sur l'émulateur intégré
- [Correction de bug] Les boutons "Non" et "Annuler" ne fonctionnent pas correctement sur l'instantané
- [Correction de bug] Les boutons de la croix directionnelle ne fonctionnent pas
- [Correction de bug] Correction du problème observé sous Windows qui empêchait le démarrage de l'émulateur dans certaines conditions lors de l'utilisation de modes GPU avec ANGLE, et renvoyait le message d'erreur "Échec de l'initialisation de l'émulation GL" dans le journal. Notez que le démarrage de l'émulateur par ligne de commande avec l'option
-gpu swangle_indirect
peut toujours générer cette erreur avec cette version. Si vous souhaitez toujours démarrer l'émulateur à l'aide d'une ligne de commande sous Windows avec le rendu graphique logiciel avec cette version, veuillez utiliser-gpu swiftshader_indirect
. - [Correction de bug] Le raccourci de position sur le clavier charge une carte inutilisable
- [Correction de bug] Lors de la définition de l'emplacement, la boîte de dialogue "Enregistrer le trajet" est manquante
34.2.13 (30 avril 2024)
Testé avec la version stable Android Studio Jellyfish.
- Mise à jour vers Qt 6.5.3
- Compatibilité avec les mises à jour de l'API Google Maps utilisées dans les fonctionnalités de localisation des commandes avancées de l'émulateur, qui ont eu lieu fin mai.
- Corrections de plantages à fort impact
- Plusieurs corrections apportées aux AVD Pixel
- Mettre à jour la bibliothèque graphique utilisée pour le rendu logiciel
- [Correction de bug]Problème 225541819 Le démarrage de Chrome bloque l'émulateur sur x86_64.
- [Correction de bug]Problème 314614435 Le commutateur
-http-proxy
est analysé de manière incorrecte
34.1.20 (1er avril 2024)
Testé avec la version stable Android Studio Iguana.
- [Correction de bug] Problème 314614435: correction du problème d'analyse incorrecte du commutateur
-http-proxy
34.1.19 (7 mars 2024)
Testé avec la version stable Android Studio Iguana.
- [Correction de bug] Problème 312677259: correction du blocage de l'écran dans l'émulateur intégré après le redimensionnement de la fenêtre.
34.1.18 (29 février 2024)
Testé avec la version stable Android Studio Iguana.
- Des appareils ont été ajoutés à Android Emulator, y compris :
- Pixel Fold
- Pixel Tablet
- Pixel 8
- Pixel 8 Pro
- Pixel 7a
- Test d'intégration gRPC: les points de terminaison gRPC sont désormais disponibles pour les tests instrumentés exécutés dans l'émulateur, ce qui permet de tester des scénarios réalistes. Cette fonctionnalité permet aux développeurs d'interagir de manière sécurisée avec le point de terminaison gRPC hébergé par Android Emulator à partir de tests d'instrumentation Android.
- Diverses corrections de bugs
- Correction de bug: amélioration de la facilité d'utilisation des appareils pliables
- Correction de bug: Ajustement de la position de l'émulateur après la rotation
- Corrections de plantages
33.1.24 (28 décembre 2023)
Testé avec la version stable Android Studio Hedgehog et la version Iguana bêta 1.
- Résolution du problème lié à la webcam de l'émulateur qui ne permet pas l'enregistrement d'écran au format MP4.
- Résolution du plantage de l'émulateur sur l'AVD du Pixel Fold lorsqu'il est déplié lors d'un enregistrement d'écran.
- Résolution du problème lié à l'apparence du Pixel Fold, qui affiche un autre thème de téléphone avec un clavier détaché et qui est inutilisable (résolu sous Windows, Mac Intel et Linux).
- Correction d'un problème d'affichage dans les capteurs virtuels en mode autonome (résolu sous Windows, Mac Intel et Linux).
- Correction de certains plantages, en particulier lors de la fermeture de l'émulateur.
33.1.23 (30 novembre 2023)
Testé avec Android Studio Giraffe Correctif 4 et Hedgehog Stable.
- Nouvelle implémentation d'un appareil pliable pour mieux émuler le Pixel Fold, compatible avec la dernière API 34
- Mise à niveau du backend graphique : nous avons implémenté le protocole gfxstream pour notre backend graphique. Cette amélioration augmente les performances graphiques globales et la stabilité de votre système. De plus, prise en charge de Vulkan 1.3 à partir de l'image système avec l'API 34
- Demande de fonctionnalité : possibilité de désactiver le geste de pincement pour zoomer ou de réattribuer le raccourci clavier correspondant
- [Correction de bug] Problème 302562962 Résolution du plantage de la webcam de l'émulateur lors de l'utilisation de la version macOS Sonoma
- [Correction de bug] Problème 293503871 Résolution du problème d'enregistrement du paramètre "Micro" au redémarrage de l'émulateur.
- [Correction de bug] Problème 270386314 Résolution de l'erreur d'animation où la barre latérale restait ouverte une fois l'écran AVD réduite
- [Correction de bug] Problème 154896775 Correction de l'outil d'envoi de bugs
32.1.15 (29 août 2023)
Testé avec Android Studio Giraffe Correctif 1 et Hedgehog Canary 16.
- Respecte les exigences matérielles de GAS pour les capteurs dans l'émulateur AAE
- [Correction de bug] Problème 266201208 Les SMS en hébreu ne sont pas envoyés avec l'API 33.
- [Correction de bug] Problème 257097404 L'émulateur n'affiche pas l'heure correcte après la réactivation de l'hôte avec les API 29 et 30.
- [Correction de bug] Problème 228201899 Impossible d'afficher Google Maps dans les commandes avancées d'Android Emulator.
32.1.14 (27 juin 2023)
Testé avec Android Studio Hedgehog Canary 8, Giraffe Beta 5 et Flamingo Stable.
- Correction des problèmes d'orientation et de distorsion de la caméra de l'émulateur.
- [Correction de bug] Problème 257097404 : "L'émulateur n'affiche pas l'heure correcte après la sortie de veille de l'hôte." Ce bug est toujours reproductible pour les API 29 et 30.
- [Correction de bug] Problème 243456582 : "Les versions d'Android ultérieures à l'API 30 risquent de ne pas démarrer correctement dans l'émulateur sur les machines Mac M1"
32.1.13 (22 mai 2023)
Testé avec Android Studio Hedgehog Canary 2, Giraffe Beta 1 et Flamingo Stable.
- Ajout de la prise en charge des AVD des Pixel Fold et Pixel Tablet
- Amélioration du problème de plantage sous gLinux.
- [Correction de bug] Problème 215231636 : "L'émulateur avec une API supérieure à l'API 30 ne fonctionne pas avec le processeur Intel 12e génération."
- [Correction de bug] Problème 275397905 Haut niveau de plantage sur Android Emulator M1 lors du déplacement répété du curseur entre l'intérieur et l'extérieur de l'émulateur.
- Problème connu lié au lancement d'un AVD (problème 281725854). Pour en savoir plus, consultez la page Dépannage de l'émulateur.
32.1.12 (21 mars 2023)
Tests effectués avec Android Studio Giraffe Canary 10, Flamingo RC et le correctif 2 d'Electric Eel.
- [Correction de bug] Problème 267647323 Le réseau ne fonctionne pas dans l'émulateur démarré depuis Android Studio.
- [Correction de bug] Problème 268498686 L'écran de l'émulateur clignote.
- [Correction de bug] Problème 270034824 Les performances de l'émulateur se sont dégradées après la mise à jour vers la version 33.1.1.
- [Correction de bug] Problème 225541819 Le démarrage de Chrome bloque l'émulateur sur x86_64.
- [Correction de bug] Problème 257097404 L'émulateur n'affiche pas l'heure correcte après la sortie de veille de l'hôte.
- Ajouter des rapports d'erreur pour les appareils Apple M1
32.1.11 (8 février 2023)
Tests effectués avec Android Studio Giraffe Canary 2, la version bêta 1 de Flamingo et le correctif 1 d'Electric Eel.
- Optimisations de la vitesse du réseau
- Prise en charge de la souris dans l'émulateur intégré
- Améliorations de virtio-snd
- Désactivation de l'utilisation des liens symboliques lors de la décompression d'Android Emulator lors de l'installation
- Résolution du problème de plantage lors de la vérification de l'émulateur
31.3.14 (13 décembre 2022)
Testé avec Android Studio Dolphin, Electric Eel RC1 et Flamingo Canary 9.
- [Correction de bug] Résolution des plantages d'AVD lors de la connexion au Play Store
31.3.13 (27 octobre 2022)
Testé avec Android Studio Dolphin, Electric Eel bêta 2 et Flamingo Canary 5.
- [Correction de bug] Problème 249948338 : le paramètre fuseau horaire ne fonctionne pas
- [Correction de bug] Problème 249366543 : l'option -dns-server de l'émulateur ne fonctionne pas après l'API 31
31.3.12 (10 octobre 2022)
Testé avec Android Studio Dolphin et Electric Eel bêta 1.
Cette mise à jour inclut les améliorations et correctifs suivants :
- [Correction de bug] Problème 247843000 : erreur de traitement du chemin relatif AVD
- Augmentation de la taille du disque pour les API 24 et versions ultérieures
31.3.11 (23 septembre 2022)
Testé avec Android Studio Dolphin et Electric Eel Canary 10.
Cette mise à jour inclut les améliorations et correctifs suivants :
- [Correction de bug] Plantage de l'AVD de l'émulateur intégré dans la fenêtre des commandes étendues
- [Correction de bug] Problème 183139207 : problèmes audio liés à l'activation du micro par l'émulateur
- [Correction de bug] Problème 229764024 : bug lié aux touches persistantes de l'AVD entraînant des problèmes de comportement dans l'interface utilisateur
- [Correction de bug] Erreur lors du lancement de l'AVD de l'API 33 sur Mac M1
- [Correction de bug] Problème 243053479 : débit du réseau lent après la mise à jour de l'émulateur
- [Correction de bug] Problème 244617627 : l'emplacement Maps ne fonctionne pas sous Windows et Linux
- [Correction de bug] Problème 232971796 : le bouton "call device" (Appeler l'appareil) ne fonctionne pas sur la page Extended Controls > Phone (Commandes étendues > Téléphone)
- Mise à jour d'Android Emulator vers minigbm
- Migration de scripts de compilation vers Python3
31.3.10 (18 août 2022)
Testé avec Android Studio Dolphin bêta 5 et Electric Eel Canary 9.
Des téléchargements autonomes de l'émulateur sont désormais disponibles. Si vous rencontrez des problèmes ou des plantages avec cette dernière version stable, veuillez signaler un bug et télécharger une version précédemment fonctionnelle à partir des archives de téléchargement de l'émulateur.
Cette mise à jour inclut les améliorations et correctifs suivants :
- Meilleure prise en charge des chemins d'accès Unicode sous Windows
- Meilleure gestion de l'arrêt de l'émulateur afin qu'un nouveau lancement du même AVD puisse aboutir
- Mise à jour de la conception d'AVD pliable et des paramètres par défaut
- Mise à jour des boutons de l'émulateur Wear
- Amélioration du streaming audio gRPC
- Ajout de la commande de console d'émulateur redimensionnable
- Correctif Chrome pour l'API 31
- [Correction de bug] Échec de l'authentification du compte Google avec GmsCore v21.42.18
31.2.10 (20 avril 2022)
Testé avec Android Studio Dolphin 8 et Chipmunk RC 1.
Cette mise à jour inclut les améliorations et correctifs suivants :
- Ajout d'un utilitaire pour charger les fonctions Vulkan avec des solutions de secours
- [Correction de bug] Correction de l'erreur de compilation gcc8
31.2.9 (23 mars 2022)
Testé avec Android Studio Dolphin Canary 7.
Cette mise à jour inclut le correctif suivant :
- [Correction de bug] Pression sur la mémoire ignorée lors de l'enregistrement de l'instantané sur M1
31.2.8 (7 février 2022)
Testé avec Android Studio Bumblebee Patch 1 et Chipmunk Canary 6.
Cette mise à jour inclut les améliorations et correctifs suivants :
- [Correction de bug] Impossible de se connecter aux applications
- [Correction de bug] Problème 215368358 : la commande "adb reboot" sur la plate-forme Intel fait planter l'AVD et renvoie le message "vCPU shutdown request"
31.2.7 (1er février 2022)
Testé avec Android Studio Bumblebee Patch 1 et Chipmunk Canary 6.
Cette mise à jour inclut le correctif suivant :
- [Correction de bug] Erreur de blocage de l'émulateur sur les ordinateurs équipés du processeur M1.
31.2.6 (20 janvier 2022)
Testé avec Android Studio Arctic Fox, Bumblebee bêta 4 et Chipmunk Canary 6.
Cette mise à jour inclut les améliorations et correctifs suivants :
- Ajout de boutons Wear à l'émulateur Wear OS.
- Toutes les propriétés du véhicule peuvent désormais être modifiées dans l'onglet VHAL.
- [Correction de bug] Échec de l'authentification du compte Google avec GmsCore v21.42.18.
- [Correction de bug] Netshaper ne fonctionnait pas correctement avec VirtioWifi.
- [Correction de bug] La commande de console de la souris associée à l'événement ne fonctionnait pas.
- Ajout d'une vérification KVM pour la création d'un AVD local.
31.1.3 (18 janvier 2022)
Cette mise à jour inclut les améliorations et correctifs suivants :
- Activation des ports de console pour Fuchsia.
- Lorsque vous redimensionnez une fenêtre multi-écran, l'orientation est ignorée.
- Wi-Fi : ajout de la prise en charge du filtrage des paquets Unicast en fonction de l'adresse MAC MAT.
- Wi-Fi : correction du plantage qui se produisait lors de l'utilisation de VMnet.
30.9.5 (15 décembre 2021)
Cette mise à jour inclut les améliorations et correctifs suivants :
- Possibilité de redimensionner facilement une fenêtre au format ordinateur de bureau ou tablette.
- Ajout de la prise en charge de la saisie multipoint à partir des appareils hôtes compatibles.
- VirtioWifi : ajout de la prise en charge de Tap Network.
- Activation de la saisie par dispositif rotatif pour les images système Wear.
- Correction du problème de configuration audio gRPC.
- Mise à jour de la lecture de l'émulateur SensorReplay pour la prise en charge des capteurs Android standards.
- Connexion de l'émulateur à des périphériques et appareils à l'aide d'un câble USB avec passthrough USB.
30.4.5 (23 février 2021)
Cette mise à jour inclut les améliorations et correctifs suivants :
- macOS : résolution des problèmes de distorsion de l'entrée audio.
- Ajout de la prise en charge de virtio-vsock dans l'espace utilisateur.
- Les futures images système utiliseront virtio-console pour les messages du noyau et Logcat.
- Rendu Vulkan accéléré.
- Ajout de la prise en charge du débogage des instantanés en cas d'échec du test.
- virtio-gpu : mise à jour des définitions pour prendre en charge les énumérations de ressources blob les plus récentes.
- Ajout de la prise en charge des instantanés pour les transports de graphiques de type "asg".
- macOS : ajout de la prise en charge de la compilation avec le SDK macOS 11.1 et versions ultérieures.
- KVMclock activé par défaut sur les images système les plus récentes.
- Ajout de la prise en charge d'un capteur de fréquence cardiaque sur les émulateurs Wear.
- Suppression du backend libportability de Vulkan.
- Ajout de la prise en charge de fonctionnalités supplémentaires dans le simulateur de modem.
30.0.26 (16 août 2020)
Cette mise à jour comprend plusieurs nouvelles fonctionnalités, des améliorations des fonctionnalités existantes, ainsi que des corrections de bugs.
Prise en charge des appareils pliables avec capteur à charnière virtuel et vue 3D
Ajout de la prise en charge des capteurs à charnière pour les appareils pliables. Cela nécessite une future image système Android 11 et une configuration AVD. Les paramètres de charnière et de vue pliables 3D sont désormais intégrés aux préréglages pliables existants. Le code suivant peut être utilisé, par exemple, avec le fichier
config.ini
de l'AVD pliable 7.3 :hw.sensor.hinge = yes hw.sensor.hinge.count = 1 hw.sensor.hinge.type = 1 hw.sensor.hinge.ranges = 180-360 hw.sensor.hinge.defaults = 180 hw.sensor.hinge.areas = 54.7-0 hw.sensor.posture_list=4, 3 hw.sensor.hinge_angles_posture_definitions=210-360, 180-210 hw.sensor.hinge.fold_to_displayRegion.0.1_at_posture=4
Désormais, les appareils pliables comportent également un paramètre de sous-type. La propriété
hw.sensor.hinge.sub_type = hinge/fold
du fichierconfig.ini
est maintenant disponible. Pour en savoir plus, consultez l'article de blog Développer pour Android 11 avec Android Emulator.Le capteur de charnière est maintenant activé par défaut.
Si un appareil pliable est configuré, l'émulateur envoie désormais les mises à jour des capteurs d'angle de charnière et les modifications de position à l'invité. Maintenant, les appareils pliables existants mettent à jour la position et l'angle de la charnière lorsque l'utilisateur appuie sur les boutons pour plier ou déplier l'écran dans la barre d'outils.
Émulateur pour les hôtes ARM64
Le code source de l'émulateur Linux prend désormais en charge la compilation croisée des hôtes x86_64 vers les hôtes arm64, ce qui permet d'exécuter des images système ARM64 avec la virtualisation KVM. Actuellement, seul
-gpu swiftshader_indirect
(rendu de l'hôte Swiftshader arm64) est pris en charge, mais vous pouvez également utiliser un ensemble compatible de bibliothèques libEGL/libGLESv2 du GPU hôte en les remplaçant par lib64/gles_swiftshader, puis en les relançant avec-gpu swiftshader_indirect
. Il se peut également que les instantanés ne fonctionnent pas (ajoutez-no-snapshot
à la ligne de commande). Instructions :mkdir emu cd emu repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1 repo sync -qcj 12 cd external/qemu pip install absl-py pip install urlfetch sudo apt-get install crossbuild-essential-arm64 python android/build/python/cmake.py --noqtwebengine --noshowprefixforinfo --target linux_aarch64
La prise en charge des processeurs Apple Silicon est en cours.
Prise en charge de virtio-gpu
- Ajout de la prise en charge du côté hôte des futures ressources blob cohérentes de l'hôte virtio-gpu.
- Compte tenu du fonctionnement du rendu de l'émulateur, nous traitons désormais virtio-gpu virtqueue dans le thread vCPU (car, de toute façon, le rendu est déchargé vers d'autres threads). Le rendu de virtio-gpu sera activé dans une future image système et une future version de l'émulateur.
- Dans une future image système, l'émulateur pourra exécuter tous les graphiques avec une pile basée sur virtio-gpu.
Autres nouveautés et améliorations
- Le passthrough USB est désormais disponible sous Windows à l'aide de
-qemu -usb -device usb-host,vendorid=<usb-vendor-id>,productid=<usb-product-id>
. (Cela aurait également dû déjà fonctionner sous Linux et macOS.) - Mise à jour des bibliothèques WebRTC vers M83.
- L'émulateur prend désormais en charge le streaming audio dans des conteneurs via WebRTC.
- Le point de terminaison du canal darwinn a été supprimé.
- Le décodage CUDA VPx pour la vidéo est désormais disponible via la variable d'environnement
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
, à condition qu'il le soit dans le matériel. - Sous macOS, SSE 4.1 et 4.2 sont maintenant disponibles à partir de l'invité Android.
- Sous macOS, INVTSC est désormais activé par défaut. Cela peut améliorer la précision des mesures de temps à partir de l'invité.
- Nous effectuons maintenant le suivi du volet des commandes avancées que l'utilisateur a sélectionné dans les métriques.
- L'émulateur Linux utilise désormais l'horloge paravirtualisée KVM lorsque la version du noyau invité est supérieure ou égale à 5.4 (images système R ou ultérieures).
- L'émulateur utilise désormais LZ4 pour décompresser les noyaux invités, ce qui les rend compatibles avec le pipeline de noyau moderne.
Ajout des commandes de console permettant d'obtenir le répertoire AVD de l'émulateur, le chemin d'accès au fichier de découverte dans le cas d'utilisation intégré à Studio et le chemin d'accès aux instantanés :
adb emu avd path # Obtains path to AVD directory adb emu avd discoverypath # Obtains path to discovery file adb emu avd snapshotspath # Obtains path to snapshots folder adb emu avd snapshotpath <snapshotName> # Obtains path to the folder that stores the snapshot for the snapshot with name <snapshotName>
Pour faciliter l'économie d'espace vertical sur l'écran, nous avons ajouté une option permettant de masquer le frame de l'appareil pour l'AVD actuel dans Commandes avancées > Paramètres. Pour masquer complètement les frames d'appareil pour tous les AVD, nous proposons le commutateur de fonctionnalité
NoDeviceFrame
, qui peut être activé en lançant l'émulateur à partir de la ligne de commande avec le frame-feature NoDevice
, ou pour le verrouiller, en ajoutantNoDeviceFrame = on
à~/.android/advancedFeatures.ini
(créez ce fichier s'il n'existe pas encore).Ajout d'un élément de liste déroulante dans la page de connexion mobile pour activer et désactiver la prise en charge de la mesure. Il s'agit d'une no-op pour les images système plus anciennes qui ne prennent pas en charge le bouton bascule de mesure 5G.
- Une commande de console a également été ajoutée dans le même but :
gsm meter on|off
- Une commande de console a également été ajoutée dans le même but :
Mise à niveau de la chaîne d'outils/build vers C++17.
Corrections : émulateur intégré
- Le presse-papiers doit maintenant fonctionner correctement.
- Correction d'un problème en raison duquel les caractères majuscules étaient affichés en minuscules dans l'émulateur.
- Correction du chargement du jeton de console à partir d'un chemin Unicode dans Windows.
- Correction du message d'erreur
SO_REUSEPORT
sous Linux. - Correction d'un problème de corruption d'instantané lors de l'envoi de commandes d'instantané via gRPC, ainsi que lors de l'utilisation du bouton d'enregistrement d'instantané dans l'émulateur intégré d'Android Studio.
Lors de l'utilisation de l'émulateur Linux intégré dans Studio, nous avons constaté l'apparition du bug suivant si cela était effectué via le Bureau à distance Chrome :
XDG_RUNTIME_DIR
n'est pas défini et il se peut que l'émulateur intégré n'apparaisse pas étant donné que les fichiers de découverte de l'émulateur sont placés dansXDG_RUNTIME_DIR
. Vous pouvez vérifier l'état du problème correspondant dans l'Issue Tracker de Chrome.Pour contourner ce problème, l'émulateur réutilise désormais les fichiers de découverte dans un répertoire qui peut être différent, basé sur l'UID utilisateur :
/run/user/<uid>
.Émulateur intégré : les appareils avec encoches/coins arrondis modifient désormais correctement leur disposition pour faire de la place pour les coins et les encoches. Cela nécessite un démarrage à froid de ces émulateurs.
Le point de terminaison gRPC prend désormais en charge l'envoi de SMS à l'appareil.
Corrections générales
- Nous avons constaté des problèmes de compatibilité lors de l'exécution de l'émulateur Windows lorsque Riot Vanguard est actif. L'émulateur Windows détecte maintenant le logiciel anti-triche Vanguard et affiche un message d'avertissement si Vanguard est détecté.
- Correction de l'erreur
FD_SETSIZE
sous Windows. Nous utilisons désormaisWSAEventSelect()
au lieu deselect()
pour établir des connexions non bloquantes aux serveurs de bouclage. - Ajout de la prise en charge des fonctionnalités CPUF F16C à l'émulateur Linux avec résolution des problèmes d'exécution de certaines applications ARM64 via la traduction NDK ; macOS/Windows en cours.
- Correction de la lecture de tracés gpx/kml pour le suivi des codes temporels.
- Correction de l'icône qui rebondit au lancement sur MacOs.
- Si
hw.audioInput=no
ethw.audioOutput=no
dans le fichierconfig.ini
, le son de l'émulateur est maintenant correctement désactivé. - Si la fenêtre de l'émulateur était réduite alors que la fenêtre des commandes avancées était ouverte, mais inactive, cette dernière restait affichée lors du redimensionnement de la fenêtre de l'émulateur. Ce problème a été résolu. Nous supprimerons complètement le comportement (c'est-à-dire le cas avec la fenêtre des commandes avancées active) dans une prochaine mise à jour.
- Correction d'un bug irrégulier qui empêchait l'établissement de la connexion Wi-Fi au démarrage de l'émulateur.
- Correction d'un blocage en phase de sortie lorsque l'émulateur émet des commandes d'interface système avec des délais d'inactivité longs ou indéfinis.
- Mise à jour de pc-bios avec des correctifs pour mieux prendre en charge les images volumineuses transmises à
-initrd
. La méthode utilisée par le BIOS précédent s'avérait particulièrement inefficace. - Résolution du plantage lors de la procédure d'arrêt lorsque la fonctionnalité
-wifi-server-port
est utilisée. - L'émulateur imprime désormais un avertissement si des options non compatibles sont transmises à
-prop
(seules les propriétés qemu.* sont prises en charge). - Lors de la compilation de l'émulateur sous Windows, il devrait y avoir moins de risques de voir des échecs irréguliers au moment de l'écriture dans des fichiers. Pour en savoir plus, consultez les instructions de compilation sous Windows.
- Désactivation du bouton de zoom pour les AVD pliables ; ce bouton entraînait des problèmes.
- L'émulateur signale désormais correctement le temps de démarrage après un redémarrage de l'appareil.
- Linux : si les autorisations KVM sont insuffisantes, l'émulateur imprime désormais plus rapidement les instructions de débogage.
- L'émulateur ne parvenait pas à démarrer des images système récentes sans accélération. Ce problème a été résolu.
- Correction d'un problème de corruption de mémoire ou de plantage au démarrage à partir d'un détecteur de fin de démarrage.
- Correction d'une fuite de mémoire lors de sessions d'enregistrement d'écran de longue durée.
- Mise à jour des icônes de l'émulateur pour tenir compte du branding de Studio 4.1.
- Meilleure prise en charge de la détection des sessions à distance sous Windows.
Corrections : décodage de graphiques et de vidéos
- Correction du problème d'affichage de la dernière version du jeu Asphalt 9 avec un écran noir.
- Suppression du spam concernant le vidage de la mémoire tampon mappée avec
NULL
. - Correction d'une condition de concurrence lors de la suppression de l'état Vulkan au cours de la fermeture d'une application Vulkan invitée.
- Les nuanceurs d'émulation Vulkan ASTC/ETC2 sont désormais inclus dans la bibliothèque libOpenglRender. Cela garantira une fiabilité accrue par rapport à la lecture depuis le système de fichiers.
- Correction d'un problème dans Vulkan où, en cas d'exécution avec une instance Vulkan 1.0 sur l'hôte,
vkGetImageMemoryRequirements2KHR
effaçait à tort le champpNext
de la structureVkMemoryRequirements2
renvoyée. - Correction d'une fuite de mémoire dans le moteur de rendu Vulkan.
- Correction d'une régression récente qui empêchait la compilation des nuanceurs GLSL ES 1.00 avec des noms de variable tels que
isampler2D
. - Mise à jour du traducteur de nuanceurs ANGLE avec différents correctifs qui corrigent les éventuels échecs de compilation des nuanceurs sous Linux.
- Nous faisons maintenant planter l'émulateur en cas d'échec de la compilation du nuanceur blit du tampon de trame de base, afin d'effectuer le suivi de ce phénomène.
- Mise à jour du traducteur de nuanceurs ANGLE pour suivre ANGLE en amont. Cela a permis de résoudre un problème de corruption de mémoire lors de la traduction et du pliage constant des nuanceurs OpenGL ES qui utilisaient des matrices non carrées. Le traducteur de nuanceurs est désormais une bibliothèque partagée distincte,
libshadertranslator.dll
. - Correction d'un problème d'initialisation de Vulkan sur certains pilotes de GPU, où certaines fonctions d'appareil 1.1 étaient introuvables.
- Vulkan : nous avons rétabli l'utilisation du chargeur prédéfini, car le fait de favoriser le chargeur Vulkan du système entraînait des problèmes dans certaines configurations. Nous tâcherons de trouver une meilleure solution à l'avenir.
- Correction d'un problème lors de l'utilisation de la mémoire externe Vulkan où des index de type de mémoire incompatibles pouvaient être importés sur l'hôte.
- Correction du problème d'émulation de
GL_ALIASED_POINT_SIZE_RANGE
où l'énumération n'était pas prise en charge sur l'hôte. - Sur certains GPU hôtes, les nuanceurs Skia ne pouvaient pas être compilés en raison d'une erreur liée à
GL_EXT_shader_framebuffer_fetch
. Ce problème a été résolu. - Étant donné que notre copie du moteur de rendu ANGLE D3D9 a été supprimée il y a quelques versions, nous faisons désormais basculer automatiquement les utilisateurs qui se trouvaient sur ce moteur de rendu vers ANGLE D3D11 si cela était sélectionné dans les préférences de l'interface utilisateur.
- D'autres informations de débogage ont été ajoutées à l'initialisation WGL sous Windows pour effectuer le suivi des échecs.
- Lorsque
hw.gltransport=virtio-gpu-pipe
, les performances sont améliorées en ne tournant pas sur l'hôte lors des transferts de l'hôte vers l'invité. - Journalisation de débogage supplémentaire en cas d'échec de l'initialisation de l'émulation OpenGLES.
- Correction d'un problème où les vidéos YouTube scintillaient ou n'apparaissaient pas lors du chargement de l'instantané.
- Nous en sommes revenus au décodage logiciel pour libvpx en raison de problèmes rencontrés avec le décodage matériel CUDA de libvpx. Si une implémentation de décodage matériel CUDA est prise en charge du côté hôte, le décodage matériel de libvpx peut être réactivé via la variable d'environnement
ANDROID_EMU_MEDIA_DECODER_CUDA_VPX=1
.
30.0.10 (30 avril 2020)
Cette mise à jour permet d'exécuter directement l'émulateur dans Android Studio et sur les appareils virtuels avec le mode Fenêtre de forme libre activé par défaut.
Exécuter l'émulateur dans Android Studio
Android Emulator peut désormais être exécuté directement dans Android Studio. Utilisez cette fonctionnalité pour conserver l'espace sur l'écran, pour naviguer rapidement entre l'émulateur et la fenêtre de l'éditeur à l'aide de raccourcis, et pour organiser le workflow de l'IDE et de l'émulateur dans une seule fenêtre d'application.
Mode Fenêtre de forme libre
Vous pouvez maintenant créer un AVD où le mode Fenêtre de forme libre est activé en sélectionnant le profil matériel de tablette "Forme libre" 13,5 pouces lorsque vous créez un appareil virtuel dans Android Studio. Ce profil matériel nécessite une image système avec Android 11 Preview développeur 3 ou version ultérieure.
Problèmes connus
Le redimensionnement des fenêtres de forme libre est actuellement interrompu en raison de problèmes de transfert du focus vers le gestionnaire de fenêtres. Ce problème sera résolu dans une prochaine version de l'image système Android 11.
30.0.0 (19 février 2020)
Cette mise à jour inclut des images système Android 11 (niveau d'API 30) et offre de meilleures performances lors de l'exécution de binaires ARM.
Images système Android 11
Vous pouvez maintenant créer un AVD qui exécute Android 11 en sélectionnant l'une des images système de niveau d'API 30 disponibles :
- x86 : inclut les ABI x86 et ARMv7.
- x86_64 : inclut les ABI x86, x86_64, ARMv7 et ARM64.
Prise en charge des binaires ARM sur les images système Android 9 et 11
Si vous ne pouviez pas utiliser Android Emulator auparavant parce que votre application dépendait de binaires ARM, vous pouvez désormais utiliser l'image système x86 Android 9 ou toute image système Android 11 pour exécuter votre application. Il n'est plus nécessaire de télécharger une image système spécifique pour exécuter des binaires ARM. Ces images système Android 9 et Android 11 prennent en charge ARM par défaut et offrent de bien meilleures performances par rapport à une émulation ARM complète.
Problèmes connus
- L'exécution de certains binaires ARMv7 échoue sur les images système Android 11 x86 et x86_64. Pensez à compiler pour l'architecture ARM64 lorsque vous ciblez Android 11.
29.0.11 (29 mai 2019)
Cette mise à jour inclut les améliorations et correctifs suivants :
- Windows : l'émulateur s'appuie désormais sur la DLL
libgcc
que nous fournissons, au lieu d'être compilé de manière statique aveclibgcc
. - Linux : ajout de la prise en charge de Logcat avec l'API gRPC. Pour en savoir plus sur gRPC, consultez la section Émulateur de streaming gRPC (Linux).
- L'émulateur inclut désormais une version sans interface graphique pour les invités x36 32 bits (
qemu-system-i386
). Cela permet aux images x86 32 bits pour les niveaux d'API 26 et inférieurs de s'exécuter avec la version sans interface graphique. Notez que pour les invités x86 32 bits avec l'API 27 ou ultérieure, l'émulateur utilise le moteur 64 bits (qemu-system-x86_64
) car, dans ces images système, le noyau est de 64 bits alors que l'espace utilisateur est de 32 bits. Android Studio utilise le noyau pour sélectionner les moteurs d'émulation. - Vous pouvez désormais spécifier des chemins d'accès personnalisés à la bibliothèque Qt à l'aide de la variable d'environnement
ANDROID_QT_LIB_PATH
. - Vous pouvez maintenant exécuter l'émulateur avec les binaires précédents qui utilisent QEMU1 si les exécutables QEMU1 (
emulator[64]-[x86|arm|etc]
) sont placés dans le répertoire de l'émulateur. - Windows : correction d'un problème qui empêchait parfois l'émulateur de démarrer avec le message "vCPU shutdown request" (demande d'arrêt du vCPU).
- Correction d'un problème lié à une barrière de pipeline inutile dans les textures compressées émulées dans Vulkan.
- Correction d'une erreur qui se produisait avec les requêtes de proxy HTTP lors d'un encodage de transfert en bloc. Pour en savoir plus, consultez les détails du commit.
29.0.9 (7 mai 2019)
Cette mise à jour inclut le correctif suivant :
- Windows : correction du problème de fonctionnement de la caméra et de la webcam de scène virtuelle sur l'émulateur.
29.0.8 (6 mai 2019)
Cette mise à jour inclut les améliorations et correctifs suivants :
- Ajout de la prise en charge de plusieurs écrans de matériel virtuels lorsqu'il existe un service invité pour énumérer et définir chaque écran. Plusieurs écrans de matériel virtuels seront inclus dans une prochaine mise à jour de l'image système de l'émulateur.
- Ajout d'une nouvelle option de ligne de commande :
-delay-adb
. Cette option supprime le traitement des paquets ADB jusqu'à ce que l'invité ait terminé le démarrage (hors démarrage à froid). Cette option permet de résoudre les problèmes qui peuvent se produire si vous utilisez l'émulateur dans un environnement CI qui redémarre l'émulateur et utilise DDMS en même temps. - Résolution d'une erreur qui se produisait lors du chargement d'instantanés et où
glIsRenderbuffer
renvoyait la valeur incorrecte. - Correction de problèmes d'état obsolète au redémarrage de l'invité Android.
- Windows : correction des problèmes qui empêchaient l'émulateur de démarrer lorsque le nom d'utilisateur Windows comportait des espaces ou des caractères non ASCII.
Problèmes connus
- L'UI des instantanés est désactivée pour les images système Automotive, car les instantanés ne sont pas pris en charge actuellement pour ces images.
29.0.6 (1er mai 2019)
Cette mise à jour comprend plusieurs nouvelles fonctionnalités, des améliorations des fonctionnalités existantes, ainsi que des corrections de bugs.
Suppression de la prise en charge de Windows 32 bits et QEMU1
Pour garantir une meilleure maintenance de l'émulateur, les binaires Windows 32 bits et QEMU1 ne sont plus fournis. Si vous utilisez Windows 32 bits, vous ne pouvez pas effectuer une mise à niveau vers la version 29.0.6.
Configuration requise pour les images système Android Q
Si vous souhaitez exécuter un AVD qui utilise une image système Android Q, vous devez désormais utiliser la version 29.0.6 (cette version) ou une version ultérieure.
Améliorations du projet Marble
Cette mise à jour s'inscrit dans la continuité de notre travail sur le projet Marble annoncé à l'occasion du Sommet des développeurs Android de novembre 2018. Pour en savoir plus sur les autres améliorations apportées au projet Marble dans les versions précédentes, consultez Android Emulator: Project Marble Improvements (Android Emulator : Améliorations du projet Marble).
Pour cette mise à jour, la plupart de nos efforts liés au projet Marble étaient destinés à réduire l'utilisation des ressources de l'émulateur ; par exemple, réduire l'utilisation du processeur de l'émulateur lorsqu'il est inactif. Nous avons également apporté des modifications qui facilitent l'utilisation de l'émulateur dans une plus grande variété d'environnements et résolu des problèmes d'ordre général relatifs à la qualité.
Les sections suivantes décrivent les améliorations apportées au projet Marble qui sont incluses dans cette mise à jour :
Améliorations du comportement audio de l'hôte
À partir de la version 28.0.3, l'émulateur bloque l'entrée audio de l'hôte par défaut.
Si vous souhaitez utiliser les données audio de l'hôte, vous pouvez activer cette option en accédant à Commandes avancées > Microphone et en activant ensuite l'option Le micro virtuel utilise l'entrée audio de l'hôte. Cette option est automatiquement désactivée à chaque redémarrage de l'émulateur.
Si vous utilisez la ligne de commande, vous pouvez également activer le contenu audio de l'hôte à l'aide de l'option -allow-host-audio
. Vous pouvez aussi utiliser les commandes ADB suivantes pour activer ou désactiver, respectivement, les données audio de l'hôte :
adb emu avd hostmicon
adb emu avd hostmicoff
Améliorations apportées aux versions de l'émulateur sans interface graphique
À partir de la version 28.0.25, l'émulateur comprend une option de compilation sans interface graphique qui peut s'exécuter sans l'UI. Les versions sans interface graphique vous permettent de configurer l'émulateur pour les workflows d'intégration continue (CI) et Docker.
Avec cette mise à jour, nous avons apporté des améliorations supplémentaires pour permettre à l'émulateur de fonctionner avec un nombre minimal de dépendances. Sous Linux, les bibliothèques pulseaudio
ou libX11
ne sont plus incluses dans les versions sans interface graphique. Le nombre de bibliothèques partagées dépendant du système qui ne sont pas fournies avec l'émulateur a été réduit. Voici la liste :
Linux-vdso.so.1
Libutil.so.1
Libm.so.6
Libdl.so.2
Librt.so.1
Libpthread.so.0
Libgcc_s.so.1
Libc.so.6
ld-linux-x86-64.so.2
Mise à niveau des bibliothèques d'UI Qt vers la version 5.12 LTS
Cette mise à jour contient les améliorations suivantes par rapport à la version Qt 5.12 LTS :
- Pour éviter les plantages dans le décodage
libpng
de Qt lors du démarrage de certaines images système, l'émulateur utilise désormais sa propre copie delibpng
afin de décoder les images PNG. - Pour résoudre les problèmes liés à certaines installations Linux contenant des versions incompatibles de certaines bibliothèques qui dépendent de Qt, les bibliothèques
libfreetype
,libsoftokn
,libsqlite3
etlibxkbcommon
sont désormais fournies avec l'émulateur. - L'émulateur utilise désormais les bibliothèques de fenêtrage natives de la plate-forme pour obtenir les dimensions du moniteur, au lieu des bibliothèques Qt qui renvoyaient des résultats peu fiables.
Optimisations automatiques du processeur après un démarrage à froid
Pour gérer l'utilisation du processeur, l'émulateur exécute désormais les commandes ADB suivantes lors d'un démarrage à froid après avoir reçu un signal boot complete
:
adb shell settings put screen_off_timeout 214783647
- Cette commande augmente le délai de désactivation de l'écran afin que l'émulateur puisse être utilisé en mode batterie sans charger. En mode batterie, l'utilisation du processeur en arrière-plan s'en trouve considérablement réduite.
- En mode de recharge sur secteur, les opérations d'arrière-plan de GMSCore, telles que les mises à jour d'application, peuvent occuper tous les cœurs de processeur de l'appareil (et par extension, la machine de l'utilisateur) sans aucun avertissement.
adb shell pm revoke com.google.android.googlequicksearchbox android.permission.RECORD_AUDIO
- Cette commande révoque les autorisations d'accès au micro pour l'application de recherche Google, ce qui réduit considérablement l'utilisation du processeur en arrière-plan sur l'écran d'accueil et dans le lanceur d'applications lorsque l'application de recherche Google est active.
- Cette commande s'exécute en plus du comportement par défaut de l'émulateur, qui consiste à désactiver l'entrée audio de l'hôte. De plus, cela permet de réduire automatiquement l'utilisation du processeur, ce qui est décrit pour la détection de mots clés dans la version 28.0.23.
Nouvelles variables d'environnement pour la surveillance des performances
Vous pouvez désormais utiliser deux nouvelles variables d'environnement pour effectuer une surveillance détaillée de l'utilisation des ressources et des performances de l'émulateur.
SHOW_PERF_STATS=1
- Cette variable d'environnement permet de suivre l'utilisation du processeur et de la RAM. Le suivi de l'utilisation de la RAM fait la distinction entre l'utilisation graphique et la mémoire interne totale.
ANDROID_EMU_TRACING=1
- Cette variable d'environnement permet d'imprimer chaque instance d'une opération d'entrée ou graphique qui prend beaucoup de temps (plus de 1 ms).
- Nous utilisons également cette variable d'environnement pour faciliter le diagnostic des problèmes d'à-coups (perte de frames) plus nombreux sous Windows que sous macOS ou Linux.
Améliorations générales du projet Marble
Cette mise à jour contient également les améliorations générales suivantes qui font partie du projet Marble :
- Vous pouvez désormais suspendre immédiatement tous les vCPU (processeurs virtuels) sur l'émulateur à l'aide des commandes de console suivantes :
adb emu avd pause
adb emu avd resume
- Réduction considérable des frais généraux liés au dessin OpenGL. Cette amélioration réduit l'utilisation du processeur pendant que l'émulateur lit des animations.
- La prise en charge du périphérique réseau virtuel e1000 du logiciel QEMU principal a été restaurée. Vous pouvez utiliser ce périphérique pour configurer l'émulateur dans un environnement réseau avec pont, où l'émulateur est affiché sur le réseau hôte et où le réseau hôte est affiché sur l'émulateur.
- Les binaires BIOS appropriés pour QEMU 2.12 sont maintenant utilisés pour démarrer l'émulateur.
- Mise à niveau de
ffmpeg
vers la version 3.4.5 pour l'encodage et le décodage vidéo. - Réduction sensible des frais généraux des E/S de la boucle QEMU principale sur macOS en remplaçant la boucle principale basée sur
select()
par une boucle principale basée surkqueue
. - Augmentation de la taille de la mémoire tampon Logcat à 2 Mo pour résoudre les problèmes de fin de fichier (EOF) inattendue lors de l'exécution de Logcat avec l'émulateur.
- L'émulateur exporte désormais la variable d'environnement
LC_ALL=C
par défaut. Cette modification résout les plantages et les problèmes d'incompatibilité associés à l'exécution de l'émulateur avec différents paramètres régionaux. - Vous pouvez maintenant suivre l'utilisation du processeur et de la RAM de l'émulateur à l'aide de statistiques de performances accessibles en sélectionnant Extended Controls > Settings > Advanced > Performance Stats (Commandes avancées > Paramètres > Avancé > Statistiques de performances). Utilisez ces statistiques pour diagnostiquer rapidement les problèmes si l'émulateur semble utiliser trop de ressources processeur ou de RAM.
glReadPixels GL_IMPLEMENTATION_COLOR_READ_TYPE
utilise désormais le résultat du GPU hôte au lieu d'un résultat émulé. Ce changement permet de résoudre les problèmes liés à l'impossibilité d'afficher des images et des composants en raison d'un formatage de lecture incorrect.- Ajout de la prise en charge des extensions OpenGL ES
GL_EXT_texture_format_BGRA8888
etGL_APPLE_texture_format_BGRA8888
si elles sont compatibles avec l'hôte. - Ajout d'informations de diagnostic à l'UI de Bugreport. De plus, vous pouvez accéder aux rapports de bug à partir de la console à l'aide des commandes suivantes :
telnet localhost 5554
avd bugreport
- Sur les images système Android Q, l'émulateur augmente sa taille de RAM minimale à 2 Go.
- Capacité de journalisation et d'impression accrue en cas d'échec de l'initialisation d'OpenGL ou de l'hyperviseur.
- Si l'émulateur ne parvient pas à démarrer une instance
-read-only
simultanée d'un AVD, il tente désormais de relancer l'AVD-read-only
trois fois de plus en trois secondes. Cette modification augmente la probabilité que l'émulateur puisse lancer des instances-read-only
simultanées d'un AVD si d'autres instances accessibles en écriture de cet AVD n'ont pas fini d'effacer les fichiers obsolètes. - Pour les images système à venir, l'émulateur prend désormais en charge Hardware Composer 2.0. Cette modification devrait réduire la surcharge du pilote lors de l'exécution de la plupart des animations.
- La version de l'émulateur est désormais basée sur CMake/Ninja.
- Dans l'UI des commandes avancées de l'émulateur, les lignes de séparation du tableau des raccourcis clavier ont été restaurées.
- Les utilisateurs peuvent désormais accepter de fournir à notre équipe des métriques d'utilisation du processeur et de la RAM sur un intervalle de 10 secondes. Nous utilisons ces métriques pour enrichir nos données concernant l'utilisation des ressources de l'émulateur avec différents cas d'utilisation de nos utilisateurs, ce qui nous permet d'améliorer l'efficacité et la réactivité de l'émulateur.
Corrections générales du projet Marble
Cette mise à jour contient également les corrections générales suivantes qui font partie du projet Marble :
- Correction des problèmes de tremblement et de frames incorrects qui étaient affichés sur les systèmes équipés de GPU Intel lors de l'utilisation d'images système Android Q.
- Correction du problème d'écran noir qui s'affichait lors de l'utilisation d'images système Android Q avec des skins Pixel 2 XL (ou tout skin avec une encoche ou des coins arrondis).
- Correction d'un problème où l'option de ligne de commande
-partition-size
ne définissait pas la taille de la partition de données. - Correction d'un problème où l'exécution de PulseAudio sur l'émulateur Linux entraînait l'utilisation d'un cœur de processeur complet dans certaines situations.
- Correction des problèmes d'accès à la mémoire hors limites lors du traitement de textures compressées.
- Correction des erreurs GL qui se produisaient sur l'hôte dans
glTexSubImage2D
lors de la mise à jour de certains tampons de Gralloc (aux formats RVB565, RGB10A2 et RGB(A)16F). - Correction d'un problème d'affichage dans les images système Android Q avec des instantanés où la géométrie du volet des notifications était affichée avec un paramètre de diviseur d'instance incorrect.
- Correction de quelques problèmes de plantage et de blocage difficiles à reproduire lors du lancement. Ces problèmes se produisaient en raison de la perte de signaux par Qt ou d'états incohérents et irréguliers au démarrage.
- De nombreux problèmes de simultanéité ont été résolus. Nous sommes maintenant en mesure de compiler l'émulateur Linux avec ThreadSanitizer (TSAN), qui peut facilement détecter les bugs qui sont difficiles à reproduire autrement.
- Pour les utilisateurs Linux : nous avons constaté que sur certains noyaux hôtes, le noyau Android invité pouvait échouer dans KVM en renvoyant une erreur matérielle générique. Désormais, lorsque cela se produit, l'émulateur utilise la commande
abort()
pour augmenter la capacité de débogage (auparavant, il plantait). - Pour les utilisateurs Linux : pour plus de commodité avec les configurations CI, vous pouvez utiliser la nouvelle option de ligne de commande
-stdouterr-file <file-name>
pour redirigerstdout
etstderr
vers un fichier. - Correction du problème lié à une utilisation incorrecte de
SO_REUSEADDR
. Pour en savoir plus, consultez les détails du commit. - Correction d'un problème persistant avec l'émulateur Windows qui entraînait l'échec du démarrage des sous-processus, tels que les commandes ADB, si le nom d'utilisateur contenait des espaces.
- Correction d'un problème d'échec d'initialisation de RCU dans les threads vCPU HAXM. Ce correctif peut éventuellement résoudre certains plantages et conditions de concurrence.
- Correction d'un plantage qui survenait avec certains modèles d'enregistrement et de chargement d'instantanés à partir de l'UI des instantanés lors de l'utilisation d'images système Android Q récentes.
- Correction d'un problème où le flux de la caméra de scène virtuelle était vide lorsque l'émulateur était initialisé à partir d'un instantané si une macro RA était lue lors de l'enregistrement de cet instantané.
- Correction d'un problème d'affichage d'un écran noir pour certains utilisateurs avec des configurations du Bureau à distance lors du lancement de l'émulateur sous Linux. Pour éviter cela, l'émulateur configure désormais explicitement
MESA_RGB_VISUAL
. Pour en savoir plus, consultez les détails du commit. - Correction du problème d'affichage des boutons de rotation sur les AVD TV.
- Correction du problème où la fenêtre des commandes avancées apparaissait à chaque rotation de l'émulateur s'il était défini pour s'afficher toujours au premier plan.
Profils matériels pour les appareils pliables
L'émulateur inclut désormais des profils matériels pour les appareils pliables. Pour utiliser ces nouveaux profils matériels, vous devez utiliser Android Studio 3.5 Canary 10 ou version ultérieure.
Deux profils matériels pliables vous permettent de créer un AVD :
- 7,3" pliable : 1 536 x 2 152 déplié, 4,6" 840 x 1 960 plié
- 8" pliable : 2 200 x 2 480 déplié, 6,6" 1 480 x 2 480 plié
Lorsque vous exécutez l'émulateur avec l'un de ces profils matériels, vous pouvez plier et déplier l'appareil à l'aide des actions correspondantes dans la barre d'outils de l'émulateur, des commandes de la console ou des raccourcis clavier suivants :
- Plier :
Ctrl + F
(Command + F
sur macOS) - Déplier :
Ctrl + U
(Command + U
sur macOS)
Macros RA
L'émulateur inclut désormais des macros RA qui peuvent vous aider à tester les actions RA courantes. Par exemple, vous pouvez utiliser une macro pour rétablir l'état par défaut de tous les capteurs de l'appareil.
Pour en savoir plus, consultez Tester des actions de RA courantes à l'aide de macros.
Prise en charge de Vulkan (Windows et Linux)
Les utilisateurs Windows et Linux peuvent désormais tester les applications Vulkan avec Android Emulator jusqu'à Vulkan 1.1 lorsqu'ils utilisent une image système compatible (Android Q bêta 3 ou version ultérieure pour Vulkan 1.1, Android Q bêta 2 pour Vulkan 1.0) et un GPU hôte compatible (cela inclut la plupart des GPU Intel, NVIDIA et AMD de 2014 et plus récents).
Pour activer la prise en charge de Vulkan, vous devez ajouter les commutateurs de fonctionnalité suivants à votre fichier ~/.android/advancedFeatures.ini
(créez le fichier s'il n'existe pas) :
Vulkan = on
GLDirectMem = on
Prise en charge initiale pour les développeurs de ROM
Les développeurs de ROM qui créent les cibles sdk_phone_x86
ou sdk_phone_x86_64
(variantes userdebug
, eng
) sur la branche AOSP master
peuvent désormais exécuter un émulateur compatible avec Vulkan.
Cette prise en charge en est encore au stade expérimental, et est principalement destinée aux développeurs qui travaillent sur des images système, des pilotes et des moteurs de jeu. Il manque encore de nombreuses extensions.
Cependant, la mémoire HOST_COHERENT
est prise en charge, et vous devriez maintenant être en mesure d'exécuter les exemples de tutoriel de l'API Vulkan.
Si vous utilisez Linux, vous pouvez essayer ceci en exécutant les commandes suivantes :
mkdir aosp-master
cd aosp-master
repo init -u https://android.googlesource.com/platform/manifest -b master --depth=1
repo sync -c -j12
. build/envsetup.sh
lunch sdk_phone_x86_64-userdebug
make -j12
emulator -no-snapshot -feature Vulkan,GLDirectMem
Rendu Skia avec Vulkan
Les GPU NVIDIA et AMD compatibles avec Vulkan prennent également en charge l'interopérabilité sans copie avec OpenGL via l'extension GL_EXT_memory_objects
. L'émulateur tire parti de cette fonctionnalité pour permettre un rendu complet de l'UI Android à l'aide des API Vulkan de Skia.
Si vous disposez d'un GPU NVIDIA ou AMD qui prend en charge Vulkan, utilisez les commandes suivantes pour tester le rendu Skia avec une image système compatible (Android Q bêta 3 ou version ultérieure) :
adb shell
su
setprop debug.hwui.renderer skiavk
stop
start
Compatibilité de macOS avec Vulkan
La prise en charge de macOS en est encore au stade expérimental, mais l'émulateur inclut déjà les API Swiftshader, MoltenVK et libportability (gfx-rs). Vous pouvez tester ces API en définissant les variables d'environnement suivantes :
- Swiftshader :
ANDROID_EMU_VK_ICD=swiftshader
- MoltenVK :
ANDROID_EMU_VK_ICD=moltenvk
- libportability :
ANDROID_EMU_VK_ICD=portability
Problèmes connus
Il arrive parfois que HAXM ne parvienne pas à mapper la mémoire cohérente de Vulkan sur l'invité et arrête l'émulateur. Ce problème sera résolu dans une prochaine mise à jour de HAXM.
Émulateur de streaming gRPC (Linux)
Nous essayons toujours de rendre l'émulateur aussi polyvalent que possible en permettant l'interactivité et le rendu du GPU hôte dans le plus large éventail possible de contextes d'exécution. Les problèmes suivants affectent de longue date les utilisateurs CI et du Bureau à distance :
- L'envoi programmatique de commandes d'entrée à l'émulateur implique soit l'exécution de commandes adb shell, ce qui peut s'accompagner de frais généraux élevés, soit l'utilisation de la console telnet, qui s'avère plus rapide, mais qui peut ne pas fonctionner avec certaines configurations réseau.
- Les utilisateurs CI exécutent souvent des émulateurs sans interface graphique, ce qui peut rendre difficile la détection de problèmes pour lesquels l'écran doit être visible ou interactif.
- Bien souvent, les utilisateurs du Bureau à distance ne peuvent pas interagir avec l'émulateur lorsqu'ils utilisent le rendu GPU hôte, car le rendu GPU est généralement lié aux écrans non virtuels de l'hôte.
Pour résoudre ce problème, en cas d'exécution sur une machine Linux, l'émulateur diffuse désormais un service gRPC. gRPC est un framework général pour RPC qui fonctionne sur HTTP.
Par défaut, le service gRPC de l'émulateur est désactivé, mais vous pouvez l'activer à l'aide de l'option de ligne de commande suivante, où <port>
est le port sur lequel l'émulateur doit diffuser les requêtes gRPC (il s'agit généralement de 5556
) :
-grpc <port>
Une fois le service démarré, les clients peuvent émettre des commandes gRPC. L'ensemble actuel de commandes permet à la fois d'envoyer des événements d'entrée et de recevoir des captures d'écran. Ces commandes permettent de résoudre les problèmes suivants :
- Les commandes d'entrée peuvent être envoyées à l'émulateur avec peu de frais généraux sur HTTP. HTTP permet également d'envoyer des commandes dans des configurations réseau supplémentaires.
- Des commandes de capture d'écran peuvent être envoyées pour interroger l'écran actuel, même si l'émulateur est exécuté sans interface graphique. Pour l'interactivité, des événements d'entrée peuvent également être renvoyés à l'émulateur.
- Les utilisateurs du Bureau à distance peuvent exécuter l'émulateur sans interface graphique sur l'écran principal grâce au rendu accéléré par GPU, tout en utilisant gRPC pour obtenir des captures d'écran et envoyer des événements d'entrée afin d'interagir avec l'émulateur.
Pour obtenir la liste complète des commandes disponibles, consultez ce tampon de protocole.
Pour vous aider à faire vos premiers pas avec gRPC, nous vous proposons des exemples de clients auxquels vous pouvez faire référence.
Actuellement, les exemples suivants sont inclus :
- Un service basé sur Go pouvant être utilisé pour interroger les états de l'émulateur.
- Une application React qui illustre l'interactivité à distance à l'aide de RPC d'entrée et de capture d'écran. Cet exemple nécessite la version 3.7.0 ou ultérieure du tampon de protocole.
- Un exemple Python qui interroge la configuration de VM de l'émulateur, puis envoie une série de commandes.
28.0.25 (29 mars 2019)
Cette mise à jour inclut les améliorations et correctifs suivants :
Version de l'émulateur sans interface graphique
Il a été difficile de configurer l'émulateur avec Docker et d'autres workflows d'intégration continue (CI), en raison des attentes implicites pour que le système prenne en charge Qt et ses dépendances de bibliothèque partagée (entre autres problèmes).
Pour résoudre ce problème, nous avons d'abord publié une variante du lanceur d'applications de l'émulateur avec des exécutables QEMU qui ne dépend pas de Qt. Sous Linux, il existe toujours un lien vers libX11
, mais nous espérons également le supprimer prochainement.
Pour utiliser l'émulateur sans interface graphique, exécutez-le à partir de la ligne de commande comme d'habitude, mais remplacez l'appel du binaire de l'émulateur par emulator-headless
. Pour en savoir plus, consultez la mise à jour de la version 28.1.8 Canary.
- Correction des problèmes de tremblement et d'affichage de frames incorrects sur les GPU Intel lors de l'exécution d'images système Android Q.
- Correction des problèmes d'affichage d'un écran noir lors de l'utilisation d'images système Android Q avec des skins Pixel 2 XL.
- Les binaires de BIOS les plus récents sont désormais utilisés pour démarrer l'émulateur. Cela peut contribuer à réduire les erreurs de "demande d'arrêt du vCPU" qui se produisent parfois lors du lancement de l'émulateur sous Windows.
- Rétroportage d'un correctif pour le problème "Affichage incorrect lors de la réactivation d'images système Android Q à partir d'un instantané".
- Les utilisateurs rencontraient des problèmes d'émulateurs "non autorisés" en raison d'une modification incompatible d'ADB dans Platform-Tools 28.0.2. Vous pouvez désormais utiliser ADB à partir de Platform-Tools 28.0.2 avec l'émulateur. Si vous rencontrez des problèmes avec des émulateurs "non autorisés", suivez les étapes de dépannage ci-dessous :
- Fermez tous les émulateurs.
- Supprimez les fichiers
~/.android/adbkey
et~/.android/adbkey.pub
. - Exécutez la commande suivante :
adb kill-server
- Exécutez la commande suivante :
adb devices
- Effacez les données AVD.
- Relancez l'émulateur.
28.0.23 (29 janvier 2019)
Cette mise à jour inclut les améliorations et correctifs suivants :
Entrée audio de l'hôte désactivée par défaut
Un post récent sur Reddit décrit, de manière détaillée, comment l'OS Android invité utiliserait toujours l'audio du micro hôte, permettant ainsi à "Ok Google" de fonctionner de manière imprévue. Nous en sommes désolés et nous travaillons avec l'équipe Android pour nous assurer que la détection de mot clé est également désactivée dans l'image système.
Pour résoudre ce problème, nous avons apporté les modifications suivantes :
- Par défaut, les données audio de l'hôte sont désormais éliminées. Lorsque l'invité utilise le micro, un silence est transmis au lieu de l'audio de l'hôte.
- Si vous souhaitez utiliser les données audio de l'hôte, vous pouvez désormais activer cette option en accédant à Commandes avancées > Microphone et en activant ensuite l'option Le micro virtuel utilise l'entrée audio de l'hôte. Cette option est automatiquement désactivée à chaque redémarrage de l'émulateur.
Mises à jour sur les enquêtes d'utilisation du processeur
Les enquêtes que nous avons réalisées sur le projet Marble ont fait apparaître qu'une utilisation élevée du processeur sur l'émulateur survenait généralement dans les trois situations suivantes :
Au repos : mises à jour d'application automatiques dans les images Play Store
Nous avons constaté que toutes les applications installées étaient mises à jour à des intervalles aléatoires, même lorsque l'utilisateur n'était pas connecté. Au cours du processus, l'utilisation du processeur est basée sur le nombre de cœurs multiplié par 100 % (généralement environ 400 %) dans GMSCore et dex2oat. Vous pouvez atténuer ce problème en désactivant les mises à jour d'application automatiques dans l'application Play Store.
Au repos : détection de mot clé
Lorsque vous êtes sur l'écran d'accueil et qu'aucune application n'est affichée au premier plan, l'utilisation du processeur peut être importante (environ 25 % avec des pics à 50 %). Cela est dû à la détection de mot clé qui envoie constamment des pings à l'hôte. Vous ne pouvez pas atténuer ce problème en désactivant l'entrée audio de l'hôte, car le coût du processeur est principalement dû au temps nécessaire pour se rendre de l'hôte à l'invité. Vous pouvez toutefois l'atténuer en révoquant les autorisations d'accès au micro à partir de l'appli Google.
En cas d'activité, parfois au repos : animations
Les animations constituent la troisième source d'utilisation intensive du processeur. Nous avons constaté qu'en optimisant la pile de pilotes graphiques, il était également possible de réduire l'utilisation du processeur, même lorsque l'émulateur était actif. Nous déploierons progressivement les optimisations des pilotes graphiques dans le cadre du projet Marble.
28.0.22 (21 décembre 2018)
Cette mise à jour inclut les améliorations et correctifs suivants :
- Correction d'un problème persistant avec certains paramètres qui entraînait le redémarrage de l'émulateur Mac ou une panique du noyau lors d'un enregistrement Quickboot. (Problème : 120951634)
- Lors de l'utilisation d'un fichier mappé en tant qu'instantané RAM, l'émulateur annule désormais explicitement le mappage du fichier à la fermeture.
28.0.20 (11 décembre 2018)
Cette mise à jour inclut les améliorations et correctifs suivants :
- Correction d'un problème sous Windows qui entraînait le blocage de l'émulateur lors du chargement de l'instantané avec certains modèles de GPU Intel.
- Correction d'un problème qui entraînait la définition de l'état d'appareil ADB
unauthorized
lors de l'utilisation d'un emplacementANDROID_SDK_HOME
non standard. - Correction d'un problème sous Windows qui entraînait le plantage de l'émulateur lors du démarrage d'images système alors que l'accélération du processeur était désactivée.
- Correction du problème d'affichage pixélisé de l'émulateur. Le sous-échantillonnage devrait maintenant fonctionner.
- Sous macOS 10.14 et versions ultérieures, le contrôle à la souris de la caméra de scène virtuelle pouvait devenir trop sensible en raison d'une interaction avec les nouveaux paramètres de sécurité d'accessibilité. Ce problème a été résolu.
- Correction d'une erreur de calcul du fuseau horaire qui pouvait entraîner une modification sporadique de l'horloge de l'émulateur.
- Correction des erreurs de rendu dans diverses applications de moteur cocos2d et Unreal.
- Ajout de la prise en charge du Wi-Fi peer-to-peer dans l'émulateur.
Deux émulateurs peuvent désormais communiquer directement via Wi-Fi si vous utilisez la dernière image Play Store Pie. Pour utiliser le Wi-Fi peer-to-peer, démarrez deux AVD avec les mêmes arguments
-wifi-server-port
et-wifi-client-port
:emulator @<server-avd-name> -wifi-server-port 9999
emulator @<client-avd-name>-wifi-client-port 9999
- Ajout de la prise en charge de webcams supplémentaires sous Windows en prenant des tailles de frame incompatibles et en les redimensionnant de manière dynamique pour les adapter au paramètre de la caméra dans l'invité Android.
28.0.16 (novembre 2018)
Cette mise à jour comprend plusieurs nouvelles fonctionnalités, des améliorations des fonctionnalités existantes, ainsi que des corrections de bugs.
Utilisation des ressources
Désormais, l'émulateur utilise globalement moins de RAM, en particulier lors de l'utilisation d'images système avec le niveau d'API 28 ou supérieur. Ces images système améliorent l'utilisation de la mémoire pour les pilotes graphiques du côté invité.
Nous avons également amélioré l'utilisation des ressources dans les domaines suivants :
- Réduction de l'utilisation de la mémoire de l'émulateur au cours des tests de longue durée. Si vous rencontrez toujours des problèmes d'utilisation de la mémoire lors de tests de longue durée, veuillez créer un problème décrivant votre cas d'utilisation dans Issue Tracker.
- Réduction de l'utilisation du processeur lors de l'exécution d'applications avec des animations.
- Correction d'un problème qui pouvait entraîner une fuite du contexte QEMU AIO sous Windows.
Exécuter plusieurs instances simultanées d'un même AVD
Vous pouvez à présent lancer plusieurs instances du même AVD et les exécuter simultanément. Les instances que vous lancez après la première instance sont en lecture seule et les modifications apportées au disque virtuel invité sont supprimées à la fermeture.
Pour exécuter plusieurs instances simultanées du même AVD, lancez toutes les instances après la première sur la ligne de commande à l'aide de l'indicateur -read-only
.
Cette fonctionnalité est rendue possible par la copie des fichiers QCOW2 associés aux parties accessibles en écriture de l'image Android. Pour vous aider à gérer l'espace disque, nous avons également intégré l'outil de ligne de commande qemu-img
afin que vous puissiez effectuer une prévalidation des fichiers QCOW2 avant de lancer plusieurs instances.
En outre, lorsque plusieurs instances AVD sont utilisées parallèlement à la fonctionnalité d'instantanés de RAM d'invité sauvegardés dans un fichier, elles partagent l'instantané AVD Quickboot principal en tant que source commune de RAM d'invité CoW (Copy-on-Write). Cette propriété signifie que les instances partagent une grande partie de leur RAM. Utilisez cette fonctionnalité pour exécuter des tests qui nécessitent l'exécution de plusieurs appareils en parallèle.
N'hésitez pas à nous faire part de vos commentaires sur les cas d'utilisation possibles faisant partie de votre workflow CI ou interactif standard. Nous vous invitons à voter pour des problèmes ou à en créer dans Issue Tracker.
Instantanés de RAM d'invité sauvegardés dans un fichier
En préallouant et en mappant de la RAM d'invité sous forme de fichier, l'émulateur peut maintenant enregistrer des instantanés Quickboot pendant l'exécution, au lieu d'effectuer tout le travail à la fermeture. Si vous constatez actuellement que l'enregistrement prend beaucoup de temps lors de la fermeture de vos émulateurs, activez cette fonctionnalité pour améliorer les performances de Quickboot. Par défaut, un instantané Quickboot est enregistré à la fermeture et rechargé à chaque fois, comme pour la suspension et l'activation d'un appareil réel.
Étant donné que la RAM d'invité Android est désormais enregistrée automatiquement par défaut, si vous souhaitez définir un état d'appareil et le charger à plusieurs reprises à partir de cet état, vous devez indiquer à l'émulateur de supprimer les modifications après chaque session. Pour ce faire, utilisez l'une des méthodes suivantes :
- Utilisez les indicateurs
-no-snapshot-save
ou-read-only
lorsque vous lancez l'émulateur à partir de la ligne de commande. - Accédez à Commandes avancées > Instantanés > Paramètres et définissez l'option Enregistrer automatiquement l'état actuel sur Quickboot ? sur Non.
- Vous devrez redémarrer l'émulateur après avoir sélectionné cette option. Si l'émulateur est configuré pour l'enregistrement automatique, vous pouvez exécuter la commande suivante pour définir un point de contrôle :
Une fois cette commande exécutée, l'instantané Quickboot de l'émulateur restera à ce point de contrôle. Exécutez à nouveau la même commande pour charger l'émulateur à partir de votre point de contrôle.adb emu avd snapshot remap 0
Les instantanés qui sont pris et chargés via l'UI des instantanés fonctionnent comme précédemment, sans mappage de fichiers.
Comme il s'agit d'un changement important au niveau du fonctionnement de Quickboot, nous vous serions reconnaissants de nous dire si cela améliore les performances de Quickboot et de nous indiquer quels types de problèmes vous rencontrez lorsque vous l'utilisez. Si vous rencontrez des problèmes, vous pouvez désactiver cette fonctionnalité en ajoutant la ligne suivante à votre fichier ~/.android/advancedFeatures.ini
:
QuickbootFileBacked = off
Lorsque vous démarrez l'émulateur à partir d'un instantané (soit en utilisant l'option de ligne de commande -snapshot
, soit en le lançant à partir d'un instantané dans AVD Manager), l'émulateur désactive à la fois l'enregistrement automatique des instantanés Quickboot et leur enregistrement à la fermeture. Cela réduit les risques d'écrasement accidentel des instantanés Quickboot et évite les chemins de secours lents qui n'utilisent pas d'instantanés Quickboot sauvegardés dans un fichier.
QEMU 2.12
Nous avons rebasé notre variante de QEMU de QEMU 2.9 vers QEMU 2.12. Cette mise à jour contient les améliorations suivantes apportées à QEMU :
- https://wiki.qemu.org/ChangeLog/2.10
- https://wiki.qemu.org/ChangeLog/2.11
- https://wiki.qemu.org/ChangeLog/2.12
Voici quelques-uns des changements importants qui ont un impact sur Android Emulator :
- x86 :
gdbstub
donne désormais accès aux registres SSE. - Images disque : le verrouillage des images est ajouté et activé par défaut. Sauf indication contraire, plusieurs processus QEMU ne peuvent pas écrire sur la même image tant que l'hôte prend en charge le verrouillage OFD ou POSIX.
qemu-img: qemu-img resize
prend en charge la préallocation des nouvelles parties de l'image.- La réduction QCOW2 est désormais prise en charge dans
qemu
etqemu-img
.
Accessibilité
- Correction des problèmes liés aux lecteurs d'écran, et amélioration de la prise en charge de ces outils dans l'UI des instantanés et de l'enregistrement d'écran.
- Les icônes de notification de Quick Boot sont désormais plus accessibles aux utilisateurs daltoniens.
Graphiques
- Correction d'un problème d'accès à la mémoire hors limites qui pouvait survenir pour les pointeurs de tableaux de sommets OpenGL ES.
- Certains GPU plus anciens ne prenaient pas en charge OpenGL 2.1 ou version ultérieure (ce qui est obligatoire), ou présentaient d'autres problèmes de fiabilité. En raison de ces problèmes, l'émulateur pouvait planter au démarrage, se bloquer ou être inutilisable avec le paramètre GPU par défaut. L'émulateur bascule désormais automatiquement vers le moteur de rendu Swiftshader s'il détecte que ces GPU sont en cours d'utilisation.
- Correction d'un problème qui empêchait l'émulateur de publier le framebuffer correct si
FBO != 0
était lié au moment de l'exécution de la méthodeeglSwapBuffers
. - Correction du problème où l'écran Android virtuel s'affichait uniquement en haut à gauche. Nous pensons que cela était dû à une mauvaise configuration des variables d'environnement Qt. L'émulateur ignore désormais toutes les variables d'environnement liées au scaling de Qt.
- Correction du problème de plantage sporadique de l'émulateur lors du chargement d'applications GLES1 à partir d'un instantané.
- Correction des problèmes de simultanéité dans OpenGL et de lancement de threads de rendu pouvant entraîner des doubles libérations ou une corruption des données.
- Android Emulator prend désormais en charge les textures ASTC LDR (
GL_KHR_texture_compression_astc_ldr
) compressées pour les images système qui utilisent le niveau d'API 28 ou supérieur. - La plupart des GPU modernes devraient maintenant être en mesure de lancer l'émulateur avec OpenGL ES 3.x activé par défaut sans utiliser le commutateur de fonctionnalité
GLESDynamicVersion
. -gpu guest
(rendu logiciel dans l'invité) est maintenant obsolète. Les images système pour le niveau d'API 28 ou supérieur utilisent désormais automatiquement Swiftshader à la place (-gpu swiftshader_indirect
).- Si l'émulateur est lancé à partir de la ligne de commande à l'aide de l'indicateur
-no-window
, le moteur de rendu par défaut est désormais Swiftshader.
Localisation
- L'émulateur peut désormais mettre à jour le relèvement avec la latitude et la longitude. Le capteur virtuel du magnétomètre s'adapte de manière dynamique au nord magnétique en déduisant le mouvement lors de la lecture d'un fichier GPX ou KML.
- Vous pouvez désormais définir la vitesse de l'appareil sur la page "Position".
- Lors de la lecture d'un fichier GPX ou KML, la vitesse est définie automatiquement. Elle est réglée sur zéro à la fin de la lecture.
- L'altitude n'est plus limitée à une plage comprise entre -1 000 et +10 000 mètres.
- Correction du problème où la position GPS virtuelle n'était pas mise à jour régulièrement, sauf si la fenêtre "Commandes avancées" avait été ouverte au moins une fois.
Caméra
Davantage de webcams sont désormais prises en charge sous Windows, car l'émulateur redimensionne de manière dynamique les frames de caméra diffusés à partir de la webcam. Cette fonctionnalité empêche également que les erreurs de diffusion de frames n'entraînent le blocage de l'émulateur.
Play Store
Pour résoudre les problèmes d'espace disque insuffisant sur les images Play Store, l'émulateur redimensionne désormais automatiquement la partition des données utilisateur (userdata) à 6 Go lorsqu'elle est exécutée avec un nouvel AVD Play Store.
Améliorations et corrections générales au niveau de la qualité
- Certains utilisateurs ont signalé que l'émulateur fonctionnait lentement. Nous avons identifié une cause possible : cela peut se produire lorsque le répertoire temporaire de l'émulateur contient trop de fichiers obsolètes. Pour contourner ce problème, l'émulateur ne stocke plus les fichiers de vérification d'activité ADB dans ce répertoire. Cependant, il peut également s'avérer utile de supprimer le contenu de ce dossier. Le dossier se trouve à l'un des emplacements suivants, en fonction de votre système d'exploitation :
- Windows :
C:\Users\<username>\AppData\Local\Temp\AndroidEmulator\*
- macOS ou Linux :
/tmp/android-<username>/*
- Windows :
- Si l'émulateur ne parvient pas à démarrer en raison d'une RAM libre insuffisante, un message d'erreur vous en informe désormais. Si vous utilisez Windows et constatez que de la RAM est disponible, mais que vous ne parvenez toujours pas à démarrer l'émulateur, il est possible que la charge de commit ait été dépassée. Pour obtenir de l'aide sur ce problème, consultez la page de dépannage de l'émulateur.
- L'option de ligne de commande
-sysdir
remplace désormais correctement le répertoire d'images système déduit. - Le modem virtuel prend désormais en charge la requête d'informations sur l'activité du modèle
+MAI
. - Correction de divers problèmes de fuite de mémoire, de corruption de mémoire et d'utilisation du processeur. En cas de plantage, de fuite de mémoire ou d'autres problèmes liés à une utilisation intensive des ressources, veuillez créer un problème dans Issue Tracker.
- Correction d'un problème qui se produisait sous macOS 10.14, où l'utilisation d'un casque Bluetooth avec l'émulateur entraînait une dégradation générale de l'audio. Pour éviter cela, l'émulateur évite désormais d'utiliser l'audio Bluetooth en cas d'exécution sur macOS. (Problème : 37070892)
- Correction d'un problème sous Windows où l'horloge de l'émulateur n'utilisait pas le bon fuseau horaire.
- Correction d'un problème de lenteur et de blocage de l'émulateur sur les systèmes Linux équipés de disques durs rotatifs.
- Correction de certains avertissements de compilation qui pouvaient entraîner une corruption de la pile sous macOS.
- Correction de problèmes qui pouvaient entraîner la création de faux rapports de blocage.
- Correction d'un problème de destruction des pools de threads qui pouvait entraîner un plantage si l'un des threads n'était pas créé correctement.
- Correction d'un problème de fiabilité des minuteurs sous macOS, ce qui entraînait des blocages et d'autres comportements étranges. Si l'émulateur se bloque sous macOS, veuillez créer un problème dans Issue Tracker.
- Correction d'un problème où la fermeture de l'émulateur désactivait l'UI, mais ne fermait pas l'émulateur.
- Correction de problèmes occasionnant des plantages sporadiques, y compris un abandon dû à l'ouverture d'un trop grand nombre d'instances de
/dev/urandom
. - Correction d'un problème qui empêchait l'émulateur de démarrer après la première exécution si ADB était arrêté de force.
- La version MIPS a été supprimée. Si vous avez encore besoin de MIPS, veuillez créer un problème dans Issue Tracker.
- Correction d'un problème de corruption des connexions ADB lors du chargement de l'instantané.
- Correction d'un problème où la fenêtre de l'émulateur affichait une image rémanente ou était téléportée hors de l'écran lors de la reprise d'un instantané lorsque l'orientation de l'appareil était différente de l'orientation par défaut de l'AVD.
- Correction de problèmes de plantage lors de l'enregistrement d'instantanés.
- Sous Linux, les systèmes de fichiers btrfs peuvent provoquer des ralentissements extrêmes, car l'émulateur enregistre automatiquement des instantanés et utilise la technique CoW (Copy-on-Write) pour ses périphériques de disque virtuel. Nous vous recommandons de nettoyer le répertoire
~/.android/avd
et d'exécuter la commande suivante sur le répertoire~/.android/avd
vide : Cette opération crée des instantanés dans un dossier où la copie sur écriture est désactivée.chattr +C
HAXM 7.3.2
Nous aimerions à nouveau mentionner HAXM 7.3.2, car il doit être installé pour que les images système récentes s'exécutent correctement sur l'émulateur. HAXM 7.3.2 devrait déjà être disponible en version stable. Vous pouvez également l'installer manuellement à partir de l'adresse suivante : https://github.com/intel/haxm/releases.
Voici quelques-uns des problèmes résolus par cette version de HAXM :
- Correction des plantages aléatoires des OS invités qui utilisent un noyau Linux récent (>= 4.6). Par exemple, Ubuntu 18.04 (#39, #74).
- Correction d'un bug de l'émulateur d'instructions x86 qui pouvait entraîner un plantage de l'hôte (#93).
Abandon de Windows 32 bits
En raison de la faible utilisation et des coûts de maintenance élevés, nous prévoyons d'abandonner la version 32 bits d'Android Emulator qui s'exécute sous Windows. Nous déploierons un plan de transition avant la suppression et la fin de vie de la version 32 bits d'Android Emulator. Cependant, nous aimerions connaître votre avis concernant ce changement à venir.
Veuillez nous indiquer dans Issue Tracker si vous utilisez actuellement la version 32 bits d'Android Emulator qui s'exécute sous Windows et nous dire ce que nous pouvons faire pour mieux vous aider à l'avenir.
27.3.10 (août 2018)
Cette mise à jour inclut la correction de bug suivante :
Correction de la configuration de la taille de la RAM
Certains utilisateurs ont signalé que l'émulateur fonctionnait lentement. Nous avons identifié une cause possible : cela peut être dû à une mauvaise configuration de la taille de la RAM AVD dans le fichier config.ini
de l'AVD.
Pour atténuer ce problème, l'émulateur augmente la quantité de RAM minimale pour les images qui utilisent le niveau d'API 26 ou supérieur sur la quantité par défaut d'Android Studio (à savoir 1 536 Mo). Si le fichier config.ini
de votre AVD n'indique pas hw.ramSize
en mégaoctets, veuillez créer un problème dans Issue Tracker.
Le fichier config.ini
se trouve à l'emplacement suivant :
~/.android/avd/<avdname>.avd/config.ini
27.3.9 (juillet 2018)
Cette mise à jour inclut les améliorations et correctifs suivants :
Messages d'erreur améliorés pour Windows Hypervisor Platform
Pour certains utilisateurs, il était difficile de déterminer pourquoi Windows Hypervisor Platform (WHPX) ne parvenait pas à s'initialiser lors de l'activation d'un émulateur WHPX. Pour vous aider à diagnostiquer ces problèmes, nous avons ajouté des messages d'erreur plus explicites. Vous pouvez activer ces messages d'erreur en exécutant l'émulateur à partir de la ligne de commande à l'aide de l'indicateur -verbose
.
Corrections générales
- Correction des erreurs OpenGL qui survenaient lors du chargement d'un instantané dans l'application Appareil photo.
27.3.8 (juillet 2018)
Cette mise à jour comprend plusieurs nouvelles fonctionnalités, des améliorations des fonctionnalités existantes, ainsi que des corrections de bugs.
Instantanés
Vous pouvez désormais enregistrer plusieurs instantanés AVD pour une configuration d'appareil donnée et choisir celui que vous souhaitez charger au démarrage de l'émulateur.
À partir d'Android 3.2 Canary 13, chaque configuration d'appareil comprend une commande dans les paramètres avancés de la boîte de dialogue "Configuration de l'appareil virtuel", qui vous permet de spécifier l'instantané AVD à charger au démarrage de l'AVD.
Pour prendre en charge cette extension des fonctionnalités d'instantané, nous avons ajouté la catégorie Instantanés à la boîte de dialogue Commandes avancées. Ce nouveau volet contient des commandes permettant d'enregistrer et de charger des instantanés AVD, y compris des commandes d'enregistrement et de chargement de l'instantané Quick Boot qui se trouvaient auparavant dans le volet Settings (Paramètres).
Vous pouvez modifier le nom et la description de chaque instantané enregistré.
Pour en savoir plus, consultez Instantanés.
HAXM 7.2.0
HAXM 7.2.0 est désormais disponible dans tous les canaux.
Cette mise à jour inclut des corrections de bugs et une meilleure prise en charge des grandes quantités de RAM. Avec cette mise à jour de HAXM et la version 27.3 ou ultérieure d'Android Emulator, les instantanés chargent leur contenu dans la RAM à la demande au lieu d'être chargés intégralement au démarrage de l'appareil virtuel. Cette modification devrait réduire considérablement le temps nécessaire au chargement d'un instantané.
Pour en savoir plus, consultez Configurer l'accélération de la VM.
27.2.9 (mai 2018)
Cette mise à jour comprend plusieurs nouvelles fonctionnalités, des améliorations des fonctionnalités existantes, ainsi que des corrections de bugs.
Enregistrement de l'écran
Vous pouvez maintenant enregistrer des vidéos et des fichiers audio à partir d'Android Emulator et sauvegarder l'enregistrement dans un fichier WebM ou GIF animé.
Les commandes d'enregistrement de l'écran se trouvent dans l'onglet Enregistrement de l'écran de la fenêtre Commandes avancées.
Astuce : Vous pouvez également ouvrir les commandes d'enregistrement de l'écran en appuyant sur Ctrl+Maj+R (Commande+Maj+R sur Mac).
Pour démarrer l'enregistrement de l'écran, cliquez sur le bouton Start recording (Démarrer l'enregistrement) dans l'onglet Screen Record (Enregistrement de l'écran). Pour arrêter l'enregistrement, cliquez sur Stop recording (Arrêter l'enregistrement).
Les commandes permettant de lire et de sauvegarder la vidéo enregistrée se trouvent en bas de l'onglet Screen record (Enregistrement de l'écran). Pour enregistrer la vidéo, sélectionnez WebM ou GIF dans le menu situé en bas de l'onglet, puis cliquez sur Save (Enregistrer).
Vous pouvez également enregistrer et sauvegarder un enregistrement d'écran à partir de l'émulateur à l'aide de la commande suivante dans la ligne de commande :
adb emu screenrecord start --time-limit 10 [path to save video]/sample_video.webm
Captures d'écran
Vous pouvez effectuer des captures d'écran à partir de la ligne de commande à l'aide de l'une des commandes suivantes :
screenrecord screenshot [destination-directory]
adb emu screenrecord screenshot [destination-directory]
Les captures d'écran sont enregistrées au format PNG.
Caméra de scène virtuelle et ARCore
Désormais, il est encore plus facile de développer et de tester des applications de réalité augmentée (RA) avec ARCore grâce à la nouvelle caméra de scène virtuelle qui vous permet de tester votre expérience de RA dans un environnement virtuel.
Pour plus d'informations sur l'utilisation de la caméra de scène virtuelle dans l'émulateur, consultez Exécuter des applications de RA dans Android Emulator.
Google Play Store sur les images d'appareil Pixel
Le Google Play Store est maintenant activé pour les images d'appareil Pixel et Pixel 2. Cela est indiqué par le logo Google Play dans la colonne Play Store d'AVD Manager, dans Android Studio 3.2 et versions ultérieures. Dans les AVD où le Google Play Store est activé, un onglet Google Play est disponible dans la boîte de dialogue Commandes avancées. Il fournit un bouton pratique pour mettre à jour les services Google Play sur l'appareil.
Instantanés
Vous pouvez désormais charger un instantané Quick Boot sans redémarrer l'émulateur. Pour charger un instantané, ouvrez la fenêtre Commandes avancées sur la page Paramètres, puis cliquez sur le bouton Charger maintenant.
Nous avons apporté de nombreuses améliorations au chargement et à l'enregistrement des instantanés pour une utilisation plus efficace des ressources et pour réduire le temps nécessaire à chaque opération. Si les durées d'enregistrement sont toujours inhabituellement longues, veuillez consigner un problème en fournissant des informations sur le processeur, la RAM et les paramètres de tout antivirus, pare-feu ou logiciel de sécurité en cours d'exécution.
Effectuer un rendu avec Skia
Lorsque vous utilisez des images pour le niveau API 27 ou supérieur, l'émulateur peut afficher l'UI Android avec Skia, ce qui garantit un rendu plus fluide et plus efficace.
Pour le moment, vous devez activer explicitement Skia pour l'utiliser.
Pour activer le rendu Skia, utilisez les commandes suivantes dans l'interface système adb :
su setprop debug.hwui.renderer skiagl stop start
Caméra
Sous Windows, Android Emulator utilise désormais Media Foundation comme backend de webcam, ce qui améliore considérablement les performances et la fréquence d'images de la capture avec webcam (jusqu'à 720p à 30 FPS).
Sous macOS, vous pouvez désormais utiliser webcam0 et webcam1 en même temps.
Divers
L'option de ligne de commande -phone-number-prefix
a été remplacée par -phone-number [number]
, ce qui permet de définir le numéro de téléphone complet.
Vous pouvez désormais utiliser des adresses SMS alphanumériques.
Correctifs
- La version Linux d'Android Emulator est désormais compilée à l'aide d'une chaîne d'outils C++ Clang moderne. Cette modification résout le problème d'échec de démarrage de l'émulateur en raison d'erreurs libGL et libstdc++.
- Correction de plusieurs causes de plantages et de blocages.
- Pour éviter les plantages et les blocages dus à un espace disque insuffisant, l'émulateur vérifie désormais qu'il y a suffisamment d'espace disque libre au démarrage et ne démarre que si au moins 2 Go sont disponibles.
- Correction d'un problème qui empêchait le rendu de certains jeux Unity.
- Correction d'un problème de DNS qui empêchait l'émulateur de se connecter au réseau.
- Correction d'un problème en raison duquel les modifications apportées à la mémoire de stockage interne allouée à un AVD via la boîte de dialogue "Configuration de l'appareil virtuel" ne fonctionnaient pas.
- Correction du problème où de nombreux processus adb étaient créés, mais n'étaient pas arrêtés correctement.
- Correction d'un problème en raison duquel les boutons de rotation et d'autres parties de l'UI ne répondaient plus, à moins que la fenêtre des commandes avancées ne soit ouverte.
- Correction d'un problème qui empêchait de copier et de coller du contenu à partir de l'hôte, sauf si la boîte de dialogue des commandes avancées était ouverte au moins une fois.
- Le rectangle de redimensionnement de l'émulateur sans cadre a été mis à jour pour mieux correspondre au thème visuel de l'émulateur.
- Les appels téléphoniques et les SMS sont désormais correctement désactivés lorsque le mode Avion est activé.
- Correction d'un problème qui entraînait la désactivation des fonctionnalités SMS et mobiles après le chargement d'un instantané.
- Vous ne recevrez plus de faux messages d'avertissement indiquant
“Unable to open... \pstore.bin. Permission denied.”
. - Correction d'un problème qui empêchait le repositionnement de l'AVD sur certains écrans Mac.
- Correction des problèmes de scintillement et d'écran vide sur les nouveaux ordinateurs MacBook Pro lors de l'exécution d'AVD avec des skins Pixel 2 XL.
- Correction des problèmes d'écran vide lors du passage en mode zoom alors qu'un émulateur sans cadre était actif.
- Correction d'un problème qui provoquait un défilement désynchronisé du skin de l'appareil et du contenu de l'émulateur lors d'un zoom avant.
Si les problèmes de blocage ou d'autres instabilités persistent, veuillez signaler un problème.
27.1.12 (mars 2018)
Cette mise à jour inclut des correctifs pour les problèmes suivants :
- Dégradation de la qualité audio Bluetooth après le démarrage de l'émulateur. (Problème : 37095756)
- Les positions envoyées à un émulateur étaient envoyées à tous les émulateurs. (Problème : 73450633)
- La position GPS définie à l'aide de la console était remplacée par les valeurs définies via Commandes avancées > Position dans l'interface utilisateur graphique. (Problème : 73471760)
Si les problèmes de blocage ou d'autres instabilités persistent, veuillez signaler un problème.
Avec cette mise à jour, une image système actuelle et une version preview d'Android Studio, vous pouvez utiliser Android Emulator pour exécuter des applications de réalité augmentée créées avec ARCore. Pour en savoir plus sur la configuration requise et obtenir des instructions détaillées, consultez Exécuter des applications de RA dans Android Emulator.
27.1.10 (février 2018)
Résolution de capture avec la caméra
Vous pouvez désormais capturer des images en 720p à partir d'une webcam connectée.
Pour fonctionner avec des images système Android 8.1 (niveau d'API 27) et versions ultérieures, toute webcam connectée doit être capable de capturer des images en 720p.
Correctifs
- Correction d'un problème en raison duquel la capture avec une webcam produisait parfois une image déformée ou entièrement verte.
- Correction d'un problème en raison duquel le message d'erreur suivant pouvait être renvoyé même s'il n'y avait pas de blocage réel : "emulator: ERROR: detected a hanging thread 'Qt event loop'. No response for 15000 ms".
Si les problèmes de blocage ou d'autres instabilités persistent, veuillez signaler un problème.
27.1.7 (février 2018)
Fenêtre de l'émulateur sans frame :
Par défaut, les émulateurs contenant des fichiers de skin d'appareil sont maintenant affichés sans frame de fenêtre. Pour afficher le frame de fenêtre, activez l'option Afficher le frame de fenêtre autour de l'appareil dans le volet "Paramètres" de la fenêtre Commandes avancées.
Améliorations Quick Boot pour optimiser l'utilisation des instantanés AVD.
- Vous pouvez enregistrer un instantané AVD à tout moment à l'aide du bouton Save Now (Enregistrer maintenant) situé dans le volet "Settings" (Paramètres) de la boîte de dialogue Extended Controls (Commandes avancées).
- Dans bien des cas, l'émulateur réduit le temps nécessaire pour enregistrer un instantané en n'enregistrant que la différence entre l'état actuel et l'instantané enregistré précédemment.
Pour en savoir plus, consultez la documentation de Quick Boot.
L'émulateur a été mis à jour pour utiliser QEMU 2.9.
Voici quelques améliorations importantes :
- Optimisation des E/S et verrouillage des threads d'E/S plus précis pour de meilleures performances.
- Corrections de bugs depuis QEMU 2.8 (26.1.4).
- Nouvelle implémentation du backend HAXM.
Pour consulter la liste complète des modifications, reportez-vous au journal des modifications de QEMU 2.9.
Implémentation Swiftshader conforme à OpenGL ES 3.0 :
Le moteur de rendu Swiftshader de l'émulateur est désormais entièrement conforme à OpenGL ES 3.0. Pour en savoir plus sur le moteur de rendu Swiftshader, consultez la section Paramètres > Avancé de la fenêtre Commandes avancées.
Correctifs
- Correction du problème où le partage du presse-papiers ne fonctionnait que si l'option Activer le partage du presse-papiers était désactivée, puis activée.
- Correction d'un blocage lors de l'utilisation du backend de rendu Swiftshader avec des AVD en basse résolution.
27.0.5 (janvier 2018)
Le moteur de rendu sous Windows ANGLE est désormais désactivé par défaut.
Si ANGLE fonctionne mieux pour vous, vous pouvez le réactiver avec l'indicateur de ligne de commande
-gpu angle_indirect
. Vous pouvez également ouvrir la fenêtre "Commandes avancées", accéder à Paramètres > Avancé, puis sélectionner ANGLE D3D11 comme paramètre du moteur de rendu OpenGL ES.Correction du problème où la combinaison de touches Maj+B ne saisissait pas la lettre "B" majuscule.
27.0.2 (décembre 2017)
La nouvelle fonctionnalité Quick Boot permet de démarrer plus rapidement l'émulateur, sur la base d'un instantané de votre instance AVD.
Quick Boot est activé par défaut pour tous les AVD. L'AVD doit effectuer un démarrage à froid lorsqu'il est démarré pour la première fois (comme quand vous allumez un appareil). Cependant, tous les démarrages ultérieurs seront rapides et le système sera restauré à l'état dans lequel vous avez fermé l'émulateur (procédure semblable à l'activation d'un appareil).
Si vous souhaitez contrôler le moment où l'émulateur enregistre un instantané, ouvrez la fenêtre des commandes avancées de l'émulateur, puis cliquez sur Paramètres. Vous pouvez alors sélectionner l'un des paramètres suivants pour Enregistrer l'état de Quick Boot à la fermeture :
- Oui : toujours enregistrer l'instantané Quick Boot à la fermeture de l'émulateur. Il s'agit de l'option par défaut.
- Non : ne jamais enregistrer l'instantané Quick Boot ; toujours effectuer un démarrage à froid.
- Demander : demander si l'instantané Quick Boot doit être enregistré ou non à la fermeture de l'émulateur.
L'option sélectionnée ne s'applique qu'à l'AVD ouvert actuellement.
Pour en savoir plus, consultez la documentation de Quick Boot.
Ajout de la prise en charge de Mac OpenGL ES 3 (pour les images système utilisant le niveau d'API 24 ou supérieur, les API Google et l'ABI x86).
Pour une meilleure stabilité dans les applications OpenGL ES 2 et versions ultérieures, l'émulateur utilise désormais le profil principal OpenGL, s'il est disponible.
Nouvelles options de rendu avec Swiftshader/ANGLE :
-gpu swiftshader_indirect
: variante plus rapide et plus stable de Swiftshader, compatible avec Quick Boot.-gpu angle_indirect
(Windows uniquement) : variante plus stable d'ANGLE D3D qui fonctionne également avec Quick Boot.
Les options
-gpu swiftshader
et-gpu angle
plus anciennes sont désormais obsolètes. Dans la fenêtre "Commandes avancées", les options "SwiftShader" et "ANGLE" du paramètre de moteur de rendu OpenGL ES sous Settings > Advanced (Paramètres > Avancé) utilisent désormais les variantes*_indirect
.D'autres bugs ont également été corrigés.
26.1.4 (août 2017)
Il s'agit d'une version mineure dans laquelle des bugs ont été corrigés et les améliorations suivantes ont été apportées à la configuration du GPU :
- Activation de l'animation au démarrage lors de l'exécution sur le moteur de rendu ANGLE
- Désactivation de GLES3 lors de l'exécution sur le moteur de rendu ANGLE
26.1.3 (août 2017)
Cette version mineure propose des corrections de bugs, des améliorations des performances et de légères modifications des fonctionnalités.
- Cette version est désormais requise pour utiliser les dernières images système Android 8.0.
Elles sont compatibles avec Treble et comportent des partitions
vendor.img
distinctes. - La nouvelle version 6.2.0 de HAXM est désormais disponible (consultez SDK Manager) et inclut les mises à jour suivantes :
- Meilleure utilisation de la mémoire. La plage de travail maximale de mémoire épinglée par HAXM n'est plus égale à la taille de la RAM de l'AVD. Au lieu de cela, la mémoire est paginée à la demande. Cela devrait permettre à l'émulateur de s'exécuter de manière plus fiable sur les machines disposant de moins de RAM.
- L'émulateur avec HAXM 6.2.0 peut désormais démarrer plus rapidement sous macOS, en évitant une longue phase d'initialisation.
- Améliorations apportées à la configuration du GPU
- Correction du problème d'affichage d'un écran noir au démarrage lors de l'exécution d'un rendu logiciel côté invité en revenant au rendu logiciel côté hôte avec Swiftshader. Les dernières révisions des images système pour les niveaux d'API 19 à 25 avec les API Google devraient disposer d'un rendu fonctionnel côté invité.
- Correction du problème où l'émulateur était basculé vers un moteur de rendu logiciel en raison de la détection de GPU Intel plus anciens, alors qu'il était, en réalité, exécuté sur un GPU distinct. Pour savoir quels GPU basculeront vers le rendu ANGLE ou Swiftshader, on se base sur ce qui suit :
- Les GPU Intel plus anciens ont des problèmes avec les pilotes OpenGL et ANGLE D3D. Les utilisateurs d'Intel HD Graphics 3xxx et versions antérieures utiliseront Swiftshader.
- Certains utilisateurs ont signalé l'impossibilité d'utiliser des images du niveau d'API 25 en raison d'un bug dans lequel le lanceur d'applications Pixel s'arrête continuellement ("Pixel Launcher keeps stopping"). Il semble que ce soit un problème de pilote sur certains modèles Intel HD 4xxx. Le basculement vers ANGLE sera donc effectué automatiquement.
- Pour de meilleurs résultats avec l'émulation GPU, nous vous recommandons d'utiliser soit un GPU NVIDIA ou AMD distinct, soit un GPU Intel plus récent (Iris, HD 5xxx, HD 5xx/6xx).
- Correction du problème d'échec de démarrage de l'émulateur (échec d'initialisation de l'émulation OpenGL) si l'AVD était configuré avec
hw.gpu.mode=host
et que l'émulateur était lancé sur un client du Bureau à distance. - Clarification des paramètres "OpenGL ES API level (requires restart)" (Niveau d'API OpenGL ES - Redémarrage requis). Ajout d'une option permettant de repasser d'OpenGL ES 3 à OpenGL ES 2 en cas de problème ou si vous devez tester des niveaux d'API inférieurs d'OpenGL ES.
- Le moteur de rendu Mesa est obsolète.
hw.gpu.mode=mesa
basculera désormais automatiquement vers Swiftshader sur l'hôte.
- Améliorations pour macOS :
- L'émulateur est désormais entièrement compatible avec macOS 10.13 High Sierra via Hypervisor.Framework ou HAXM 6.2.0.
- Hypervisor.framework est désormais activé par défaut sur macOS pour les images x86 32 bits afin d'améliorer les performances et la compatibilité avec macOS. Si vous rencontrez des problèmes spécifiques avec Hypervisor.framework, veuillez envoyer un rapport de bug et ajouter
HVF = off
à~/.android/advancedFeatures.ini
(créez ce fichier si nécessaire). - Correction des problèmes liés à l'absence d'accès à Internet ou à l'échec d'association du débogueur lors de l'utilisation de Hypervisor.framework.
- Dans le but d'améliorer la compatibilité et les performances de la capture avec la webcam, la capture avec caméra basée sur QTKit a été remplacée par une capture en mémoire tampon basée sur AVFoundation.
- Ajout de la prise en charge du Wi-Fi dans certaines images système (actuellement avec le niveau d'API 25 uniquement).
Un point d'accès appelé "AndroidWifi" est disponible et Android s'y connecte automatiquement. La prise en charge du Wi-Fi peut être désactivée en exécutant l'émulateur avec le paramètre de ligne de commande
-feature -Wifi
. - Certains utilisateurs nous ont fait part de leur inquiétude concernant le manque d'espace de stockage dans les images système du Play Store de taille fixe. Nous avons donc augmenté la taille à 2 Go par défaut (contre 800 Mo auparavant).
- Ajout d'un raccourci clavier (Ctrl+Maj+U) permettant d'ouvrir la page d'UI du rapport de bug directement à partir de la page des paramètres.
- Si un ancien processeur avec EPT Intel x86, mais sans UG, était utilisé, l'émulateur ne démarrait pas si plusieurs cœurs étaient configurés. Ce problème a été résolu.
- Correction du problème de détection incorrecte de HyperV si l'émulateur était lui-même exécuté dans un hyperviseur Xen.
- Correction du problème de plantage de l'émulateur au démarrage dans certaines configurations Linux.
26.1.2 (juillet 2017)
Cette version inclut de nouvelles fonctionnalités et des améliorations des performances.
Ajout de la possibilité de définir une configuration de proxy HTTP personnalisée dans les commandes avancées (cliquez sur More (Plus) , puis sur Settings (Paramètres) et Proxy). Par défaut, l'émulateur utilise les paramètres de proxy HTTP d'Android Studio, mais cet écran vous permet de définir une configuration de proxy manuelle.
Ajout de la prise en charge de VNC pour le GPU en mode Invité, de sorte que l'émulateur puisse être visualisé et contrôlé à distance. Vous pouvez, par exemple, lancer l'émulateur et laisser VNC écouter sur le port 5901 comme suit :
- Exécutez :
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1
Ouvrez une visionneuse VNC, telle que tightvnc, pour vous connecter au port 5901.
Pour utiliser le client de partage d'écran intégré de macOS, un mot de passe VNC est nécessaire au lancement de l'émulateur. Pour définir un mot de passe, utilisez la commande suivante :
emulator -gpu guest -avd avd_name -no-window -qemu -vnc :1,password -monitor stdio
Saisissez ensuite
change vnc password
dans la console et entrez un mot de passe.
Actuellement, Android O n'est pas pris en charge pour le mode VNC.
- Exécutez :
Ajout d'un bouton Signaler un bug sur l'écran d'aide des commandes avancées. Pour ce faire, cliquez sur More (Plus) , puis sur Help (Aide) et sur Emulator help (Aide de l'émulateur). Cliquez sur File a bug (Signaler un bug) pour ouvrir une boîte de dialogue contenant les détails du rapport de bug, tels que la capture d'écran, les informations de configuration AVD et le journal du rapport de bug. Vous pouvez ensuite enregistrer le rapport ou signaler des problèmes d'émulateur.
Ajout d'un capteur gyroscopique à l'émulateur et au panneau des capteurs virtuels. Pour que cela fonctionne, une image système prenant en charge le gyroscope est nécessaire (il s'agit actuellement des niveaux d'API 24 et 25).
Ajout du DNS préféré de l'hôte à la liste DNS Qemu sous Windows lorsque plusieurs interfaces de réseau virtuel sur l'hôte introduisent plusieurs adresses DNS qui ne fonctionnent pas pour l'émulateur.
Ajout de la prise en charge expérimentale de Hypervisor.Framework pour les images x86 32 bits sous macOS 10.10+ via des indicateurs de serveur. Cela devrait améliorer le temps de démarrage et les performances.
- Si vous rencontrez des problèmes à ce niveau, ajoutez la ligne
HVF = off
dans~/.android/advancedFeatures.ini
.
- Si vous rencontrez des problèmes à ce niveau, ajoutez la ligne
OpenGL ES 3.x est désormais activé par défaut pour les images système et les GPU hôtes prenant en charge OpenGL ES 3. Actuellement, seuls les hôtes Android O (niveau d'API 26) et Windows/Linux prennent en charge OpenGL ES 3.
- Si vous rencontrez des problèmes avec OpenGL ES 3, ajoutez la ligne
GLESDynamicVersion = off
dans~/.android/advancedFeatures.ini
.
- Si vous rencontrez des problèmes avec OpenGL ES 3, ajoutez la ligne
L'émulateur utilise désormais des FBO OpenGL hors écran pour tous les rendus, à l'exception de la publication de l'image d'affichage finale. Cela devrait contribuer à résoudre les problèmes d'uniformité des couleurs entre les plates-formes.
Après avoir collecté des données sur le problème de ralentissement soudain de l'émulateur, nous avons déterminé que cela pouvait être dû à une interaction entre des pilotes Intel OpenGL plus anciens et des mises à jour Windows. Désormais, le rendu est défini par défaut sur un moteur de rendu D3D (ANGLE) ou sur Swiftshader (moteur de rendu logiciel) pour les utilisateurs des processeurs Intel HD 4000, 3000 et 2000 (et les GPU associés).
26.0.0 (mars 2017)
Cette version est compatible avec le niveau d'API 26. Elle inclut également un certain nombre d'améliorations des performances et de corrections de bugs.
Révision mineure 26.0.3 (mai 2017)
- Ajout de commutateurs de fonctionnalité pouvant être mis à jour en ligne pour résoudre rapidement des problèmes dus à des configurations matérielles problématiques. Cela permet à Google de déployer des correctifs et des fonctionnalités qui dépendent des configurations utilisateur en mettant à jour les commutateurs côté serveur. Si vous rencontrez des problèmes avec certains matériels, veuillez signaler un bug pour que nous puissions étudier la question.
- Prise en charge de la saisie par dispositif rotatif pour les images système Android Wear du niveau d'API 25. Pour émuler le bouton de saisie par dispositif rotatif sur un appareil Wear, cliquez sur l'onglet Saisie par dispositif rotatif dans la fenêtre étendue.
- La boîte de dialogue des rapports d'erreur peut maintenant être redimensionnée et ne réinitialise plus le champ Quand envoyer les rapports d'erreur sur Demander en l'absence d'entrée.
- L'émulateur 32 bits exige désormais que la taille de RAM maximale de l'AVD soit inférieure ou égale à 512 Mo pour éviter que l'émulateur ne manque d'espace dans l'espace d'adressage virtuel de 2 Go.
- Ajout de la prise en charge des chemins d'accès absolus dans les images d'émulateur.
- Ajout d'un onglet dans la fenêtre étendue pour les images du Google Play Store, qui affiche la version des services Play et un bouton pour vérifier la disponibilité de mises à jour.
- Ajout d'un menu déroulant permettant de sélectionner le moteur de rendu OpenGL sur la page des paramètres de l'émulateur. Si vous rencontrez des problèmes avec le pilote OpenGL sur un ordinateur Windows, essayez les options ANGLE (D3D11) ou ANGLE (D3D9) (redémarrage requis). Si vous rencontrez des problèmes avec le pilote OpenGL sur un ordinateur non Windows, essayez le moteur de rendu logiciel Swiftshader (redémarrage requis).
- Correction d'une erreur rare à la fermeture lorsque l'émulateur reçoit des commandes
exit
etminimize
. - Correction d'un problème de scaling lors d'une modification d'affichage sur un ordinateur Mac. (Problème : 268296)
- Correction du problème où l'émulateur occupait 300 % du processeur et maintenait ce niveau élevé après la sortie de veille de l'ordinateur hôte ou en cas de fonctionnement prolongé de l'émulateur.
- Correction d'un plantage qui survenait lors de l'arrêt de l'émulateur.
Mises à jour avec HAXM v6.1.1 (mars 2017)
Remarque : HAXM v6.1.1 est disponible pour les utilisateurs Mac via SDK Manager depuis le 30 mars. Il sera bientôt disponible pour les utilisateurs Windows.
La version 26.0.0 d'Android Emulator prend en charge HAXM v6.1.1. Les mises à jour suivantes sont incluses :
- Activation de l'émulation des unités de surveillance des performances (PMU, Performance Monitoring Units). (Problème : 223377)
- Correction du problème de coexistence avec VirtualBox et Docker sur les ordinateurs Mac. (Problème : 197915)
- Révision du message d'erreur d'installation qui était affiché lorsque le programme d'installation ne parvenait pas à détecter Intel VT-x sous Windows, généralement parce que Hyper-V était activé.
- Ajout de la prise en charge de l'accélération d'Android Emulator sur une machine virtuelle Windows basée sur Hyper-V. Cette mise à jour nécessite que l'instance Hyper-V hôte (celle qui gère la VM ou l'invité Windows) utilise la dernière version de Hyper-V avec la virtualisation imbriquée activée. Hyper-V doit être désactivé dans l'instance Hyper-V de l'invité (VM Windows).
Dépendances
- Révision 25.0.4 ou ultérieure d'Android SDK Platform-ToolsPlatform-Tools.
- Révision 26.0.0 ou ultérieure de SDK Tools pour Android.
Nouvelles fonctionnalités et corrections de bugs
- Compatible avec le niveau d'API 26.
- Entièrement conforme à la norme GLES 2.0. Avec un GPU hôte doté de pilotes OpenGL conformes pour ordinateur, l'émulateur réussit désormais 100 % de la liste
mustpass
Android CTS dEQP-GLES2. Cela a été publié pour les images x86 avec niveau d'API 24 (révision 11 ou ultérieure) et sera bientôt inclus pour toutes les images système. - Amélioration des performances de lecture des vidéos. L'émulateur stocke désormais tous les tampons de couleur vidéo dans la mémoire partagée de l'hôte/de l'invité et effectue la conversion finale YUV vers RVB nécessaire dans le GPU. Actuellement, la plupart des systèmes devraient être en mesure de prendre en charge le format 1080p30. Cela a été publié pour les images x86 avec niveau d'API 24 (révision 11 ou ultérieure) et sera bientôt inclus pour toutes les images système.
- L'émulateur se désinscrit désormais correctement de la liste
adb devices
en quittant et ferme les ports TCP ouverts sur les machines Linux. - Les connexions adb sont désormais plus fiables. Un émulateur en cours d'exécution est détecté plus rapidement et ne passe plus dans l'état "Hors connexion" ou "Non autorisé".
25.3.0 (mars 2017)
À partir de cette version, Android Emulator sera distribué séparément de SDK Tools. Cette version contient diverses améliorations des performances, des nouvelles fonctionnalités et des corrections de bugs.
Révision mineure 25.3.1 (mars 2017)
- Correction d'un plantage qui se produisait sur certaines configurations de GPU en désactivant GLAsyncSwap par défaut.
Cette fonctionnalité a été ajoutée dans la version 25.3.0 afin d'améliorer le temps de rendu et le nombre d'images par seconde pour les jeux et les vidéos, mais elle entraîne l'échec de l'émulateur sur certaines configurations de machine inconnues. Vous pouvez l'activer manuellement en ouvrant le fichier
android_sdk/emulator/lib/advancedFeatures.ini
et en définissantGLAsyncSwap = on
.
Dépendances
- Révision 24 ou ultérieure du composant Platform-Tools du SDK Android.
- Révision 25.3.0 ou ultérieure de SDK Tools pour Android.
Nouvelles fonctionnalités et corrections de bugs
- Mise à jour du moteur d'émulation vers QEMU 2.7, avec toutes les corrections de bugs récentes, les améliorations des performances et les nouvelles fonctionnalités.
- Prise en charge d'IPv6.
- L'émulateur utilise désormais SwiftShader comme seul moteur de rendu logiciel sur l'hôte.
- Améliorations des performances d'Android Pipe : Android Pipe, le principal canal de communication entre l'émulateur et l'OS Android, est désormais beaucoup plus rapide, a une latence plus faible et offre de meilleures performances multithread. Cela se traduit par plusieurs améliorations des performances pour l'émulateur, dont :
- Une amélioration de la vitesse de transfert/récupération ADB.
- Une meilleure prise en charge de l'accélération 3D.
- Une amélioration de la réactivité globale de l'émulateur.
- Une amélioration des performances graphiques.
- L'émulateur utilise désormais des tampons côté GPU (glBindBuffers/glBufferData) lorsque l'invité le demande, ce qui réduit la surcharge du processeur dans certaines applications.
- Amélioration de la prise en charge audio.
- Opérations d'E/S sur disque plus rapides : l'émulateur utilise désormais des threads distincts pour distribuer les E/S sur le disque, ce qui permet de réduire la latence et d'améliorer le débit (E/S séquentielles environ 1,5 fois plus rapides, E/S à accès aléatoire environ 5 fois plus rapides). Cela réduit également le nombre de vidages sur le disque, ce qui se traduit par une charge bien inférieure sur les appareils physiques.
- L'émulateur utilise désormais des fichiers fragmentés pour les démarrages de disque sur les ordinateurs Windows, ce qui accélère à la fois le premier démarrage et les démarrages d'effacement de données. Lors de la création ou de la réinitialisation d'un AVD, l'émulateur écrit désormais 100 à 200 Mo de données sur le disque, au lieu de 2 Go ou plus.
- Diverses améliorations de l'IUG :
- L'émulateur utilise désormais Qt 5.7.0, qui inclut des corrections de bugs et des améliorations des performances.
- L'initialisation de l'UI n'essaie plus de charger tous les exécutables de l'émulateur en tant que plug-ins Qt. Cette opération est donc beaucoup plus rapide, en particulier sur les disques durs.
- Les interactions de l'UI sont désormais plus rapides et plus fluides, ce qui inclut la rotation, le redimensionnement des fenêtres, ainsi que le chargement et la fermeture de la fenêtre des commandes avancées.