4 votos

¿Cómo utilizar -net-tap con el emulador de Android sdk?

Estoy intentando crear un puente entre el emulador de Android (desde el sdk de Android) y el sistema anfitrión usando -net-tap. ¿Hay algún manual de trabajo para este caso? He intentado lanzar el emulador con -net-tap tap0 - tap0 apareció en el sistema anfitrión, pero no apareció ninguna interfaz en el Android invitado. También he probado -qemu -net tap,iface=tap1,script=no pero tampoco funciona. He comprobado /proc/kmsg No hay nada relacionado con la nueva interfaz.

El aspecto de la línea de comandos completa es el siguiente /opt/android-sdk/emulator -avd test-x86 -accel off -no-audio -net-tap tap0 -qemu -net tap,ifname=tap1,script=no

¿Alguien tiene una idea?

0 votos

Tal vez trate de hacer lo mismo que mi puesto [ stackoverflow.com/questions/48840050/

0 votos

@snake, tu enlace está roto

0 votos

-net-tap tap0

3voto

Creo que -net tap es la forma antigua, usa -netdev tap con el nuevo emulador Android sdk y -device virtio-net-pci para el emulador Android x86. Para el emulador ARM debes usar otro dispositivo.

Y debes instalar el paquete del emulador con el sdkmanager como este:

sdkmanager emulator

Entonces puedes usar el emulador ubicado en /opt/Android-sdk/emulator/emulator.

Crea un puente de red que incluya una interfaz tap (tap0) para el emulador y una interfaz ethernet (enp0s20u1) conectada a una red lan.

# ip addr flush dev enp0s20u1
# ip link set enp0s20u1 down
# ip tuntap add dev tap0 mode tap user $(whoami)
# ip link add br0 type bridge
# ip link set enp0s20u1 master br0
# ip link set tap0 master br0
# ip link set enp0s20u1 up
# ip link set tap0 up
# ip link set br0 up

Una vista rápida del puente.

# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.0050b609a5d1       no              enp0s20u1
                                                        tap0

Inicie un cliente dhcp en el puente:

# dhcpcd br0

Entonces puedes conectar la interfaz tap (tap0) al emulador de Android a través de las opciones -qemu cuando lances el emulador.

./opt/android-sdk/emulator/emulator \
  -avd android_25_x86 \
  -verbose -no-window \
  -qemu \
  -device virtio-net-pci,netdev=hn0,mac=52:55:00:d1:55:51 \
  -netdev tap,id=hn0,ifname=tap0,script=no,downscript=no

Normalmente una nueva interfaz eth1 está presente en el emulador de Android. Y puede ejecutar el binario dhcpclient si está presente o configurar la ruta estática a su red, entonces funciona.

generic_x86:/ # ping -c 1 -I eth1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) from 192.168.1.60 eth1: 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=55 time=17.1 ms

--- 8.8.8.8 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 17.160/17.160/17.160/0.000 ms

Pero tengo algunos problemas para hacer ping al emulador desde el exterior o enrutar todo el tráfico en el emulador a la red del host, ver mi otro post.

Conectar el emulador de Android a la lan

0 votos

Me sale RTNETLINK answers: Device or resource busy cuando llamo ip link set enp0s20u1 master br0

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X