android模拟低networking连接
我想testing我的应用程序的低networking连接情况。 除了站在电梯外,最好的办法是什么? 我试过用铝箔包装我的手机,但没有多大帮助。
我需要在真实的设备上进行testing,而不是在仿真器上进行testing。
你可以使用这个模拟器。 看看这个页面: Android模拟器 。 注意下面两个参数:
-
-netdelay <delay>
将networking延迟仿真设置为。 默认值是none。 请参阅networking延迟仿真中的表格了解支持的值。
-
-netspeed <speed>
设置networking速度仿真为。 默认值已满。 请参阅networking速度仿真表中的支持值。
这可能听起来有些疯狂,但微波炉可以作为微波炉的屏蔽。 因此,将设备放入微波炉(不要在设备进入的时候打开微波炉!)会使信号强度显着下降。 这绝对是站在电梯里面
由于iPhones的开发者选项适用于wifi共享,你可以得到一个iOS 6
或更高iOS 6
的iPhone(并且已经被设置为use for developments
xcode
use for developments
),将其设置为模拟期望的networkingconfiguration文件,将你的Android设备连接到它的热点
Android Studio v 1.5或更高版本的更新
正如@LouMorda在下面的评论中提到的那样,在原始文章中提到的Emulator
标签已经在Android Studio v 1.5中被移除。
现在,他们已经将这些设置放在AVD Manager
模拟器设置中。
要访问这些设置:
- select
Tools -> Android -> AVD Manager
- 点击
Edit AVD
button(铅笔图标) - 点击
Show Advanced Settings
button后,可以访问Network Settings
以下是可能出现的截图:
原始post
对于任何使用Android Studio IDE的用户:
- 转到
Run -> Edit Configurations
- select
Android Application -> [Your App]
- select
Emulator
选项卡 - 在这里,您可以更改
Network Speed
和Network Latency
不同值以模拟不同的速度和延迟等
或者,您可以在@ inazaruk的答案中提到的Additional command line options
文本字段中input各种参数。
以下屏幕截图描述了Run Configuration
屏幕的外观:
我知道这个问题有点晚了,但我希望这可以帮助其他人面临类似的问题!
编辑
对于任何使用eclipse的人,请参阅下面的@ Abhi的答案 。
岁,但嘿,我会用Genymotion我的万无一失的方法钟声。
-
下载Charles免费试用版: http : //www.charlesproxy.com/download/
-
安装它
-
点击
Proxy -> Throttle Settings
-
设置您的HTTP节stream速度
-
closures那个窗口
-
单击“
Proxy -> Throttling
启用油门 -
打开一个Genymotion模拟器
-
打开wifi设置
-
长按启用的无线连接
-
点击
Modify Network
-
点击
Show Advanced Options
-
将
Proxy
设置为Manual
-
将
Proxy hostname
设置为10.0.3.2
-
将
Port
设置为8888
-
点击
Save
而现在你的networking将被扼杀!
我知道这是一个古老的问题,但…
有些手机现在只有利用2G的设置。 它非常适合在真实设备上模拟慢速互联网。
简单的方法来testing您的应用程序与模拟器中的低/不良连接:
去运行 > 运行configuration ,select你的Android应用程序 ,然后去目标选项卡。 查看仿真器启动参数 。 在这里,您可以轻松修改networking速度和networking延迟。
有一个简单的方法来testing一个似乎被忽略的真实设备的低速度。 它确实需要一个Mac和一个以太网(或其他有线)的networking连接。
在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 /
Facebookbuild立了一个叫Augmented Traffic Control的东西。 他们的GitHub页面简要总结:
增强业务量控制(ATC)是模拟networking条件的工具。 它允许控制设备连接到互联网。 开发人员可以使用ATC在各种networking条件下testing其应用程序,轻松模拟高速,移动甚至严重受损的networking。 可以控制的连接方面包括:
- 带宽
- 潜伏
- 数据包丢失
- 损坏的数据包
- 数据包sorting
为了能够形成networkingstream量,ATC必须运行在路由stream量的设备上,并查看设备的真实IP地址,例如networking网关。 这也允许任何通过ATC路由的设备能够形成他们的stream量。 可以使用Web界面对stream量进行整形/非整形,从而允许任何带有Web浏览器的设备在不需要客户端应用程序的情况下使用ATC。
你可以在GitHub上find它: https : //github.com/facebook/augmented-traffic-control
他们也写了一篇关于它的博客文章: https : //code.facebook.com/posts/1561127100804165/augmented-traffic-control-a-tool-to-simulate-network-conditions/
或者在实际的设备上,你可以去设置 – >移动networking – >首选networkingtypes,并select最慢的可用…当然这是非常有限的,但对于一些testing目的可能是足够的。
去运行>运行configuration,select你的Android应用程序,然后去目标选项卡。 如图所示进行更改。
Android工作室AVD上的更新:
- 打开AVDpipe理器
- 创build/编辑AVD
- 点击高级设置
- select您的首选连接设置
没有微波炉或电梯:)
对于和Mac OS用户,您可以使用可从苹果下载的Network Link Conditioner。 将其设置为Mac上的AP,任何设备都可以连接它。
你可以使用Facebook的开源工具ATC http://facebook.github.io/augmented-traffic-control/
我在这个问题上挣扎了半天,最后我来到了这个解决scheme:
-
在真实的设备上进行testing并没有多大意义,因为您必须经历很多才能使其工作。 实现真正testing的唯一合乎逻辑的方法是让您的手机连接到低质量的手机networking,如EDGE,如果您的手机公司提供的话。 您可以尝试通过拨打电话应用程序中的
*#*#4636#*#*
来执行此操作 -
原来的Android模拟器对于testing来说太慢了,并没有达到上述的解决scheme。
最好的方法是使用Genymotion 。 这是一个Android模拟器,性能比原来的AVD好得多,个人使用的版本是免费的。
在Genymotion中创build虚拟设备之后,只需通过本教程设置设备的代理即可。
在你的主机上运行一个模拟恶劣networking条件的代理服务器,比如Crapify或者Toxiproxy (我只testing了前者),而且你很好。
更新:
我只是意识到,你也可以select与真实设备相同的策略。 我感觉自己像一个白痴没有早日意识到。 只需在计算机上启动Crapify代理,将您的手机代理设置为您计算机的本地地址,然后在您的手机上使用蹩脚的networking。
你想testing没有networking连接,或只是一个缓慢的networking连接? 如果是前者,你可以进入Settings > Wireless & networks > Airplane mode
,打开飞行模式。 这将使您可以testing实际设备上的networking不可用性。
如@VicVu查尔斯(或任何其他代理工具)build议的是一个更简单的方法。 但是我想补充一点,你可以用你的设备来做,不只是genymotion或者其他的模拟器。 过程将是相同的:
修改您的设备/模拟器的WiFi设置使用手动代理。 然后设置代理主机名和端口a。 设置主机名为您的系统的ip(使用ifconfig / ifconfig获取您的pc / mac的ip)b。 设置genymotion的端口号(在charles中查看代理设置)
PS:你的设备/仿真器必须使用相同的WiFi,因为你正在使用的IP将很可能是私人IP。
-
在Android Studio中打开terminal并转到../../Android/sdk/tools。 'emulator'可执行文件应该在这里可用。
-
运行./emulator -netdelay“delay_in_millis”-avd“emulator_device_name”
例如:./emulator -netdelay 60000 -avd Nexus_5_API_21
-
现在build立你的应用程序并安装在模拟器中。
- 在应用中运行你的场景。
请确保您的应用程序中的代码发生了更改,将超时设置为您的请求并处理该请求。
只需从Android Studio转到Android设备监视器,然后selectDDMS – > Emulator Control。将会有Speed和Latency属性。
我发现netlimiter4是模拟器数据传输的最佳解决scheme。 它通过一个体面的gui提供粒度控制,并为您提供每个进程的数据吞吐量的graphics反馈。 目前在一个免费的testing版。 截图
http://www.netlimiter.com/products/nl4
在Play商店有一些应用程序可以扼杀实际的设备,但是它们需要root(我不能提供任何关于它们工作的build议,如果根本就不行的话)。
在Play商店searchbradybound,我不能发布多个链接..