Activation du WiFi sur l'émulateur Android

Réponses:

126

Le wifi n'est pas disponible sur l'émulateur si vous utilisez un niveau inférieur au niveau d'API 25.

Lorsque vous utilisez un AVD avec un niveau d'API 25 ou supérieur, l'émulateur fournit un point d'accès Wi-Fi simulé («AndroidWifi») et Android s'y connecte automatiquement.

Plus d'informations: https://developer.android.com/studio/run/emulator.html#wifi

Salman Khalid
la source
1
Je veux tester le serveur VNC sur l'émulateur et l'application de serveur vnc nécessite Wifi ou USB pour se connecter au réseau? alors quelle est la meilleure solution?
mfq le
1
@mfq s'exécute sur un appareil réel ou utilise une application VNC open source modifiée pour ne pas s'en soucier.
Chris Stratton
11
ne perdez pas votre temps @salman khalid? Est-ce vrai? En tant que point de vue des programmeurs, j'ai vu que nous devons minimiser le coût d'achat d'un appareil réel si cela se produit. De combien d'appareils aurions-nous besoin si nous voulons simplement tester notre application? OMG ... tous les programmeurs ne sont pas riches comme les autres ... allez! Faisons en sorte que l'émulateur fasse le travail ... alors nous créons une autre application ... d'accord, imz
gumuruh
4
"perdre du temps" a également attiré mon attention. Ce n'est pas une bonne réponse, nous perdons du temps sur le développement au besoin;)
Pointer Null
3
Il est désormais disponible avec Android Studio 3.0 Canary 1 à partir d'aujourd'hui 17/05/2017.
BK
12

Apparemment, ce n'est pas le cas et je ne m'attendais pas vraiment à ce que ce soit le cas. CEPENDANT, Ivan évoque une bonne possibilité qui a échappé aux utilisateurs d'Android.

Quel est le but d'un émulateur? pour émuler, non? Je ne vois pas pourquoi à des fins de test - à condition que le testeur comprenne les limitations - l'émulateur peut ne pas ajouter d'émulateur Wifi.

Il pourrait par exemple émuler l'accès WiFi en utilisant la connexion Internet sous-jacente de l'hôte. Évidemment, tester la différence WPA / WEP n'aurait pas de sens, mais au moins cela pourrait basculer l'accès via WiFi.

Ou une sorte de plugin d'émulateur où il y aurait un émulateur WiFi de base qui émulerait l'accès WiFi via la connexion sous-jacente, mais ensuite via la configuration, il pourrait émuler WPA / WEP en fournissant une liste de faux réseaux WiFi et leurs faux mots de passe correspondants qui seraient mis en correspondance par rapport à une liste configurable d'informations d'identification.

Après tout, l'idée est de faire des tests initiaux sur l'émulateur, puis de passer à l'appareil réel.

Seigneur des scripts
la source
8
D'accord. Si la 3G est émulée, pourquoi pas le WiFi? Même dans le seul but de permettre aux développeurs de travailler avec le basculement de l'état WiFi.
Kilizo
1
@Kilizo Le problème ici est que la pile WiFi est très lourde à émuler et nécessite un support pour ponter la connexion des hôtes (ou avoir un périphérique WiFi de rechange à utiliser). Même avec des choses comme VMWare ou VirtualBox, il est difficile de faire en sorte que la machine virtuelle utilise correctement un périphérique WiFi complet. La connectivité cellulaire est facile à émuler, il suffit de vous connecter à votre connexion Internet normale, vous n'avez pas à vous soucier du réseau local ou de vous assurer que l'émulateur Android est capable de contrôler entièrement le périphérique réseau.
sixones
11

À partir de maintenant, avec la révision 26.1.3 de l'émulateur Android, c'est enfin possible sur l'image v8 de l'API 25. Si l'émulateur a été créé avant la mise à niveau vers la dernière image de l'API 25, vous devez effacer les données ou simplement supprimer et recréez votre image si vous préférez.

