Habilitando WiFi no Android Emulator

Respostas:

126

O Wifi não está disponível no emulador se você estiver usando um nível de API inferior a 25.

Ao usar um AVD com API de nível 25 ou superior, o emulador fornece um ponto de acesso Wi-Fi simulado ("AndroidWifi"), e o Android se conecta a ele automaticamente.

Mais informações: https://developer.android.com/studio/run/emulator.html#wifi

Salman Khalid
fonte
1
Quero testar o servidor VNC no emulador e o aplicativo do servidor vnc requer Wifi ou USB para se conectar à rede? então qual é a melhor solução?
mfq
1
@mfq é executado em um dispositivo real ou usa um aplicativo VNC de código aberto modificado para não se importar.
Chris Stratton
11
não perca seu tempo @salman khalid? Isso é verdade? Da perspectiva dos programadores, o que vi é que precisamos minimizar o custo de compra do dispositivo real, se isso acontecer. De quantos dispositivos precisaríamos se apenas quisermos testar nosso aplicativo? OMG .... nem todos os programadores são ricos como os outros ... vamos lá! Vamos fazer o emulador funcionar ... então estamos fazendo outros aplicativos ... certo, imz
gumuruh
4
"perder tempo" também chamou minha atenção. Essa não é uma boa resposta, perdemos tempo desenvolvendo conforme necessário;)
Pointer Null
3
Ele já está disponível com o Android Studio 3.0 Canary 1 a partir de hoje, 17/05/2017.
BK
12

Aparentemente, não e eu não esperava que fosse. No entanto, Ivan traz à tona uma boa possibilidade de que escapou do pessoal do Android.

Qual é o propósito de um emulador? para EMULAR, certo? Não vejo por que, para fins de teste, desde que o testador compreenda as limitações, o emulador pode não adicionar um emulador Wifi.

Ele poderia, por exemplo, emular o acesso WiFi usando a conexão de Internet subjacente do host. Obviamente, testar as diferenças WPA / WEP não faria sentido, mas pelo menos poderia alternar o acesso via WiFi.

Ou algum tipo de plug-in de emulador onde haveria um emulador WiFi básico que emularia o acesso WiFi por meio da conexão subjacente, mas, por meio da configuração, poderia emular WPA / WEP, fornecendo uma lista de redes WiFi falsas e suas senhas falsas correspondentes que seriam correspondidas contra uma lista configurável de credenciais.

Afinal, a ideia é fazer um teste inicial no emulador e depois passar para o dispositivo real.

Senhor dos Scripts
fonte
8
Acordado. Se 3G é emulado, por que não WiFi? Mesmo com o propósito de permitir que os desenvolvedores trabalhem com o estado WiFi alternado.
Kilizo
1
@Kilizo O problema aqui é que a pilha WiFi é muito pesada para emular e precisa de suporte para fazer a ponte entre a conexão dos hosts (ou ter um dispositivo WiFi sobressalente para usar). Mesmo com coisas como VMWare ou VirtualBox, fazer com que a máquina virtual use corretamente um dispositivo WiFi completo é uma dor. A conectividade celular é fácil de emular, tudo o que você precisa fazer é conectar você à sua internet normal, você não precisa se preocupar com a rede local ou garantir que o emulador Android seja capaz de controlar totalmente o dispositivo de rede.
sixones
11

A partir de agora, com a revisão 26.1.3 do emulador do Android, é finalmente possível na imagem v8 da API 25. Se o emulador foi criado antes de você atualizar para a imagem API 25 mais recente, você precisa limpar os dados ou simplesmente excluir e recrie sua imagem se preferir.

Adicionado suporte para Wi-Fi em algumas imagens do sistema (atualmente apenas API de nível 25). Um ponto de acesso denominado "AndroidWifi" está disponível e o Android se conecta a ele automaticamente. O suporte Wi-Fi pode ser desabilitado executando o emulador com o parâmetro de linha de comando -feature -Wifi.

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

