模拟低网络连接的Android

我想测试我的应用程序的低网络连接的情况。除了站在电梯里,还有什么最好的方法呢?我试过用铝箔纸包我的手机,但没有用。

我需要在真正的设备上测试它,而不是在模拟器上。

173574 次浏览

你可以使用模拟器。看看这个页面:Android模拟器。请注意下面两个论点:

  1. < p > -netdelay <delay>

    设置网络时延仿真为。默认值为none。看到

    .

    .

    . 李< /引用> < / >
  2. < p > -netspeed <speed>

    设置网络速率仿真为。默认值为full。看到

    .

    .

    .

    提高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           ∞          ∞
    

您是想测试没有网络连接,还是只是网络连接很慢?如果是前者,你可以去Settings > Wireless & networks > Airplane mode并打开飞行模式。这将允许您在实际设备上测试网络不可用性。

这听起来可能有点疯狂,但微波炉是作为微波屏蔽的。因此,把你的设备放在微波炉里(当你的设备在里面的时候不要打开微波炉!)会导致你的信号强度显著下降。这绝对比站在电梯里强……

由于iphone开发者选项适用于wifi绑定,你可以获得一个具有iOS 6及以上(并已设置为use for developmentsxcode)的iPhone,将其设置为模拟所需的网络配置文件,将你的安卓设备连接到它的热点

enter image description here

在模拟器中测试低/坏连接的应用程序的简单方法:

进入运行 > 运行配置,选择你的Android应用程序,然后进入目标选项卡。 看起来模拟器启动参数。在这里,您可以轻松地修改网络速度和网络延迟
< p > 更新到Android Studio v 1.5或更高版本
正如@LouMorda在下面的评论中提到的,在最初的帖子中提到的Emulator标签已经在Android Studio v 1.5中被删除 现在他们已经将这些设置放在AVD Manager中的模拟器设置中。
访问这些设置:

  1. 选择Tools -> Android -> AVD Manager
  2. 点击Edit AVD按钮(铅笔图标)
  3. 在单击Show Advanced Settings按钮后可以访问Network Settings

下面是它可能出现的屏幕截图  Android Studio v 1.5中的网络速度和延迟设置 < / p > < p > 最初的发布
对于任何使用Android Studio IDE的人:

  1. Run -> Edit Configurations
  2. 选择Android Application -> [Your App]
  3. 选择Emulator选项卡
  4. 在这里,你可以改变Network Speed(网速)和Network Latency(延迟)的不同值来模拟不同的速度和延迟等

或者,你可以像@inazaruk的回答中提到的那样,在Additional command line options文本字段中输入各种参数。

下面的截图描述了这个Run Configuration屏幕的样子:

Run Configurations Screen in Android Studio beta 0.8.6

我知道现在回答这个问题有点晚了,但我希望这能帮助其他面临类似问题的人!

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

或在实际设备上,您可以进入设置->移动网络->首选网络类型并选择可用的最慢网络… 当然,这是非常有限的,但对于某些测试目的,这可能已经足够了

运行配置,选择你的Android应用程序,然后进入目标选项卡。

enter image description here

我知道这是个老问题,但是…

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

enter image description here

几岁了,但是嘿,我会用Genymotion来配合我的万无一失的方法。

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

  • 安装它

  • ClickProxy -> Throttle Settings

  • 设置HTTP节流速度

  • 关闭窗口

  • 单击Proxy -> Throttling启用节流阀

  • 打开Genymotion模拟器

  • 打开wifi设置

  • 长按开启的wifi连接

  • 单击Modify Network

  • 单击Show Advanced Options

  • Proxy设置为Manual

  • Proxy hostname设置为10.0.3.2

  • Port设置为8888

  • 单击Save

现在你的网络将被阻塞!

Android工作室AVD更新:

  1. 开放式AVD管理器
  2. 创建/编辑AVD
  3. 点击高级设置
  4. 选择您首选的连接设置

没有微波炉和电梯:)

正如@VicVu Charles(或任何其他代理工具)所建议的那样,是一种更简单的方法。但我想补充的是,你也可以在你的设备上做到这一点,而不仅仅是genymotion或其他模拟器。过程是一样的:

修改您的设备/模拟器的wifi设置使用手动代理。然后设置代理主机名&港口 A.将主机名设置为您系统的IP(使用ifconfig/ifconfig获取您pc/mac的IP) B.设置genymotion的端口号(检查charles中的proxy Settings)

PS:你的设备/模拟器必须使用相同的wifi,因为你正在使用的ip很可能是私有ip。

对于mac操作系统用户,你可以使用网络链接调节器,可以从苹果下载。将其设置为mac上的AP,任何设备都可以连接它。

你可以使用facebook开源工具ATC http://facebook.github.io/augmented-traffic-control/ < / p >

  1. 在Android Studio中打开终端,进入../../Android/sdk/tools。'模拟器'可执行文件应该在这里可用。

  2. 运行。/emulator -netdelay "delay_in_millis" -avd "emulator_device_name"

    例如:./emulator -netdelay 60000 -avd Nexus_5_API_21 < / p >

  3. 现在构建应用程序并将其安装在模拟器中。

  4. 在应用程序中运行您的场景。

确保你有你的代码变化在应用程序设置超时你的请求和处理。

只需从Android工作室转到Android设备监视器,然后DDMS ->模拟器控件。将有速度和延迟属性。

