首页 文章

模拟Android的低网络连接

提问于
浏览
168

我想测试我的应用程序的低网络连接情况 . 除了站在电梯里,最好的办法是什么?我试过用铝箔包裹我的手机,但它没有多大帮助 .

我需要在真实设备上测试它,而不是在模拟器中测试它 .

26 回答

  • 1

    你试过这个吗?设置 - 网络 - 更多 - 移动网络 - 网络模式 - 选择首选网络(例如2G) .

    我使用的另一种方法如上所述 . 通过iPhone热点连接 . 希望这可以帮助 .

  • 59

    您可以使用模拟器 . 看看这个页面:Android Emulator . 注意接下来的两个论点:

    • -netdelay <delay>

    将网络延迟仿真设置为 . 默认值为none . 有关支持的值,请参阅网络延迟仿真中的表 .

    • -netspeed <speed>

    将网络速度仿真设置为 . 默认值已满 . 有关支持的值,请参阅网络速度仿真中的表格 .

  • 32

    这可能听起来有点疯狂,但微波炉可作为微波屏蔽 . 因此,将您的设备放入微波炉(当您的设备在里面时,请勿打开微波炉!)将导致您的信号强度显着下降 . 它绝对胜过站在电梯内......

  • 93

    由于 iPhones 开发人员选项适用于wifi网络共享,你可以获得一个拥有 iOS 6 及以上的iPhone(并且已经设置为带有 xcodeuse for developments ),将其设置为模拟所需的网络配置文件,将 Android 设备连接到其热点

    enter image description here

  • 33

    Update for Android Studio v 1.5 or greater
    正如@LouMorda在下面的评论中提到的那样,原始帖子中提到的 Emulator 标签已在Android Studio v 1.5中删除 .

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

    • 选择 Tools -> Android -> AVD Manager

    • 单击 Edit AVD 按钮(铅笔图标)

    • 单击 Show Advanced Settings 按钮后可以访问 Network Settings

    以下是它可能如何显示的屏幕截图:

    Network Speed and Latency Settings in Android Studio v 1.5

    Original Post
    对于使用Android Studio IDE的任何人:

    • 转到 Run -> Edit Configurations

    • 选择 Android Application -> [Your App]

    • 选择 Emulator 标签

    • 在这里,您可以更改 Network SpeedNetwork Latency 的不同值,以模拟不同的速度和延迟等

    或者,您可以在 Additional command line options 文本字段中输入各种参数,如@ inazaruk的答案中所述 .

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

    Run Configurations Screen in Android Studio beta 0.8.6

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

    Edit
    对于使用eclipse的任何人,请参阅下面的@Abhi's answer .

  • 8

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

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

    enter image description here

  • 3

    岁了,但是嘿,我会用Genymotion的万无一失的方法来加入 .

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

    • 安装它

    • 点击 Proxy -> Throttle Settings

    • 设置HTTP限制速度

    • 关闭那个窗口

    • 单击 Proxy -> Throttling 以启用油门

    • 打开Genymotion模拟器

    • 打开wifi设置

    • 长按启用的wifi连接

    • 点击 Modify Network

    • 点击 Show Advanced Options

    • 设置 ProxyManual

    • Proxy hostname 设为 10.0.3.2

    • Port 设为 8888

    • 点击 Save

    现在您的网络将受到限制!

  • 2

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

    Run > Run configurations ,选择你的 Android Application ,然后转到 Target 标签 . 看 Emulator launch parameters . 在这里,您可以轻松修改网络速度和网络延迟 .

  • 1

    我有一个策略来解决你的问题 . 您可以使用代理应用程序来修改或监控您的净状态 . 例如, Charles .

    您应该像我发布的以下图片一样更改Charles的默认配置 .

    Open Your Throttle Setting

    Setting Your Throttle Setting

    最后,您会发现净状态已经降低了 .

    Before

    Setting After

  • 1

    在真实设备上测试低速的简单方法似乎被忽略了 . 它确实需要Mac和以太网(或其他有线)网络连接 .

    在Mac上打开Wifi共享,将您的计算机变为Wifi热点,将您的设备连接到此 . 使用Netlimiter / Charles Proxy或网络链接调节器(您可能已安装)来控制速度 .

    有关更多详细信息,并了解您应该检查什么样的速度:http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor-connections/

  • 1

    Facebook Build 了一个名为Augmented Traffic Control的东西 . 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/

  • 94

    或者在实际设备上,您可以转到设置 - >移动网络 - >首选网络类型并选择最慢的可用...当然这是非常有限的,但出于某些测试目的,它可能就足够了 .

  • 2

    我'm surprised nobody mentioned this. You can tether via Bluetooth, and separate them by ten+ meters(or less with obstacles). You'有一个 real 错误的连接 . 没有微波炉,没有电梯,不需要软件 .

  • 2

    您还可以在真正的Android设备上测试慢速互联网连接:

    测试三星Galaxy S8 Android 8.0.0

    转到 Settings - > Connection - > Mobile Network - >并在 networkmode 下,您可以选择仅使用 2G3G connections

  • 1

    您想测试没有网络连接,还是只测试慢速网络连接?如果是前者,则可以转到 Settings > Wireless & networks > Airplane mode 并打开飞行模式 . 这将让您测试实际设备上的网络不可用性 .

  • 0

    对于和Mac OS用户,您可以使用可从Apple下载的网络链接调节器 . 将它设置为mac上的AP,任何divices都可以连接它 .

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

  • 1

    Go Run > Run configurations, select your Android Application, and there go to Target tab. Do changes as shown in the figure.

    enter image description here

  • 6

    更新Android工作室AVD:

    • 打开AVD经理

    • 创建/编辑AVD

    • 单击高级设置

    • 选择首选连接设置

    没有微波炉或电梯:)

  • 4

    我在这个问题上挣扎了半天,最后我找到了这个解决方案:

    • 在真实设备上进行测试总体上没有多大意义,因为你必须经历很多努力才能使它发挥作用 . 实现真正测试的唯一合理方法是让您的手机连接到低质量的蜂窝网络,如EDGE,如果您的电话公司提供它 . 您可以尝试通过在手机应用程序中拨打 *#*#4636#*#* 来执行此操作

    • 最初的Android模拟器对于测试来说太慢了,并没有达到上述解决方案的效果 .

    最好的方法是使用Genymotion . 它是一个Android模拟器,性能比原始AVD好得多,个人使用的版本是免费的 .

    Genymotion emulator

    在Genymotion中创建虚拟设备后,只需通过this tutorial为设备设置代理 .

    在主机上运行代理服务器,模拟不良的网络状况,如CrapifyToxiproxy(我只测试了前者),你很高兴 .

    更新:

    我刚刚意识到你也可以选择与真实设备相同的策略 . 我觉得自己很快就没有意识到这一点 . 只需在您的计算机上启动一个Crapify代理,将您的手机代理设置为您计算机的本地地址,瞧,您的手机上有一个糟糕的互联网 .

  • 3

    正如@VicVu所建议的Charles(或任何其他代理工具)是一种更容易的方法 . 但我想补充一点,你也可以使用你的设备,而不仅仅是genymotion或其他模拟器 . 流程将是相同的:

    修改设备/模拟器的wifi设置以使用手动代理 . 然后设置代理主机名和端口a . 将主机名设置为系统的ip(使用ifconfig / ifconfig获取pc / mac的ip)b . 设置genymotion的端口号(检查charles中的代理设置)

    PS: 您的设备/模拟器必须使用相同的wifi,因为您使用的IP很可能是私有IP .

  • 7
    • 在Android Studio中打开终端并转到../../Android/sdk/tools . 'emulator'可执行文件应该可以在这里找到 .

    • 运行./emulator -netdelay“delay_in_millis”-avd“emulator_device_name”

    Ex: ./emulator -netdelay 60000 -avd Nexus_5_API_21

    • 现在构建您的应用并将其安装在模拟器中 .

    • 在应用中运行您的方案 .

    确保你在应用程序中更改代码,为您的请求设置超时并处理 .

  • 4

    只需从Android工作室转到Android设备监视器,然后转到DDMS - >仿真器控件 . 这将是速度和延迟属性 .

  • 232

    我发现netlimiter4是限制数据到仿真器的最佳解决方案 . 它通过合适的gui提供粒度控制,并为您提供每个过程的数据吞吐量的图形反馈 . 目前处于免费测试阶段 . screenshot

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

    游戏商店有可用的应用程序来限制实际设备,但它们需要root(我无法提供任何关于它们工作情况的建议,如果有的话 - YMMV . )

    在Play商店搜索bradybound,我不能发布多个链接..

  • 4

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

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

    例如 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
    

    在我的应用程序中,我使用证书固定,因此您需要添加证书(私有公共)cat private.key public.key> cert.pem

    你可以找到一个简单的教程here .

    您可以找到其他脚本示例here .

  • 8

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

    1-仿真器侧栏底部的命中设置按钮

    2-转到Cellular

    3-设置网络类型

    Screenshot

  • 1

    非常老的帖子,但我会加上我的两分钱 . 我对这个硬件产品(https://apposite-tech.com/products/linktropy-mini/)非常满意,这使我们能够模拟许多现实世界的条件 . 很长一段时间,我们遇到了对在仿真器或飞行模式下工作的各种事情进行故障排除的挑战 .

    我们有几种不同的配置文件,从零连接到边缘连接的各个阶段,具有不同程度的延迟,数据包丢失和位错误 . 关于它的好处是我们可以动态更改这些,而无需在模拟器中重新启动应用程序 . 价格对我们的商店来说是完全值得的,并且使用起来很简单 .

相关问题