在安卓模拟器上启用WiFi

128

如何在Android模拟器上启用WiFi?我试过查找,但每个人都将WiFi与3G混淆。

怎样在Android模拟器中启用WiFi?我尝试过搜索,但所有人都把WiFi和3G搞混了。


1
可能是Android:在模拟器中模拟WiFi?的重复问题。 - Sam
7个回答

149

如果您使用的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
1
@mfq可以在真实设备上运行,也可以使用经过修改的开源VNC应用程序。 - Chris Stratton
12
不要浪费你的时间@萨尔曼·哈立德?这是真的吗?从程序员的角度来看,我看到的是,如果可以的话,我们需要尽量减少购买实际设备的成本。如果我们只想测试我们的应用程序,我们需要多少台设备?天哪...并不是每个程序员都像其他人一样富有...来吧!让模拟器去做这些工作...所以我们正在制作另一个应用程序...对吧,imz。 - gumuruh
6
“浪费时间”这个词引起了我的注意。这不是一个友善的回复,我们只是按照需要在开发过程中花费了一些时间 ;) - Pointer Null
3
自2017年5月17日起,Android Studio 3.0 Canary1版本已经发布。 - B.K.
在运行模拟的安卓系统的计算机上使用相同的网络,这是否可行? - Makuna

13

显然它并没有,而我也没想到它会提供。不过 Ivan 提出了一个好的可能性,这个可能性被 Android 的开发人员忽略了。

模拟器的目的是什么?是模拟,对吧?我不明白为什么在测试目的下——只要测试人员理解限制——模拟器不能增加 WiFi 模拟器。

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

或者使用某种模拟器插件,其中会有一个基本的 WiFi 模拟器,它将通过底层连接模拟 WiFi 访问,然后通过配置,它可以通过提供一组虚假的 WiFi 网络及其相应的虚假密码列表来模拟 WPA/WEP,这些密码将与可配置凭据列表进行匹配。

毕竟,这个想法是在模拟器上进行初步测试,然后转向实际设备。


9
同意。如果可以模拟3G网络,为什么不能模拟WiFi呢?即使只是为了让开发人员能够切换WiFi状态的目的。 - Kilizo
1
@Kilizo 这里的问题是WiFi堆栈非常重,需要支持桥接主机连接(或者有一个备用的WiFi设备可供使用)。即使使用VMWare或VirtualBox等工具,让虚拟机正确地使用完整的WiFi设备也很麻烦。移动网络连接易于模拟,只需将您连接到正常的互联网即可,您不必担心本地网络或确保Android模拟器能够完全控制网络设备。 - sixones

12
截至目前,使用 Android 模拟器的 26.1.3 版本并在 API 25 的 v8 镜像上,终于可以支持 Wi-Fi。如果模拟器在升级到最新的 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
我可以验证它可以在Image Android 7.1.1 (Google Apis),API Level 25,ABI x86上运行。奇怪的是,它无法在更新的Images上运行:例如API 27,ABI x86(在这里我可以启用Wi-Fi,但它会自动切换回关闭状态)。 - TmTron
你是对的 @TmTron ,截至2017年8月,我从谷歌得到的回复是你关于API 26是正确的,它正在开发中,并将在未来推出。至于向早期版本的回溯,虽然我们希望这样做,但我不能保证何时会发生或我们会回溯多远。 - Eric Labelle
对于模拟器版本27.1.2,Wi-Fi适用于API级别25和26,但不适用于27。 - CanC

11

(在此重复我在其他地方的答案。)

理论上,Linux(android底层的内核)有一个mac80211_hwsim驱动程序,用于模拟WiFi。它可以用于设置几个WiFi设备(接入点、另一个WiFi设备等),这些设备将组成一个WiFi网络。

它对在Linux下测试WiFi程序非常有用。可能甚至在用户模式Linux或其他隔离的虚拟“盒子”中也是如此。

理论上,这个驱动程序可以用于android系统中的测试,其中您没有真正的WiFi设备(或不想使用它),以及某些类型的android模拟器。也许,人们可以设法在android-x86中使用这个驱动程序,或者在VirtualBox中运行的android-x86中进行测试。


2
请注意,使wifi对Android应用程序显示为“wifi”的大部分内容都在用户模式Android运行时中。很有可能需要改变的只是报告。虽然模拟器网络具有一些更符合3G提供商而不是wifi的属性;特别是一个网络地址转换器,它不接受除来自托管开发机的环回接口以外的传入连接。修改平台以将其称为wifi会有所作用,但唯一可以连接的本地对等体将是开发机器。 - Chris Stratton

4
模拟器在使用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


13
因为截图显示设备通过4G连接而不是WiFi,所以-1分并没有回答、解决或提供任何有用信息来回答问题。 - sixones
1
@sixones 这并不一定意味着它没有连接到WiFi:4G仅用于仿真目的(比如,如果您的应用程序在4G和3G下会发生什么),可以通过设置进行更改。即使WiFi显示为“关闭”或“未连接”,我仍然能够打开Google,因为我的计算机已连接到WiFi。因此,尽管您可以查看/下载网站,但无法模拟与WiFi的连接以进行仿真,因此,为了这个目的,您需要一个真正连接到WiFi的设备。 - Stardust
2
@Stardust 没错,所以你的回答除了展示你会使用蜂窝连接之外,对于问题本身并没有提供任何有用的信息。Android UI非常简单,如果你连接到Wifi,它会显示在通知栏中,同时也可以显示你的蜂窝连接状态,具体取决于发生了什么。你所展示的只是你可以在连接了Wifi的主机上使用模拟器,这并不是这个问题所要求的。 - sixones
从API 25+开始,您可以使用Wi-Fi。https://developer.android.com/studio/run/emulator.html#wi-fi 这个答案现在已经过时了。 - Menuka Ishan

1

0
如果您的模拟器无法连接到WiFi并且您使用的是Mac(我不知道如何在Windows中添加DNS),请前往网络 -> 高级 -> DNS,然后添加8.8.8.8和8.8.4.4。关闭Android模拟器,打开Android Studio,选择模拟器,点击冷启动,然后您的模拟器将连接到WiFi。

这并没有回答问题。一旦您拥有足够的声望,您将能够评论任何帖子;相反,提供不需要询问者澄清的答案。- 来自审核 - H4SN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接