我发现netlimiter4是将数据节流到模拟器的最佳解决方案。 它通过体面的gui提供粒度控制,并为每个进程的数据吞吐量提供图形化反馈。目前处于免费测试版。 截图 < / p >

http://www.netlimiter.com/products/nl4

在游戏商店中有一些应用程序可以节流到实际设备上,但它们需要root(我不能提供任何关于它们工作得如何的建议,如果在所有- YMMV)。

在游戏商店搜索bradybound,我不能发布超过一个链接。

有一种在真实设备上测试低速的简单方法似乎被忽视了。它确实需要一台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/

我为这个问题纠结了半天,终于想出了这个解决方案:

  • 在真正的设备上进行测试并没有太大意义,因为你必须经历很多事情才能让它正常工作。实现真正测试的唯一合理方法是让你的手机连接到低质量的蜂窝网络,比如EDGE,如果你的电话公司提供这种网络的话。你可以通过在手机应用程序中拨打*#*#4636#*#*来尝试这样做

  • 最初的Android模拟器对于测试来说太慢了,并且不能实现比上面的解决方案更多的功能。

最好的方法是使用Genymotion。这是一个Android模拟器,性能比原来的avd要好得多,个人使用的版本是免费的。

Genymotion emulator

在Genymotion中创建虚拟设备后,只需通过本教程为设备设置代理。

在您的主机上运行一个模拟恶劣网络条件的代理服务器,如CrapifyToxiproxy(我只测试了前者),然后就可以开始了。

更新:

我刚刚意识到,你也可以在真实的设备上选择同样的策略。我觉得自己像个白痴,没有早点意识到这一点。只要在你的电脑上启动一个Crapify代理,将你的手机代理设置为你电脑的本地地址,瞧,你的手机上就有了蹩脚的互联网。

Facebook建立了一个名为增强交通管制的东西。GitHub页面上的简要总结:

增强交通控制(ATC)是一种模拟网络状况的工具。它允许控制设备与互联网的连接。开发人员可以使用ATC在不同的网络条件下测试他们的应用程序,轻松地模拟高速、移动甚至严重受损的网络。可以控制的连接方面包括:

  • 带宽
  • 延迟
  • 包丢失
  • 损坏的包
  • 数据包排序

为了能够形成网络流量,ATC必须运行在路由流量的设备上,并查看设备的真实IP地址,例如您的网络网关。这也允许通过ATC路由的任何设备能够塑造他们的流量。流量可以使用web界面进行塑形/不塑形,允许任何带有web浏览器的设备使用ATC,而不需要客户端应用程序。

你可以在GitHub上找到它:https://github.com/facebook/augmented-traffic-control

他们还为此写了一篇博客:https://code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/

我有个办法解决你的问题。您可以使用代理程序来修改或监视您的网络状态。例如,查尔斯

你应该改变默认配置的查尔斯像下面的图片我张贴。

Open Your Throttle Setting

Setting Your Throttle Setting

最后,你会发现网速已经被塑造成较低的速度。

Before

Setting After

你试过吗? 设置—网络—更多—移动网络—网络模式—选择首选网络(以2G网络为例)。< / p > 上面提到了我使用的另一种方法。通过iPhone热点连接。

我很惊讶没人提到这一点。你可以通过蓝牙连接,并将它们分开十多米(或更少的障碍物)。你有一个真正的坏连接。没有微波炉,没有电梯,不需要软件。

我正在使用mitmproxy HTTPS代理。https://mitmproxy.org/

Mitmproxy是一个开源代理应用程序,允许在任何HTTP(S)客户端之间拦截HTTP和HTTPS连接。它允许实时监控、捕获和改变这些连接。更改请求,响应,报头,… 此外,您还可以拦截不同的请求

例如response_delay.py:

from mitmproxy import http
from time import sleep


def response(flow: http.HTTPFlow) -> None:
sleep(5.0)

然后执行这个注释会延迟来自服务器的所有响应:

mitmproxy --cert \*.asdf.at=./cert.pem --scripts response_delay.py

在我的应用程序中,我使用证书钉住,所以你需要添加证书(私有+公共)

猫私人。关键的公众。密钥> cert.pem

你可以找到一个简单的教程在这里

你可以找到其他脚本示例在这里

在Android Studio中,运行模拟器时:

1-点击模拟器侧栏底部的设置按钮

2-进入蜂窝网络

3—选择“网络类型”

截图

你也可以在真正的android设备上测试慢速互联网连接:

在三星Galaxy S8 + Android 8.0.0上测试

进入设置 -> 连接 -> 移动网络 ->,在networkmode下,你可以选择只使用2 g3 g 连接

非常老的帖子,但我将补充我的意见。我对这个硬件产品(https://apposite-tech.com/products/linktropy-mini/)非常满意,它使我们能够模拟许多现实世界的条件。在很长一段时间里,我们都面临着解决各种问题的挑战,这些问题将在模拟器或飞行模式下工作。

我们设置了几个不同的配置文件,从零连接到边缘连接的各个阶段,具有不同程度的延迟、数据包丢失和误码。这样做的好处是我们可以在运行中更改这些,而不必在模拟器中重新启动应用程序。对于我们的商店来说,这个价格是完全值得的,而且使用起来非常简单。

我需要在AndroidTV本机设备上限制低网络,根据我所读到的,最合适的解决方案是直接在我的路由器上限制互联网访问 进入路由器设置(本地是smth,如192.168.0.1)->设置DHCP服务器(如果没有运行)->选择设备的IP地址并设置限制;< / p >