我想测试我的应用程序的低网络连接的情况。除了站在电梯里,还有什么最好的方法呢?我试过用铝箔纸包我的手机,但没有用。
我需要在真正的设备上测试它,而不是在模拟器上。
你可以使用模拟器。看看这个页面:Android模拟器。请注意下面两个论点:
-netdelay <delay>
设置网络时延仿真为。默认值为none。看到 . . . 李< /引用> < / > < 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 ∞ ∞
设置网络时延仿真为。默认值为none。看到
-netspeed <speed>
设置网络速率仿真为。默认值为full。看到 . . .
设置网络速率仿真为。默认值为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并打开飞行模式。这将允许您在实际设备上测试网络不可用性。
Settings > Wireless & networks > Airplane mode
这听起来可能有点疯狂,但微波炉是作为微波屏蔽的。因此,把你的设备放在微波炉里(当你的设备在里面的时候不要打开微波炉!)会导致你的信号强度显著下降。这绝对比站在电梯里强……
由于iphone开发者选项适用于wifi绑定,你可以获得一个具有iOS 6及以上(并已设置为use for developments与xcode)的iPhone,将其设置为模拟所需的网络配置文件,将你的安卓设备连接到它的热点
iOS 6
use for developments
xcode
在模拟器中测试低/坏连接的应用程序的简单方法:
Emulator
AVD Manager
Tools -> Android -> AVD Manager
Edit AVD
Show Advanced Settings
Network Settings
下面是它可能出现的屏幕截图 < / p > < p > 最初的发布 对于任何使用Android Studio IDE的人:
Run -> Edit Configurations
Android Application -> [Your App]
Network Speed
Network Latency
或者,你可以像@inazaruk的回答中提到的那样,在Additional command line options文本字段中输入各种参数。
Additional command line options
下面的截图描述了这个Run Configuration屏幕的样子:
Run Configuration
我知道现在回答这个问题有点晚了,但我希望这能帮助其他面临类似问题的人!
或在实际设备上,您可以进入设置->移动网络->首选网络类型并选择可用的最慢网络… 当然,这是非常有限的,但对于某些测试目的,这可能已经足够了
运行配置,选择你的Android应用程序,然后进入目标选项卡。
我知道这是个老问题,但是…
现在有些手机的设置是只使用2G。它非常适合在真实设备上模拟慢速互联网。
几岁了,但是嘿,我会用Genymotion来配合我的万无一失的方法。
下载Charles免费试用:http://www.charlesproxy.com/download/ .
安装它
ClickProxy -> Throttle Settings
Proxy -> Throttle Settings
设置HTTP节流速度
关闭窗口
单击Proxy -> Throttling启用节流阀
Proxy -> Throttling
打开Genymotion模拟器
打开wifi设置
长按开启的wifi连接
单击Modify Network
Modify Network
单击Show Advanced Options
Show Advanced Options
将Proxy设置为Manual
Proxy
Manual
将Proxy hostname设置为10.0.3.2
Proxy hostname
10.0.3.2
将Port设置为8888
Port
8888
单击Save
Save
现在你的网络将被阻塞!
Android工作室AVD更新:
没有微波炉和电梯:)
正如@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 >
在Android Studio中打开终端,进入../../Android/sdk/tools。'模拟器'可执行文件应该在这里可用。
运行。/emulator -netdelay "delay_in_millis" -avd "emulator_device_name"
例如:./emulator -netdelay 60000 -avd Nexus_5_API_21 < / p >
现在构建应用程序并将其安装在模拟器中。
确保你有你的代码变化在应用程序设置超时你的请求和处理。
只需从Android工作室转到Android设备监视器,然后DDMS ->模拟器控件。将有速度和延迟属性。
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#*#*来尝试这样做
*#*#4636#*#*
最初的Android模拟器对于测试来说太慢了,并且不能实现比上面的解决方案更多的功能。
最好的方法是使用Genymotion。这是一个Android模拟器,性能比原来的avd要好得多,个人使用的版本是免费的。
在Genymotion中创建虚拟设备后,只需通过本教程为设备设置代理。
在您的主机上运行一个模拟恶劣网络条件的代理服务器,如Crapify或Toxiproxy(我只测试了前者),然后就可以开始了。
更新:
我刚刚意识到,你也可以在真实的设备上选择同样的策略。我觉得自己像个白痴,没有早点意识到这一点。只要在你的电脑上启动一个Crapify代理,将你的手机代理设置为你电脑的本地地址,瞧,你的手机上就有了蹩脚的互联网。
Facebook建立了一个名为增强交通管制的东西。GitHub页面上的简要总结:
增强交通控制(ATC)是一种模拟网络状况的工具。它允许控制设备与互联网的连接。开发人员可以使用ATC在不同的网络条件下测试他们的应用程序,轻松地模拟高速、移动甚至严重受损的网络。可以控制的连接方面包括: 带宽 延迟 包丢失 损坏的包 数据包排序 为了能够形成网络流量,ATC必须运行在路由流量的设备上,并查看设备的真实IP地址,例如您的网络网关。这也允许通过ATC路由的任何设备能够塑造他们的流量。流量可以使用web界面进行塑形/不塑形,允许任何带有web浏览器的设备使用ATC,而不需要客户端应用程序。
增强交通控制(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/
我有个办法解决你的问题。您可以使用代理程序来修改或监视您的网络状态。例如,查尔斯。
你应该改变默认配置的查尔斯像下面的图片我张贴。
最后,你会发现网速已经被塑造成较低的速度。
你试过吗? 设置—网络—更多—移动网络—网络模式—选择首选网络(以2G网络为例)。< / p > 上面提到了我使用的另一种方法。通过iPhone热点连接。
我很惊讶没人提到这一点。你可以通过蓝牙连接,并将它们分开十多米(或更少的障碍物)。你有一个真正的坏连接。没有微波炉,没有电梯,不需要软件。
我正在使用mitmproxy HTTPS代理。https://mitmproxy.org/
例如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
在我的应用程序中,我使用证书钉住,所以你需要添加证书(私有+公共)
猫私人。关键的公众。密钥> cert.pem
你可以找到一个简单的教程在这里。
你可以找到其他脚本示例在这里。
在Android Studio中,运行模拟器时:
1-点击模拟器侧栏底部的设置按钮
2-进入蜂窝网络
3—选择“网络类型”
你也可以在真正的android设备上测试慢速互联网连接:
在三星Galaxy S8 + Android 8.0.0上测试
进入设置 -> 连接 -> 移动网络 ->,在networkmode下,你可以选择只使用2 g或3 g 连接
非常老的帖子,但我将补充我的意见。我对这个硬件产品(https://apposite-tech.com/products/linktropy-mini/)非常满意,它使我们能够模拟许多现实世界的条件。在很长一段时间里,我们都面临着解决各种问题的挑战,这些问题将在模拟器或飞行模式下工作。
我们设置了几个不同的配置文件,从零连接到边缘连接的各个阶段,具有不同程度的延迟、数据包丢失和误码。这样做的好处是我们可以在运行中更改这些,而不必在模拟器中重新启动应用程序。对于我们的商店来说,这个价格是完全值得的,而且使用起来非常简单。