android模拟低networking连接

我想testing我的应用程序的低networking连接情况。 除了站在电梯外,最好的办法是什么? 我试过用铝箔包装我的手机,但没有多大帮助。
我需要在真实的设备上进行testing,而不是在仿真器上进行testing。

你可以使用这个模拟器。 看看这个页面: Android模拟器 。 注意下面两个参数:

  1. -netdelay <delay>

    将networking延迟仿真设置为。 默认值是none。 请参阅networking延迟仿真中的表格了解支持的值。

  2. -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模拟器设置中。
要访问这些设置:

  1. selectTools -> Android -> AVD Manager
  2. 点击Edit AVDbutton(铅笔图标)
  3. 点击Show Advanced Settingsbutton后,可以访问Network Settings

以下是可能出现的截图:
Android Studio v 1.5中的网络速度和延迟设置

原始post
对于任何使用Android Studio IDE的用户:

  1. 转到Run -> Edit Configurations
  2. selectAndroid Application -> [Your App]
  3. selectEmulator选项卡
  4. 在这里,您可以更改Network SpeedNetwork Latency不同值以模拟不同的速度和延迟等

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

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

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

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

编辑
对于任何使用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上的更新:

  1. 打开AVDpipe理器
  2. 创build/编辑AVD
  3. 点击高级设置
  4. 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模拟器

在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。

  1. 在Android Studio中打开terminal并转到../../Android/sdk/tools。 'emulator'可执行文件应该在这里可用。

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

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

  3. 现在build立你的应用程序并安装在模拟器中。

  4. 在应用中运行你的场景。

请确保您的应用程序中的代码发生了更改,将超时设置为您的请求并处理该请求。

只需从Android Studio转到Android设备监视器,然后selectDDMS – > Emulator Control。将会有Speed和Latency属性。

我发现netlimiter4是模拟器数据传输的最佳解决scheme。 它通过一个体面的gui提供粒度控制,并为您提供每个进程的数据吞吐量的graphics反馈。 目前在一个免费的testing版。 截图

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

在Play商店有一些应用程序可以扼杀实际的设备,但是它们需要root(我不能提供任何关于它们工作的build议,如果根本就不行的话)。

在Play商店searchbradybound,我不能发布多个链接..