我想测试我的应用程序是否有低网络连接的情况。除了站在电梯里,最好的办法是什么?我试过用铝箔包裹我的手机,但它并没有多大帮助。
我需要在真实设备上测试它,而不是在模拟器中测试。
答案 0 :(得分:237)
听起来有点疯狂,但微波炉可作为微波屏蔽。因此,将您的设备放入微波炉(当您的设备在里面时,请勿打开微波炉!)将导致您的信号强度显着下降。它肯定胜过站在电梯里......
答案 1 :(得分:95)
您可以使用模拟器。请看这个页面:Android Emulator。注意接下来的两个论点:
-netdelay <delay>
将网络延迟模拟设置为。默认值为none。看到 网络延迟仿真中的表格,用于支持的值。
-netspeed <speed>
将网络速度仿真设置为。默认值已满。看到 网络速度仿真中的表格,用于支持的值。
答案 2 :(得分:93)
由于 iPhone 开发者选项适用于wifi网络共享,因此您可以获得iOS 6
及更高版本(已设置为use for developments
且xcode
的iPhone }),将其设置为模拟所需的网络配置文件,将 Android 设备连接到其热点
答案 3 :(得分:60)
Android Studio v 1.5或更高版本的更新
正如@LouMorda在下面的评论中提到的,原始帖子中提到的Emulator
标签已在Android Studio v 1.5中删除。
现在,他们已将这些设置放在AVD Manager
的模拟器设置中
要访问这些设置:
Tools -> Android -> AVD Manager
Edit AVD
按钮(铅笔图标)Network Settings
按钮Show Advanced Settings
醇>
原帖
对于使用Android Studio IDE的任何人:
Run -> Edit Configurations
Android Application -> [Your App]
Emulator
标签Network Speed
和Network Latency
的不同值,以模拟不同的速度和延迟等。或者,您可以在@ {inazaruk的答案中提到的Additional command line options
文本字段中输入各种参数。
下面的屏幕截图介绍了此Run Configuration
屏幕的外观:
我知道回答这个问题有点晚了,但我希望这有助于其他人面临类似的问题!
修改强>
对于使用eclipse的任何人,请参阅下面的@Abhi's answer。
答案 4 :(得分:37)
我知道这是一个老问题,但是......
现在有些手机只能使用2G。它非常适合在真实设备上模拟慢速互联网。
答案 5 :(得分:32)
多年了,但是嘿,我会用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
现在您的网络将受到限制!
答案 6 :(得分:11)
答案 7 :(得分:8)
在模拟器中使用低/错连接测试应用程序的简便方法:
去运行&gt; 运行配置,选择 Android应用,然后转到目标标签。 查看模拟器启动参数。在这里,您可以轻松修改网络速度和网络延迟。
答案 8 :(得分:8)
在真实设备上测试低速的简单方法似乎被忽略了。它确实需要Mac和以太网(或其他有线)网络连接。
在Mac上打开Wifi共享,将计算机变为Wifi热点,将设备连接到此。使用Netlimiter / Charles Proxy或网络链接调节器(您可能已安装)来控制速度。
有关详细信息以及了解应在结帐时测试的速度类型:http://opensignal.com/blog/2016/02/05/go-slow-how-why-to-test-apps-on-poor-connections/
答案 9 :(得分:6)
Facebook建立了一个名为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/
答案 10 :(得分:6)
您还可以在真实的android设备上测试慢速互联网连接:
已通过Samsung Galaxy S8 + Android 8.0.0测试
转到设置-> 连接-> 移动网络->,然后在网络模式下选择仅使用 2G 或 3G 连接
答案 11 :(得分:5)
我很惊讶没人提到这一点。您可以通过蓝牙连接,并将它们分开10 +米(或更少的障碍物)。你有一个真正错误的连接。没有微波炉,没有电梯,也没需要软件。
答案 12 :(得分:4)
或者在实际设备上,您可以转到设置 - &gt;移动网络 - &gt;首选网络类型并选择最慢的可用... 当然这是非常有限的,但出于一些测试目的,它可能就足够了。
答案 13 :(得分:3)
您想测试没有网络连接,还是只测试慢速网络连接?如果是前者,您可以转到Settings > Wireless & networks > Airplane mode
并打开飞行模式。这将让您测试实际设备上的网络不可用性。
答案 14 :(得分:3)
for和mac OS用户可以使用可以从apple下载的Network Link Conditioner。将其设置为mac上的AP,任何divices都可以连接它。
你可以使用facebook开源工具ATC http://facebook.github.io/augmented-traffic-control/
答案 15 :(得分:2)
答案 16 :(得分:2)
我在这个问题上挣扎了半天,最后我找到了这个解决方案:
在真实设备上进行测试并不是很有意义,因为您必须经历很多工作才能使其正常运行。实现真正测试的唯一合理方法是让您的手机连接到低质量的蜂窝网络,如EDGE,如果您的电话公司提供它。您可以尝试通过拨打手机应用程序中的*#*#4636#*#*
最初的Android模拟器对于测试来说太慢了,并且没有达到上述解决方案的效果。
执行此操作的最佳方法是使用Genymotion。它是一款Android模拟器,性能远远优于原始AVD,个人使用的版本是免费的。
在Genymotion中创建虚拟设备后,只需通过this tutorial为设备设置代理。
在主机上运行代理服务器,模拟网络状况不佳,例如Crapify或Toxiproxy(我只测试了前者),你很高兴。
更新:
我刚刚意识到你也可以选择与真实设备相同的策略。我觉得自己很快就没有意识到这一点。只需在您的计算机上启动一个Crapify代理,将您的手机代理设置为您计算机的本地地址,瞧,您的手机上就有糟糕的互联网。
答案 17 :(得分:2)
在Android工作室AVD上更新:
没有微波炉或电梯:)
答案 18 :(得分:2)
Go Run&gt;运行配置,选择您的Android应用程序,然后转到“目标”选项卡。如图所示进行更改。
答案 19 :(得分: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
您可以找到一个简单的教程here。
您可以找到其他脚本示例here。
答案 20 :(得分:1)
打开终端inAndroid Studio并转到../../Android/sdk/tools。 &#39;模拟器&#39;可执行文件应该可以在这里找到。
运行./emulator -netdelay&#34; delay_in_millis&#34; -avd&#34; emulator_device_name&#34;
例如:./ emulator -netdelay 60000 -avd Nexus_5_API_21
现在构建您的应用并将其安装在模拟器中。
确保您在应用中更改了代码,为您的请求设置超时并处理。
答案 21 :(得分:1)
我使用的另一种方法如上所述。通过iPhone热点连接。 希望这会有所帮助。
答案 22 :(得分:1)
我发现netlimiter4是限制数据到仿真器的最佳解决方案。 它通过合适的gui提供粒度控制,并为您提供每个过程的数据吞吐量的图形反馈。目前处于免费测试阶段。 screenshot
http://www.netlimiter.com/products/nl4
Play商店中有些应用程序可用于限制实际设备,但它们需要root(我无法提供任何关于它们工作情况的建议,如果有的话 - YMMV。)
在Play商店中搜索bradybound,我无法发布多个链接..
答案 23 :(得分:1)
从Android工作室转到Android设备监视器,然后是DDMS - &gt;模拟器控制。将具有速度和延迟属性。
答案 24 :(得分:1)
是一种更容易的方法。但我想补充一点,你也可以使用你的设备,而不仅仅是genymotion或其他模拟器。流程将是相同的:
修改设备/模拟器的wifi设置以使用手动代理。然后设置代理主机名&amp;港口 一个。将主机名设置为系统的ip(使用ifconfig / ifconfig获取pc / mac的ip) 湾设置genymotion的端口号(检查charles中的代理设置)
PS:您的设备/模拟器必须使用相同的wifi,因为您使用的IP很可能是私有IP。
答案 25 :(得分:0)
帖子很旧,但我会加两分钱。我对这个硬件产品(https://apposite-tech.com/products/linktropy-mini/)非常满意,该产品使我们能够模拟许多现实情况。长期以来,我们一直面临着各种问题的疑难解答,这些问题可以在仿真器或飞机模式下工作。
我们有几种不同的配置文件设置,从零连接到边缘连接的各个阶段,具有不同程度的延迟,数据包丢失和误码。很棒的事情是我们可以即时更改这些内容,而不必在模拟器中重新启动应用程序。对于我们的商店来说,价格已经完全值得了,而且使用起来非常简单。
答案 26 :(得分:0)
我需要在AndroidTV本地设备上限制低速互联网,根据我已阅读的内容,最合适的解决方案是直接在路由器中限制互联网访问。
进入路由器设置(本地为192.168.0.1)->设置DHCP服务器(如果未运行)->选择设备的IP地址并设置限制;