Ajout de la prise en charge du Wi-Fi dans certaines images système (actuellement uniquement le niveau d'API 25). 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.

depuis https://developer.android.com/studio/releases/emulator.html#26-1-3

Eric Labelle
la source
salut, que dois-je faire pour activer la fonction wifi? car dans les paramètres de l'émulateur, l'option wifi se désactive automatiquement.
NehaK
Je peux vérifier qu'il fonctionne avec Image Android 7.1.1 (Google Apis), API Level 25, ABI x86. La chose étrange est que cela ne fonctionne pas avec les images plus récentes: par exemple API 27, ABI x86 (ici, je peux activer le Wi-Fi, mais il se désactivera automatiquement)
TmTron
Vous avez raison @TmTron, en août 2017, la réponse que j'ai reçue de Google étaitYou're right about API 26, it's in the works and will be available in the future. As for backporting to earlier versions that's something we would like to do although I can't make any promises as to when that will happen or how far back we will go.
Eric Labelle
Pour l'émulateur version 27.1.2, le Wi-Fi fonctionne pour les niveaux d'API 25 et 26, mais pas pour 27.
CanC
10

(Répétant ici ma réponse ailleurs .)

En théorie, Linux (le noyau sous-jacent Android) a le pilote mac80211_hwsim , qui simule le WiFi. Il peut être utilisé pour configurer plusieurs appareils WiFi (un point d'accès, un autre appareil WiFi, etc.), qui constitueraient un réseau WiFi.

C'est utile pour tester les programmes WiFi sous Linux. Peut-être même sous Linux en mode utilisateur ou d'autres «boîtes» virtuelles isolées avec Linux.

En théorie, ce pilote pourrait être utilisé pour des tests dans les systèmes Android où vous n'avez pas de vrai périphérique WiFi (ou ne voulez pas l'utiliser), et aussi dans une sorte d'émulateurs Android. Peut-être, on peut réussir à utiliser ce pilote dans android-x86, ou - pour les tests - dans android-x86 exécuter dans VirtualBox.

imz - Ivan Zakharyaschev
la source
2
Notez que la plupart de ce qui fait que le wifi semble être "wifi" pour une application Android se trouve dans le mode d'exécution Android en mode utilisateur. Il y a de fortes chances que tout ce qui devrait changer, ce sont les rapports . Bien que le réseau d'émulateur ait certaines propriétés plus cohérentes avec un fournisseur 3G qu'avec un fournisseur wifi; spécifiquement un traducteur d'adresses réseau qui n'accepte pas les connexions entrantes autres que celles de l'interface de bouclage de la machine de développement d'hébergement. Modifier la plate-forme pour l'appeler wifi fonctionnerait en quelque sorte, mais le seul pair local qui pourrait se connecter serait la machine de développement.
Chris Stratton
3

L'émulateur ne fournit pas de matériel virtuel pour le Wi-Fi si vous utilisez l'API 24 ou une version antérieure. Sur le site Web des développeurs Android:

Lorsque vous utilisez un AVD avec un niveau d'API 25 ou supérieur, l'émulateur fournit un point d'accès Wi-Fi simulé («AndroidWifi») et Android s'y connecte automatiquement.

Vous pouvez désactiver le Wi-Fi dans l'émulateur en exécutant l'émulateur avec le paramètre de ligne de commande -feature -Wifi.

https://developer.android.com/studio/run/emulator.html#wi-fi

Ce qui n'est pas pris en charge

L'émulateur Android n'inclut pas de matériel virtuel pour les éléments suivants:

  • Bluetooth
  • NFC
  • Insertion / éjection de la carte SD
  • Écouteurs connectés à l'appareil
  • USB

L'émulateur de montre pour Android Wear ne prend pas en charge le bouton Aperçu (applications récentes), le D-pad et le capteur d'empreintes digitales.

(en savoir plus sur https://developer.android.com/studio/run/emulator.html#about )

https://developer.android.com/studio/run/emulator.html#wi-fi

poussière d'étoiles
la source
12
-1 parce que la capture d'écran montre que l'appareil est connecté via 4G et non via WiFi, ne répond pas, ne résout pas ou ne fournit aucune information utile à la question posée.
sixones
1
@sixones Cela ne signifie pas nécessairement qu'il n'est pas connecté au WiFi: la 4G est affichée à des fins d'émulation (comme, que ferait votre application si elle était en 4G vs 3G) et peut être modifiée via les paramètres. Même si le WiFi est indiqué comme désactivé ou non connecté , je peux toujours ouvrir Google car mon ordinateur est connecté au WiFi. Ainsi, bien que vous puissiez consulter / télécharger des sites Web, vous ne pouvez pas émuler la connexion au WiFi à des fins d'émulation, et donc, à cette fin, vous avez besoin d'un véritable appareil connecté au WiFi.
Stardust
2
@Stardust Exactement, donc votre réponse ne fournit rien à la question posée à part montrer que vous pouvez utiliser une connexion cellulaire. L'interface utilisateur Android est assez simple, si votre connexion au Wifi apparaît dans la barre de notification, elle peut également afficher votre connectivité cellulaire en même temps en fonction de ce qui s'est passé. Tout ce que vous avez montré, c'est que vous pouvez utiliser l'émulateur sur une machine hôte connectée en wifi, ce qui n'est pas ce que posait cette question.
sixones
À partir de l'API 25+, vous pouvez utiliser le wi-fi developer.android.com/studio/run/emulator.html#wi-fi Cette réponse est maintenant obsolète
Menuka Ishan