如何在Android模拟器上限制网络连接速度?

59

我需要测试应用在慢速网络连接下的工作情况。如何在Android模拟器上模拟慢速网络连接?

7个回答

82

对于Android Studio项目,您可以执行以下操作:

如果您需要暂时更改网络速度,则在模拟器工具栏上点击三个点(设置),进入移动网络选项卡并在那里配置网络速度。您需要拥有最新的Android工具。

如果您想要将此速度永久设置为某个模拟器镜像:

  1. 打开菜单Tools -> Android -> AVD Manager
  2. 选择/创建您的模拟器AVD映像,点击Edit
  3. 点击Show Advanced Settings按钮
  4. 设置所需的网络速度

    参考速度以增加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           ∞          ∞
    
  5. 重新启动模拟器

旧答案(已过时)

如果您正在使用Eclipse,请转到 运行->运行配置,选择您的运行配置,然后进入"目标"选项卡。在那里,您将找到一个"网络速度"下拉框(位于"模拟器启动参数"部分下)。

如果您从命令行运行模拟器,则可以使用"-netspeed"命令行参数(运行emulator -help-netspeed查看可能的选项概述)。


能否从应用程序内部控制它? - ppbitb
1
我不这么认为。当然,也许你可以让你的应用程序处理获取到的数据变慢一些,但我怀疑你无法覆盖系统的网络速度。如果你能做到那样的话,那将是可怕的 :) - dimsuz
找到那个网络速度设置花了我很长时间,因为侧边没有滚动条,而且我甚至没有想到调整窗口大小来查找它。但是感谢您提供的信息。 - zidarsk8
是的,Eclipse有时会出现这种问题。我记得我曾经遇到过类似的情况,涉及到其他选项 :) - dimsuz
1
要在模拟器中配置网络速度,使用三个点的技巧,选择“网络类型”,然后根据上面的表格选择相应速度的类型。 - user1114
回答得非常好!!谢谢。 - Akash Bisariya

28

当模拟器仍然运行时,最简单的修改方式是使用终端连接到模拟器。只需使用telnet或netcat(交互式地,您可以只输入“telnet localhost 5554”并键入“help” - 下面的示例显示如何进行脚本编写:

)

$ echo "network speed 100 100" | nc localhost 5554
$ echo "network status" | nc localhost 5554
Current network status:
  download speed:     100000 bits/s (12.2 KB/s)
  upload speed:       100000 bits/s (12.2 KB/s)
  minimum latency:  0 ms
  maximum latency:  0 ms

您也可以设置延迟/延迟:

$ echo "network delay gprs" | nc localhost 5554
$ echo "network status" | nc localhost 5554
Current network status:
  download speed:     100000 bits/s (12.2 KB/s)
  upload speed:       100000 bits/s (12.2 KB/s)
  minimum latency:  150 ms
  maximum latency:  550 ms

只是使得运行时更容易执行操作并测试各种场景(通过自动化、手动测试等方式)。


1
谢谢你的回答!与使用运行配置不同,这对我很有效。我也喜欢你可以检查当前设置的方式。 - Father Stack
2
这太棒了。在运行模拟器时能够更改设置要好得多。我发现另一个有用的命令是它可以延迟2秒钟的网络来测试加载屏幕:echo "network delay 2000" | nc localhost 5554 - phreakhead
3
FYI,现在(2020年)echo命令无法使用,因为模拟器需要登录才能使用。控制台显示“Android Console: Authentication required”,请键入“auth <auth_token>”进行身份验证。 - Grzegorz Dev
这个解决方案在2020年不起作用:“Android控制台:需要身份验证”。 - Yohanim
它仍在工作,你可以按照屏幕上的步骤,并粘贴你的验证字符串“Android控制台:您可以在‘/Users/username/.emulator_console_auth_token’中找到您的<auth_token>”。一旦你复制了那个短代码,就执行nc localhost 5554,然后进行auth {code}。另一件事是这种方法与adb emu network delay 1000做相同的事情。 - 1mike12
FYI设置下载和上传速度的正确语法是network speed <up>:<down> - André Dion

6

使用Appium 设置网络速度

adb emu network speed

例子:

adb emu network speed gsm

所有数值(详见Appium文档): GSM、HSCSD、GPRS、UMTS、EDGE、HSDPA、LTE、EVDO和Full。


4
在Eclipse中: 运行 -> 运行配置 -> 点击! 选择目标选项卡。 点击!
然后有一个网络速度选项!
将其设置为您想要模拟的任何内容。 :)

3
请确保使用移动网络(而不是WiFi)在模拟器上体验互联网速度变化。 enter image description here

1

运行->运行配置:在那里您可以找到模拟器启动参数,您可以在其中设置互联网速度。


0

在模拟器中,前往

扩展控件 -> 蜂窝网络 -> 网络类型

并根据您的需求设置参数


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接