256

我想针对网络连接性低的情况测试我的应用程序。除了站在电梯里,最好的方法是什么?我试过用铝箔纸把手机包起来,但没有多大帮助。

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

4

27 回答 27

298

这听起来可能有点疯狂,但微波炉可以起到微波屏蔽的作用。因此,将您的设备放入微波炉中(请勿在设备在里面时打开微波炉!)会导致您的信号强度显着下降。这绝对比站在电梯里要好……

于 2011-12-25T16:16:05.577 回答
131

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

  1. -netdelay <delay>

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

  2. -netspeed <speed>

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

    增加 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           ∞          ∞
    
于 2011-08-11T13:03:00.507 回答
111

由于iPhone的开发人员选项适用于 wifi 网络共享,因此您可以获得具有iOS 6及以上(并已设置为use for developments)的 iPhone xcode,将其设置为模拟所需的网络配置文件,将您的Android设备连接到其热点

在此处输入图像描述

于 2013-06-05T13:00:38.590 回答
80

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

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

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

这是它可能出现的屏幕截图:
Android Studio v 1.5 中的网络速度和延迟设置

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

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

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

下面的屏幕截图描述了此Run Configuration屏幕的外观:

Android Studio beta 0.8.6 中的运行配置屏幕

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

编辑
对于使用 eclipse 的任何人,请参阅下面的@Abhi 的答案

于 2014-09-01T11:08:59.540 回答
57

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

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

在此处输入图像描述

于 2015-03-19T08:42:59.817 回答
35

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

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

  • 安装它

  • 点击Proxy -> Throttle Settings

  • 设置 HTTP 限制速度

  • 关闭那个窗口

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

  • 打开一个 Genymotion 模拟器

  • 打开wifi设置

  • 长按启用的wifi连接

  • 点击Modify Network

  • 点击Show Advanced Options

  • 设置ProxyManual

  • 设置Proxy hostname10.0.3.2

  • 设置Port8888

  • 点击Save

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

于 2015-05-04T23:12:50.913 回答
16

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

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

打开油门设置

设置油门设置

最后,您会发现网络状态已被塑造成较低的速度。

前

设置之后

于 2018-01-15T07:11:06.650 回答
16

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

经三星 Galaxy S8 + Android 8.0.0 测试

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

于 2018-10-11T08:06:39.083 回答
10

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

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

2-转到蜂窝

3-设置网络类型

截屏

于 2018-09-24T09:19:09.000 回答
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 -连接/

于 2016-02-06T17:44:26.973 回答
8

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

运行>运行配置,选择您的Android 应用程序,然后转到目标选项卡。看模拟器启动参数。在这里,您可以轻松修改网络速度和网络延迟。

于 2013-08-08T13:27:12.157 回答
8

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

于 2018-05-31T16:14:49.437 回答
6

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

于 2014-09-25T10:32:38.167 回答
6

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/

于 2016-11-08T13:41:58.273 回答
4

Android工作室AVD的更新:

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

没有微波炉或电梯:)

于 2015-06-18T08:13:41.347 回答
3

对于 Mac OS 用户,您可以使用可以从 Apple 下载的 Network Link Conditioner。将其设置为mac上的AP,任何设备都可以连接它。

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

于 2015-09-22T08:34:20.390 回答
2

运行 > 运行配置,选择您的 Android 应用程序,然后转到目标选项卡。进行如图所示的更改。

在此处输入图像描述

于 2015-02-27T09:16:22.040 回答
2

我为这个问题苦苦挣扎了半天,终于找到了这个解决方案:

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

  • 原始的 Android 模拟器对于测试来说太慢了,并且没有比上面的解决方案更多。

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

Genymotion 模拟器

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

在你的主机上运行一个代理服务器来模拟糟糕的网络条件,比如CrapifyToxiproxy(我只测试了前者),你就可以开始了。

更新:

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

于 2016-08-23T06:17:23.373 回答
1

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

于 2011-09-23T15:45:49.033 回答
1

正如@VicVu Charles(或任何其他代理工具)所建议的那样,这是一种更简单的方法。但我想补充一点,您也可以使用您的设备执行此操作,而不仅仅是 genymotion 或其他模拟器。过程将是相同的:

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

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

于 2015-07-03T07:26:09.070 回答
1
  1. 在 Android Studio 中打开终端并转到 ../../Android/sdk/tools。'emulator' 可执行文件应该在此处可用。

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

    例如:./emulator -netdelay 60000 -avd Nexus_5_API_21

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

  4. 在应用程序中运行您的方案。

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

于 2015-11-25T09:50:46.723 回答
1

只需从 Android studio 转到 Android 设备监视器,然后 DDMS -> Emulator Control。将有 Speed 和 Latency 属性。

于 2015-12-03T11:15:10.663 回答
1

我发现 netlimiter4 是限制模拟器数据的最佳解决方案。它通过体面的 gui 提供精细控制,并为您提供有关每个进程的数据吞吐量的图形反馈。目前处于免费测试阶段。 截屏

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

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

在play store上搜索bradybound,我不能发布多个链接..

于 2015-12-15T18:41:44.693 回答
1

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

上面提到了我使用的另一种方法。通过 iPhone 热点连接。希望这可以帮助。

于 2018-03-27T10:57:04.647 回答
1

我正在使用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

在我的应用程序中,我正在使用证书固定,因此您需要添加证书(私有 + 公有)

cat private.key public.key > cert.pem

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

您可以在此处找到其他脚本示例。

于 2018-06-27T15:06:02.977 回答
1

我需要在 AndroidTV 本地设备上限制低互联网,根据我的阅读,最合适的解决方案是直接在我的路由器中限制互联网访问。
转到路由器设置(本地它就像 192.168.0.1)-> 设置 DHCP 服务器(如果它没有运行)-> 选择设备的 IP 地址并设置限制;

于 2020-03-16T14:09:41.707 回答
0

很老的帖子,但我会加两分钱。我对这个硬件产品( https://apposite-tech.com/products/linktropy-mini/ )非常满意,它使我们能够模拟很多真实世界的条件。很长一段时间以来,我们都面临着对在模拟器或飞行模式下可以工作的各种问题进行故障排除的挑战。

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

于 2019-04-02T15:35:30.753 回答