模拟 Android 低网络连接性能

286

除了站在电梯里,我想测试我的应用程序在网络连接差的情况下的表现。有没有更好的方法?我曾尝试过用铝箔裹住手机,但效果并不明显。

我需要在真实设备上进行测试,而不是模拟器。


1
还要研究一下法拉第笼(Faraday cages)。它们很容易制作。 - jww
2
很遗憾,此线程已关闭。但我在Play商店上找到了一个有用的应用程序,名为Throttly(不是我的)。我认为它非常适合模拟缓慢的连接。 - Alexa289
27个回答

319

这可能听起来有些疯狂,但是微波炉可以作为微波屏蔽器。因此,将您的设备放入微波炉中(在设备内部时不要打开微波炉!)会导致信号强度显着下降。这肯定比站在电梯里强...


15
哇,现在如果你能建议我一个把自己也塞进烤箱的方法就好了。而且烤箱是设计用来屏蔽2.4 GHz的,对于更低频率可能不起作用。我不知道! - WindRider
6
我的微波炉里没用起来(即连接仍然良好)!啊 :| - yura
1
如果您连接了USB线,信号可以通过这种方式进入。如果它在微波炉内部且没有任何线缆连接,则不应该接收到信号。您还可以使用铝箔来实现此效果,因为它不会使手机熔化,而且您也不会意外关闭手机。 - John Moore
如果您需要立即断开连接并且不需要进一步的用户交互,微波炉仍然是一个不错的选择,这正是我的特定用例。 - Robert Yang
1
感谢上帝,Chrome已经实现了一些功能来帮助我们实现这一目标。 - Mohammad Kermani
安卓模拟器怎么样?有微波炉模拟器吗? - undefined

147

您可以使用模拟器来实现此功能。请查看此页面:Android 模拟器。注意下面两个参数:

  1. -netdelay <delay>

    将网络延迟仿真设置为 。默认值为没有延迟。有关支持的值,请参阅 Network Delay Emulation 表格。

  2. -netspeed <speed>

    将网络速度仿真设置为 。默认值为 full。有关支持的值,请参阅 Network Speed Emulation 表格。

    参考速度,以递增 kbps 排列:

                            UP       DOWN
                      -------- ----------
    gsm   GSM/CSD         14.4       14.4
    hscsd HSCSD           14.4       57.6
    gprs  GPRS            28.8       57.6
    umts  UMTS/3G        384.0      384.0
    edge  EDGE/EGPRS     473.6      473.6
    hsdpa HSDPA         5760.0   13,980.0
    lte   LTE         58,000.0  173,000.0
    evdo  EVDO        75,000.0  280,000.0
    full  No limit           ∞          ∞
    

21
非常感谢,但正如我所说,我想在真实设备上进行测试。是否有办法在 HTC 或三星手机上进行测试? - Maggie
2
我的猜测是,唯一的方法就是拥有一个可以控制网络速度的Wi-Fi路由器/接入点。这更像是一个网络管理员的事情。但理论上应该是可能的。 - inazaruk
93
我已经使用了电梯 :) 谢谢大家。 - Maggie
3
为了模拟 HTTP 的延迟,可以使用 ResponseCache.setDefault(new CacheResponse(){...}) 并在其中放置 Thread.sleep(200) 调用。这种方法具有程序控制的优点(即仅在一个活动中),不会影响其他进程。但是,为了进行更真实的测试,应该在路由器上设置限制或使用“tc”命令(来自 busybox)。 - yingted
143
为什么这个回答被接受了?问题明确说明了“不是在模拟器中”。 - Kyle Ivey
显示剩余6条评论

116

由于iPhones的开发者选项应用于 WiFi 热点共享,您可以获得一个装有 iOS 6 及以上版本 (并已设置为使用 xcode 进行开发) 的 iPhone,将其设置为模拟所需的网络配置文件,然后连接您的Android设备到它的热点。

输入图像描述


10
这也是我们得出的解决方案。遗憾的是,这是目前最理智可行的选择。需要在答案中提到,苹果手机需要3G/蜂窝连接才能进行网络共享。此外,还应指出iPhone实用工具中上传/下载速度的要求需要翻转以针对被连接设备。 - Kyle Ivey
不错的想法,我没有考虑过这个选项,尽管我周围有很多i设备。 - codetiger
太棒了。谢谢。 - Udi
1
我忍不住笑,但这是整个解决方案中模拟真实设备上缓慢网络的最佳方法。谢谢 - KD.
这个答案给了我一个想法,我也可以使用Mac的“网络链接调节器”和热点来做同样的事情。 - Denny Hsu
显示剩余4条评论

90

Android Studio v1.5或更高版本更新
正如@LouMorda在下面的评论中提到的,原始帖子中提到的Emulator选项卡已在Android Studio v1.5中被移除。

