在Android模拟器上启用WiFi


Answers:


126

如果您使用的API级别低于25,则Wifi在模拟器上不可用。

当使用API​​级别为25或更高级别的AVD时,模拟器会提供一个模拟的Wi-Fi接入点(“ AndroidWifi”),Android会自动连接到该接入点。

更多信息:https : //developer.android.com/studio/run/emulator.html#wifi


1
我想在模拟器上测试VNC服务器,而vnc服务器应用程序需要Wifi或USB才能连接到网络?那么最好的解决方案是什么?
mfq 2013年

1
@mfq可以在真实设备上运行,也可以使用经过修改的不在乎的开源VNC应用程序。
克里斯·斯特拉顿

11
不要浪费时间@salman khalid?真的吗?从程序员的角度来看,我看到的是,如果实际发生的话,我们需要将购买实际设备的成本降至最低。如果仅想测试我们的应用程序,我们需要多少个设备?OMG ....并非每个程序员都像其他程序员一样富有...来吧!让我们让仿真器完成工作吧...因此,我们正在开发另一个应用程序...对,imz
gumuruh 2014年

4
“浪费时间”也引起了我的注意。那不是一个很好的答复,我们会根据需要浪费时间;)
指针无效

3
截至2017年5月17日,Android Studio 3.0 Canary 1现已提供该功能。
BK

12

显然不是,我也没想到。但是,伊万(Ivan)带来了逃脱Android人士的良好可能性。

仿真器的目的是什么?模仿吧?我不知道为什么要出于测试目的-前提是测试人员了解限制-模拟器可能不会添加Wifi模拟器。

例如,它可以使用主机的基础Internet连接来模拟WiFi访问。显然,测试WPA / WEP差异没有意义,但至少可以切换通过WiFi的访问。

或某种模拟器插件,其中会有一个基本的WiFi模拟器,该模拟器将通过基础连接来模拟WiFi访问,但是通过配置,它可以通过提供伪造的WiFi网络及其对应的伪造密码列表来模拟WPA / WEP。针对可配置的凭据列表。

毕竟,想法是在仿真器上进行初始测试,然后再转到实际设备上。


8
同意 如果模拟3G,为什么不使用WiFi?即使仅出于允许开发人员使用切换WiFi状态的目的。
Kilizo

1
@Kilizo这里的问题是WiFi堆栈非常难以仿真,需要支持桥接主机连接(或使用备用WiFi设备)。即使使用VMWare或VirtualBox之类的工具,也要让虚拟机正确使用完整的WiFi设备仍然很痛苦。蜂窝连接很容易模拟,它所要做的就是将您连接到普通的互联网,您无需担心本地网络或确保Android模拟器能够完全控制网络设备。
6

11

截至目前,使用android仿真器的修订版26.1.3,最终可以在API 25的映像v8上进行。如果仿真器是在升级到最新的API 25映像之前创建的,则需要擦除数据或简单地删除并根据需要重新创建图像。

在某些系统映像中添加了对Wi-Fi的支持(当前仅API级别25)。一个名为“ AndroidWifi”的访问点可用,Android会自动连接到它。可以通过使用命令行参数-feature -Wifi运行仿真器来禁用Wi-Fi支持。

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


嗨,我需要启用wifi功能吗?因为在模拟器中,wifi选项会自动消失。
NehaK '17

我可以验证它是否可以与Image Android 7.1.1(Google Apis),API Level 25,ABI x86一起使用。奇怪的是,它不适用于更新的图像:例如API 27,ABI x86(在这里我可以启用Wi-Fi,但它将自动切换回关闭状态)
TmTron

您说得对@TmTron,截至2017年8月,我从Google收到的回复是You'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

对于仿真器版本27.1.2,Wi-Fi适用于API级别25和26,但不适用于API级别
27。– CanC

10

(在这里重复我的回答。)

从理论上讲,Linux(Android的底层内核)具有mac80211_hwsim驱动程序,可模拟WiFi。它可用于设置多个WiFi设备(一个接入点和另一个WiFi设备,依此类推),这些设备将组成一个WiFi网络。

这对于在Linux下测试WiFi程序很有用。甚至在用户模式linux或其他隔离的带有Linux的虚拟“盒子” 下也可能。

从理论上讲,该驱动程序可用于没有真正WiFi设备(或不想使用它)的android系统中的测试,也可用于某些android仿真器中。也许,人们可以设法在android-x86中使用此驱动程序,或者(为了进行测试)在VirtualBox中运行的android-x86中使用该驱动程序。


2
请注意,大多数使wifi看起来像是Android应用程序的“ wifi”的原因都在用户模式Android运行时中。很有可能需要更改的只是报告。尽管仿真器网络的某些属性确实比3g提供者与wifi提供者更一致;特别是一个网络地址转换器,除了主机开发机器的环回接口以外,不接受传入连接。修改平台以将其称为wifi可以完成一些工作,但是唯一可以连接的本地对等设备将是开发计算机。
克里斯·斯特拉顿

3

如果您使用的是API 24或更早版本,则仿真器不会为Wi-Fi提供虚拟硬件。从Android开发者网站:

当使用API​​级别为25或更高级别的AVD时,模拟器会提供一个模拟的Wi-Fi接入点(“ AndroidWifi”),Android会自动连接到该接入点。

您可以通过使用命令行参数-feature -Wifi运行仿真器来禁用仿真器中的Wi-Fi。

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

不支持的内容

Android模拟器不包括以下虚拟硬件:

  • 蓝牙
  • NFC
  • SD卡插入/弹出
  • 设备连接的耳机
  • USB

Android Wear的手表模拟器不支持“概述”(“最近使用的应用程序”)按钮,D-pad和指纹传感器。

(有关更多信息,访问https://developer.android.com/studio/run/emulator.html#about

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


12
-1是因为屏幕截图显示设备是通过4G而不是通过WiFi连接的,因此无法回答,解决问题或提供任何有用的信息。
sixones

1
@sixones并不一定意味着它没有连接到WiFi:显示4G是出于仿真目的(例如,如果应用程序处于4G与3G的状态,您的应用程序会做什么),并且可以通过设置进行更改。即使WiFi显示为关闭或未连接,我仍然可以打开Goog​​le,因为我的计算机已连接到WiFi。因此,尽管您可以查看/下载网站,但是您不能出于仿真目的而仿真与WiFi的连接,因此,为此,您需要连接到WiFi的真实设备。
Stardust

2
确实,@ Stardust因此,除了显示可以使用蜂窝网络连接之外,您的回答对所提问题没有任何帮助。Android用户界面非常简单,如果您连接到Wifi并显示在通知栏中,它还可以根据发生的情况同时显示您的手机连接。您所看到的一切就是您可以在连接了wifi的主机上使用仿真器,而这不是这个问题的问题。
六月

从API 25+开始,您可以使用wi-fi developer.android.com/studio/run/emulator.html#wi-fi这个答案现在已过时
Menuka Ishan

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.