Włączanie Wi-Fi na emulatorze Androida

Odpowiedzi:

126

Wifi nie jest dostępne w emulatorze, jeśli używasz interfejsu API poniżej 25 poziomu.

W przypadku korzystania z AVD z API na poziomie 25 lub wyższym, emulator zapewnia symulowany punkt dostępu Wi-Fi („AndroidWifi”), a system Android automatycznie się z nim łączy.

Więcej informacji: https://developer.android.com/studio/run/emulator.html#wifi

salman khalid
źródło
1
Chcę przetestować serwer VNC na emulatorze, a aplikacja serwera VNC wymaga Wi-Fi lub USB, aby uzyskać połączenie z siecią? więc jakie jest najlepsze rozwiązanie?
mfq
1
@mfq działa na prawdziwym urządzeniu lub użyj aplikacji VNC typu open source zmodyfikowanej tak, aby nie przejmować się.
Chris Stratton,
11
nie trać czasu @salman khalid? Czy to prawda? Z punktu widzenia programistów zauważyłem, że musimy zminimalizować koszt zakupu rzeczywistego urządzenia, jeśli tak się stanie. Ile urządzeń potrzebowalibyśmy, gdybyśmy chcieli tylko przetestować naszą aplikację? OMG… nie wszyscy programiści są tak bogaci jak inni… no dalej! Niech emulator wykona prace ... więc tworzymy kolejne aplikacje ... tak, imz
gumuruh
4
Zwróciłem też uwagę na „stratę czasu”. To nie jest fajna odpowiedź, tracimy czas na rozwój w razie potrzeby;)
Pointer Null
3
Jest już dostępny w Android Studio 3.0 Canary 1 od dzisiaj 17.05.2017.
BK
12

Najwyraźniej tak nie jest i nie spodziewałem się, że tak będzie. JEDNAK Ivan wskazuje na dobrą możliwość, która uciekła ludziom z Androidem.

Jaki jest cel emulatora? do EMULACJI, prawda? Nie rozumiem, dlaczego do celów testowych - pod warunkiem, że tester rozumie ograniczenia - emulator może nie dodać emulatora Wifi.

Mógłby na przykład emulować dostęp Wi-Fi przy użyciu podstawowego połączenia internetowego hosta. Oczywiście testowanie różnicy WPA / WEP nie miałoby sensu, ale przynajmniej mogłoby przełączać dostęp przez WiFi.

Lub jakiś rodzaj wtyczki emulatora, w którym byłby podstawowy emulator WiFi, który emulowałby dostęp do Wi-Fi za pośrednictwem podstawowego połączenia, ale następnie poprzez konfigurację mógłby emulować WPA / WEP, dostarczając listę fałszywych sieci Wi-Fi i odpowiadające im fałszywe hasła, które byłyby dopasowane z konfigurowalną listą poświadczeń.

W końcu chodzi o to, aby przeprowadzić wstępne testy na emulatorze, a następnie przejść do właściwego urządzenia.

Pan Pism
źródło
8
Zgoda. Jeśli emuluje się 3G, dlaczego nie Wi-Fi? Nawet w celu umożliwienia programistom pracy z przełączaniem stanu WiFi.
Kilizo,
1
@Kilizo Problem polega na tym, że stos Wi-Fi jest bardzo ciężki do emulacji i wymaga obsługi mostkowania połączenia hostów (lub posiadania wolnego urządzenia WiFi do użycia). Nawet w przypadku rzeczy takich jak VMWare lub VirtualBox uzyskanie przez maszynę wirtualną prawidłowego korzystania z pełnego urządzenia WiFi jest uciążliwe. Łączność komórkowa jest łatwa do naśladowania, wystarczy podłączyć Cię do normalnego Internetu, nie musisz martwić się o sieć lokalną ani upewnić się, że emulator Androida jest w stanie w pełni kontrolować urządzenie sieciowe.
sixones
11

W chwili obecnej, z wersją 26.1.3 emulatora Androida, jest to wreszcie możliwe na obrazie v8 API 25. Jeśli emulator został utworzony przed aktualizacją do najnowszego obrazu API 25, musisz wyczyścić dane lub po prostu usunąć i jeśli wolisz, odtwórz swój obraz.

Dodano obsługę Wi-Fi w niektórych obrazach systemu (obecnie tylko poziom API 25). Punkt dostępu o nazwie „AndroidWifi” jest dostępny, a system Android automatycznie się z nim łączy. Obsługę Wi-Fi można wyłączyć, uruchamiając emulator z parametrem wiersza poleceń -feature -Wifi.

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

Eric Labelle
źródło
cześć, co będę potrzebować, aby włączyć funkcję Wi-Fi? ponieważ w ustawieniach emulatora opcja wifi jest automatycznie wyłączana.
NehaK
Mogę sprawdzić, czy działa z obrazem Android 7.1.1 (Google Apis), API Level 25, ABI x86. Dziwne jest to, że nie działa z nowszymi obrazami: np API 27, ABI x86 (tutaj mogę włączyć Wi-Fi, ale wyłączy się automatycznie)
TmTron
Masz rację @TmTron, od sierpnia 2017 otrzymałem odpowiedź od GoogleYou'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
W przypadku wersji emulatora 27.1.2 Wi-Fi działa na poziomach API 25 i 26, ale nie na 27.
CanC
10