Eric Labelle
fonte
oi, o que preciso fazer para ativar o recurso wi-fi? porque nas configurações do emulador wi-fi, a opção está sendo desativada automaticamente.
NehaK
Posso verificar que funciona com o Image Android 7.1.1 (Google Apis), API nível 25, ABI x86. O estranho é que ele não funciona com imagens mais recentes: por exemplo, API 27, ABI x86 (aqui posso habilitar o Wi-Fi, mas ele será desligado automaticamente)
TmTron
Você está certo @TmTron. Em agosto de 2017, a resposta que recebi do Google foiYou'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
Para a versão 27.1.2 do emulador, o Wi-Fi funciona para os níveis de API 25 e 26, mas não para 27.
CanC
10

(Repetindo aqui minha resposta em outro lugar .)

Em teoria, o linux (o kernel subjacente ao android) tem o driver mac80211_hwsim , que simula o WiFi. Ele pode ser usado para configurar vários dispositivos WiFi (um ponto de acesso e outro dispositivo WiFi e assim por diante), que formariam uma rede WiFi.

É útil para testar programas WiFi no Linux. Possivelmente, mesmo no modo de usuário do Linux ou outras "caixas" virtuais isoladas com o Linux.

Em teoria, este driver poderia ser usado para testes em sistemas android onde você não tem um dispositivo WiFi real (ou não quer usá-lo), e também em alguns tipos de emuladores de Android. Talvez seja possível usar este driver no android-x86, ou - para teste - no android-x86 executado no VirtualBox.

imz - Ivan Zakharyaschev
fonte
2
Observe que a maior parte do que faz o wi-fi parecer "wi-fi" para um aplicativo Android está no tempo de execução do Android no modo de usuário. Há uma boa chance de que tudo o que precise mudar seja o relatório . Embora o emulador de rede tenha algumas propriedades mais consistentes com um provedor 3G do que wi-fi; especificamente um tradutor de endereço de rede que não aceita conexões de entrada que não sejam da interface de loopback da máquina de desenvolvimento de hospedagem. Modificar a plataforma para chamá-la de wi-fi funcionaria, mas o único ponto local que poderia se conectar seria a máquina de desenvolvimento.
Chris Stratton
3

O emulador não fornece hardware virtual para Wi-Fi se você usar API 24 ou anterior. No site dos desenvolvedores Android:

Ao usar um AVD com API de nível 25 ou superior, o emulador fornece um ponto de acesso Wi-Fi simulado ("AndroidWifi"), e o Android se conecta a ele automaticamente.

Você pode desativar o Wi-Fi no emulador executando o emulador com o parâmetro de linha de comando -feature -Wifi.

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

O que não é suportado

O Android Emulator não inclui hardware virtual para o seguinte:

  • Bluetooth
  • NFC
  • Inserir / ejetar cartão SD
  • Fones de ouvido conectados ao dispositivo
  • USB

O emulador de relógio para Android Wear não oferece suporte ao botão Visão geral (aplicativos recentes), D-pad e sensor de impressão digital.

(leia mais em https://developer.android.com/studio/run/emulator.html#about )

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

poeira estelar
fonte
12
-1 porque a captura de tela mostra que o dispositivo está conectado via 4G e não via WiFi, não responde, não resolve ou fornece qualquer informação útil para a pergunta feita.
sixones
1
@sixones Isso não significa necessariamente que não esteja conectado a WiFi: o 4G é mostrado para fins de emulação (como, o que seu aplicativo faria se estivesse em 4G vs 3G) e pode ser alterado nas configurações. Mesmo que o WiFi seja mostrado como desligado ou não conectado , ainda consigo abrir o Google porque meu computador está conectado ao WiFi. Portanto, embora você possa visualizar / baixar sites, você não pode emular a conexão WiFi para fins de emulação e, portanto, para isso, você precisa de um dispositivo real conectado a WiFi.
Stardust
2
@Stardust Exatamente, então sua resposta não fornece nada para a pergunta feita além de mostrar que você pode usar uma conexão de celular. A IU do Android é muito simples, se você estiver conectado ao Wifi, ele será mostrado na barra de notificação, mas também poderá mostrar a conectividade do celular ao mesmo tempo, dependendo do que aconteceu. Tudo o que você mostrou é que pode usar o emulador em uma máquina host conectada por wi-fi, o que não é o que esta pergunta estava perguntando.
sixones
A partir da API 25+, você pode usar wi-fi developer.android.com/studio/run/emulator.html#wi-fi Esta resposta agora está desatualizada
Menuka Ishan