7 votes

Connecter l'émulateur Android au réseau local

J'essaie de connecter mon émulateur Android (à partir de sdk) à la lan via un pont réseau et une interface tap et avec l'option -qemu. J'ai besoin qu'il utilise les adresses multicast dans le code de la bibliothèque native pour communiquer avec les appareils IoT connectés à la lan.

Mais selon la version de l'image et l'architecture (x86 ou ARM), les comportements sont différents.

Pour l'image ARM (Android 7.1.1 armeabi-v7a) le pont fonctionne parfaitement. Le client Dhcp fonctionne automatiquement après le démarrage. Je peux pinger la passerelle lan, google ... et le multicasting fonctionne. Mais le réseau ajouté à l'émulateur n'est pas présent via ip link ou ifconfig, il est caché, et la route par défaut n'est pas présente ! ! étrange. L'émulateur n'est pas pingable de l'extérieur.

Pour l'image X86 (Android 7.1.1 google_apis/x86), le pont fonctionne parfaitement. Le client Dhcp fonctionne et le réseau invité est configuré. Je peux envoyer un ping à la passerelle lan, à google ..., la multidiffusion fonctionne, et le réseau est visible (eth1). Mais pour faire un ping à la passerelle ou à un autre hôte, je dois utiliser ping -I pour spécifier l'interface nic, l'émulateur utilise slirp network et il n'est pas pingable de l'extérieur.

Est-il possible de rendre l'émulateur pingable de l'extérieur ?

Est-il possible d'utiliser ping dans l'émulateur x86 sans utiliser l'option -I pour ping ?

Est-il possible de voir la connexion réseau dans l'émulateur ARM ?

Merci pour votre aide.

1voto

Tarek Points 159

Je pense que si vous ajoutez l'IP du serveur sur votre réseau LAN, cela vous permettra d'y accéder depuis l'émulateur. Donc une lutte avec iptables est nécessaire dans votre cas.

liens utiles https://developer.Android.com/studio/run/emulator-networking.html

et il y a un tas de documentation sur la façon de rediriger le trafic réseau vers une nouvelle adresse IP en utilisant iptables.

Bonne chance, j'espère que ma réponse vous a été utile !

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X