我试图弄清楚如何在没有数据连接或飞行模式的情况下启动模拟器,任何一个都可以。我正在测试我的应用程序以防止数据丢失,但是我需要将其原子化。因此,我尝试通过命令行启动没有数据的模拟器,或者编写 bash 脚本来启动模拟器,关闭数据,然后运行单元测试。
已解决 - 根据建议
#! /usr/bin/expect
set timeout 10
spawn telnet localhost 5554
expect "OK"
send "gsm data off\n"
send "quit\n"
我试图弄清楚如何在没有数据连接或飞行模式的情况下启动模拟器,任何一个都可以。我正在测试我的应用程序以防止数据丢失,但是我需要将其原子化。因此,我尝试通过命令行启动没有数据的模拟器,或者编写 bash 脚本来启动模拟器,关闭数据,然后运行单元测试。
已解决 - 根据建议
#! /usr/bin/expect
set timeout 10
spawn telnet localhost 5554
expect "OK"
send "gsm data off\n"
send "quit\n"
快速而肮脏的方法可能是制作一个在启动时启动并关闭数据的应用程序,然后运行模拟器并安装该应用程序。然而,这确实存在不一致的可能性。
要让模拟器没有网络,您可以做的另一件事是远程登录到模拟器并关闭数据。为了使其自动化,我使用批处理文件和 vbscript 制作了一个简单(粗略)的示例,以向 telnet 提供命令,因为我的工作机器运行的是 Windows。
批处理文件:
@echo off
emulator -avd YOURAVDNAMEHERE
timeout /t 10
telnet_turn_data_off.vbs
telnet_turn_data_off.vbs
:
set oShell=CreateObject("WScript.Shell")
oShell.Run "telnet localhost 5554", 9
WScript.sleep 500
oShell.Sendkeys "gsm data off{ENTER}"
WScript.sleep 500
oShell.Sendkeys "gsm voice off{ENTER}"
WScript.sleep 500
oShell.Sendkeys "quit{ENTER}"
WScript.sleep 500
oShell.Sendkeys "quit{ENTER}"
WScript.sleep 500
如果在 Linux 或 Mac OS 上运行,expect应该能够编写 telnet 脚本(如对问题的编辑所示)。
还值得注意的是,在较旧的仿真器(例如 2.2)上,关闭数据可能无济于事。我上面的例子是用 4.2 模拟器测试的,它似乎正确地切断了数据。
我通常使用物理硬件而不是模拟器进行测试,但如果您找不到启用飞行模式的选项,您可以在启动模拟器之前简单地断开计算机与互联网的连接。您的计算机没有互联网=您的模拟器没有互联网。
使用以下步骤..
转到日食
Window->show view->other->android->Devices 现在选择您正在运行的模拟器,然后再次选择
去,
Window->show view->other->android->Emulator Control Now in that..set Data to Unregister from Home
从设备和模拟器
在设备或模拟器中转到,
设置 -> 无线和网络 -> 飞行模式 -> 确定