现在,他们将这些设置放置在AVD Manager中的模拟器设置中。
要访问这些设置:

  1. 选择工具 -> Android -> AVD Manager
  2. 单击编辑AVD按钮(铅笔图标)
  3. 单击显示高级设置按钮后即可访问网络设置

以下是它可能出现的屏幕截图:
Network Speed and Latency Settings in Android Studio v 1.5

原始帖子
对于任何使用Android Studio IDE的人:

  1. 进入运行 -> 编辑配置
  2. 选择Android Application -> [Your App]
  3. 选择Emulator选项卡
  4. 在这里,您可以更改不同的值,以模拟不同的速度和延迟等网络速度网络延迟

或者,您可以在附加命令行选项文本字段中输入各种参数,如@inazaruk的答案中所述。

以下屏幕截图描述了此运行配置屏幕的外观:

Run Configurations Screen in Android Studio beta 0.8.6

我知道这个问题的回答有点晚了,但我希望这可以帮助其他遇到类似问题的人!

编辑
对于使用Eclipse的任何人,请参见下面@Abhi的回答


2
在Android Studio v1.5中,此选项卡已被移除。 - Lou Morda
@S1LENT WARRIOR 什么是延迟,例如“速度:边缘,延迟:无”和“速度:全速,延迟:边缘”的区别是什么? - Johnny Five
1
@JohnnyFive 速度指的是你的网络速度,而延迟则是指网络延迟。 - S1LENT WARRIOR

57

我知道这是一个老问题,但...

现在有一些手机具有仅使用2G的设置。它非常适合在真实设备上模拟缓慢的互联网。

输入图像描述


完美!回到边缘并以9kbyte/s的速度上传。 - JcV
太好了,这正好符合我的当前需求。在我的房间里,200KB的上传几乎总是在2G上失败 :) - Deleplace
4
这个人是真正的MVP。 - edwoollard
1
这里有一个小但关键的区别。当你将手机网络从3G降级到2G时,你仍然拥有稳定的2G连接。在现实世界中,2G连接不会很稳定,它会有数据包丢失。为了模拟带有数据包丢失的2G连接,你可以使用@Kirill Kulakov建议的解决方案,因为IOS允许你配置数据包丢失的百分比。只是给未来的读者一个提示 :) - Cerlin

36

虽然年龄有点大了,但是嘿,我会用我的Genymotion的绝密方法告诉你如何做。

  • 下载 Charles 免费试用版: http://www.charlesproxy.com/download/

  • 安装它

  • 点击Proxy -> Throttle Settings

  • 设置您的 HTTP 限速

  • 关闭窗口

  • 点击 Proxy -> Throttling 启用限速

  • 打开 Genymotion 模拟器

  • 打开 wifi 设置

  • 长按启用的 wifi 连接

  • 点击 Modify Network

  • 点击 Show Advanced Options

  • Proxy 设置为 Manual

  • Proxy hostname 设置为 10.0.3.2

  • Port 设置为 8888

  • 点击 Save

现在您的网络就被限制了!


你从哪里得到了10.0.3.2的主机名?那是查尔斯的默认设置吗? - abbood
主机名应该是运行Charles本地网络地址的计算机。 - MaTriXy

18

您还可以在真实的 Android 设备上测试慢速 Internet 连接:

在三星 Galaxy S8+ Android 8.0.0 上测试通过。

前往 设置 -> 连接 -> 移动网络 -> 在 网络模式 下,您可以选择仅使用 2G3G 连接


18
我有一个解决你问题的策略。你可以使用代理应用程序来修改或监控你的网络状态,例如Charles
你应该像我发布的以下图片那样更改Charles的默认配置。

Open Your Throttle Setting

Setting Your Throttle Setting

最后,您会发现网络状态已经变得更慢。

Before

Setting After


3
到目前为止,这是唯一合适的解决方案 :D - egorikem

15
在Android Studio中,当运行模拟器时:
1- 点击模拟器侧边栏底部的设置按钮
2- 转到移动网络
3- 设置网络类型

Screenshot


9

在真实设备上测试低速度似乎有一个被忽视的简单方法。它需要一台Mac和一个以太网(或其他有线)网络连接。

在Mac上启用Wifi共享,将您的计算机变成Wifi热点,将您的设备连接到此热点。使用Netlimiter / Charles Proxy或Network Link Conditioner(您可能已经安装了)来控制速度。

有关更多详细信息并了解应该测试哪种速度,请查看:http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor-connections/


通过“共享”偏好设置,您可以将大多数连接共享到其他任何连接。我将其设置为通过蓝牙共享我的WiFi连接。(在设置完成之前,我的Android手机上没有出现通过蓝牙连接的选项。) - Doug Reeder
安装网络链路调节器工具的步骤:https://dev59.com/PWkw5IYBdhLWcg3wwdYT - Pang

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