(Powtarzam tutaj moją odpowiedź w innym miejscu .)

Teoretycznie linux (jądro będące podstawą Androida) ma mac80211_hwsim sterownik , który symuluje WiFi. Można go użyć do skonfigurowania kilku urządzeń Wi-Fi (punktu dostępu, innego urządzenia Wi-Fi itd.), Które tworzyłyby sieć Wi-Fi.

Jest to przydatne do testowania programów WiFi pod Linuksem. Prawdopodobnie nawet w systemie Linux w trybie użytkownika lub w innych izolowanych wirtualnych "pudełkach" z Linuksem.

Teoretycznie ten sterownik mógłby być używany do testów w systemach Android, w których nie masz prawdziwego urządzenia WiFi (lub nie chcesz go używać), a także w niektórych emulatorach Androida. Być może uda się wykorzystać ten sterownik w systemie Android-x86 lub - do testów - w systemie Android-x86 uruchomić w VirtualBox.

imz - Ivan Zakharyaschev
źródło
2
Pamiętaj, że większość elementów, które w aplikacji na Androida sprawiają, że Wi-Fi wygląda na „Wi-Fi”, dotyczy środowiska wykonawczego Androida w trybie użytkownika. Istnieje spora szansa, że ​​wszystko, co należałoby zmienić, to raportowanie . Chociaż sieć emulatora ma pewne właściwości bardziej spójne z dostawcą 3G niż Wi-Fi; w szczególności translator adresów sieciowych, który nie akceptuje połączeń przychodzących innych niż z interfejsu sprzężenia zwrotnego hostującej maszyny deweloperskiej. Zmodyfikowanie platformy tak, by nazywała ją wifi, trochę by działało, ale jedynym lokalnym peerem, który mógłby się połączyć, byłaby maszyna deweloperska.
Chris Stratton,
3

Emulator nie zapewnia wirtualnego sprzętu dla Wi-Fi, jeśli używasz interfejsu API 24 lub starszego. Z witryny Android Developers:

W przypadku korzystania z AVD z API na poziomie 25 lub wyższym, emulator zapewnia symulowany punkt dostępu Wi-Fi („AndroidWifi”), a system Android automatycznie się z nim łączy.

Możesz wyłączyć Wi-Fi w emulatorze, uruchamiając emulator z parametrem wiersza polecenia -feature -Wifi.

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

Co nie jest obsługiwane

Emulator systemu Android nie obejmuje sprzętu wirtualnego dla następujących:

  • Bluetooth
  • NFC
  • Wkładanie / wyjmowanie karty SD
  • Słuchawki podłączane do urządzenia
  • USB

Emulator zegarka dla Androida Wear nie obsługuje przycisku Przegląd (ostatnie aplikacje), pada kierunkowego ani czujnika odcisków palców.

(czytaj więcej na https://developer.android.com/studio/run/emulator.html#about )

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

Gwiezdny pył
źródło
12
-1, ponieważ zrzut ekranu pokazuje, że urządzenie jest podłączone przez 4G, a nie przez WiFi, nie odpowiada, nie rozwiązuje ani nie dostarcza żadnych pomocnych informacji na zadane pytanie.
Sixones
1
@sixones To niekoniecznie oznacza, że ​​nie jest podłączone do Wi-Fi: 4G jest wyświetlane w celach emulacji (np. co zrobiłaby Twoja aplikacja, gdyby była w 4G w porównaniu z 3G) i można je zmienić za pomocą ustawień. Nawet jeśli Wi-Fi jest wyświetlane jako wyłączone lub niepodłączone , nadal mogę otworzyć Google, ponieważ mój komputer jest połączony z Wi-Fi. Więc chociaż możesz przeglądać / pobierać strony internetowe, nie możesz emulować połączenia z Wi-Fi w celach emulacji, a zatem do tego celu potrzebujesz prawdziwego urządzenia podłączonego do WiFi.
Stardust
2
@Stardust Dokładnie, więc Twoja odpowiedź nie zawiera żadnych informacji na zadane pytanie poza wskazaniem, że możesz korzystać z połączenia komórkowego. Interfejs użytkownika Androida jest dość prosty, jeśli masz połączenie z Wi-Fi, pokazuje się na pasku powiadomień, może również pokazywać łączność komórkową w tym samym czasie, w zależności od tego, co się stało. Wszystko, co pokazałeś, to to, że możesz użyć emulatora na komputerze hosta podłączonym do Wi-Fi, a nie o to chodziło w tym pytaniu.
sixones
Z API 25+ możesz skorzystać z Wi-Fi developer.android.com/studio/run/emulator.html#wi-fi Ta odpowiedź jest już nieaktualna
Menuka Ishan