【问题标题】:How to put an AVD (emulator) into OFFLINE mode?如何将 AVD(模拟器)置于离线模式?
【发布时间】:2021-04-13 21:07:02
【问题描述】:

我想在用户处于无信号区域或手机处于飞行模式时测试我的应用程序的行为。

-> 如何将 Android 虚拟设备置于离线模式(无法连接到互联网)?

我尝试了以下方法:

  • 通过 AVD 设置激活飞行模式:令人惊讶的是,这不起作用(在飞行模式下仍然可以浏览互联网!)

  • 在我的 PC 上禁用网络连接:这显然可行,但并不令人满意,因为我在测试我的应用程序时需要互联网

【问题讨论】:

  • 目前无法在单元测试中以编程方式真正禁用网络访问。我为此问题提交了enhancement request
  • @Sebastien 我在下面提供了一个答案,它运行良好,但不幸的是完全断开了 AVD。尽管如此,您仍然可以看到您的应用程序的行为方式。

标签: android avd


【解决方案1】:

WIFI:

$ adb shell svc wifi enable
$ adb shell svc wifi disable

移动数据:

$ adb shell svc data enable
$ adb shell svc data disable

【讨论】:

  • 我已经花了两个小时试图弄清楚这一点。谢谢楼主!
  • 它可以从 adb 命令行运行,但是当我在应用程序中尝试它时,它不起作用并且不打印任何错误日志。您有什么想法,为什么在使用 ProcessBuilder 直接从应用程序调用时它不起作用? public void disableMobileData(){ ProcessBuilder pb = new ProcessBuilder("svc", "data", "disable");运行命令(PB); } public void runCommand(ProcessBuilder pb){ try { Process pc = pb.start(); pc.waitFor(); } catch (Exception e){ Log.e(TAG,"Exception"+e); } }
  • 一个用于复制贴纸的衬垫:adb shell "svc wifi disable && svc data disable"adb shell "svc wifi enable && svc data enable"
【解决方案2】:

我看到了所有相同的问题。 DDMS 并没有完全杀死它。 F8也不行。在模拟器内打开飞行模式也没有。我们都应该为 2009 年登录的人 this issue 加注星标。

【讨论】:

  • 这个答案不能解决问题。请参阅我的答案,了解真正运行离线 AVD 的方法。
  • 与此同时,他们关闭了这个问题,但没有修复它。但是我们应该越来越多地star它,因为它仍然存在于5.0.1中!似乎最好的解决方法是不要使用模拟器并在真实设备上进行测试。
  • 现在是 2015 年,由于某种原因,我在安装 Android Studio 时下载的默认 Nexus 5 x86 模拟器仍然遇到这个问题。
【解决方案3】:

我找到了一个可行的解决方案。在 Android 6.0 和 7.0 模拟器上测试,但应该可以在其他模拟器上运行。

网络中断:

adb shell ifconfig eth0 down

联网:

adb shell ifconfig eth0 up

如果您收到“Permission denied”错误,请以 root 身份重新启动 adb 守护程序:

adb root

然后再试一次。

【讨论】:

  • 哇——在阅读了跨多个线程的 15 多个答案之后,这是唯一有效的答案。虽然我需要使用 adb shell ifconfig wlan0 down 而不是 eth0
【解决方案4】:

您应该在模拟器窗口中按 F8,它会根据:http://developer.android.com/guide/developing/tools/emulator.html 关闭手机网络。但是我测试了它,它也不起作用!只有消息表明没有互联网连接,但它确实有效......

【讨论】:

  • 按F8表示你没有连接,但你是!断开后网络连接继续工作
【解决方案5】:

我所做的就是进入窗口菜单,选择“打开透视图->其他”打开 DDMS 透视图。在 DDMS 透视图中,您有一个“模拟器控制”视图,您可以在其中调整延迟、漫游,您可以为其提供不同的电话和数据状态。因此,按照此过程获取模拟器视图,然后转到“数据”下拉菜单并选择“拒绝”选项。

【讨论】:

  • 这确实是我一直在寻找的那种控制。但是,它也不起作用...我将语音和数据设置为拒绝,但我仍然可以从 AVD 浏览互联网。这绝对看起来像模拟器中的错误......
  • 它适用于我的盒子 :) 我想我可能还设置了其他一些你没有设置的东西。当我有机会时,我会深入研究它,看看我是否可以重现它不起作用......什么版本的 eclipse/avd?
【解决方案6】:

当我将语音和数据调整为“未注册”而不是“拒绝”时,我在“模拟器控制”视图中发现对我有用。现在我终于让网络的 AVD 离线,而我仍然可以发布这个答案。

【讨论】:

  • 对我不起作用:我的应用仍然可以从网络下载数据。
  • 这只是用来改变状态,但它仍然可以连接到互联网。
【解决方案7】:

不要在 Android 模拟器中使用飞行模式(效果不太好),而是在测试时关闭与系统的网络连接。即以太网连接或 Wi-fi 的切换。对我来说效果很好。

【讨论】:

    【解决方案8】:

    老问题,但我找到了解决方案:

    1. 打开命令行:CTRL+R > cmd
    2. 切换到安卓工具文件夹

      cd C:\Program Files\Android\android-sdk\tools

    3. 使用虚假的 DNS 服务器运行模拟器。将 2.3.3 更改为您的 AVD 的名称。 @ 让它开始:

      emulator.exe @2.3.3 -dns-server 127.0.0.1

    查看手册了解更多命令line options

    【讨论】:

    • 那不等于没有网络,是可以检测到的手机状态。
    • 总有人想要更多……我猜你可以打开飞行模式来改变状态。当然,您也可以使用 ip 而不是域名进行连接。但是对于大多数应用程序来说,这将切断互联网连接,这比这里的任何其他答案都要多。请阅读有关down voting 的常见问题解答:Downvoting should be reserved for extreme cases.If something is wrong, please leave a comment or edit the post to correct it
    【解决方案9】:

    James Koch 提到的问题的一条评论说有一种解决方法:

    评论 15 来自 iscy%inv...@gtempaccount.com,2011 年 7 月 8 日 终于找到了解决这个问题的方法: telnet localhost 5554 // 连接模拟器 qemu monitor //进入QEmu功能 info network //列出网络适配器“user.0”通常是名称 set_link user.0 down // 关闭网络 set_link user.0 up // 重新启用网络

    但是:

    评论 16 来自 leonhard...@gmail.com,2011 年 9 月 6 日 在 MacOS 10.7.1 和 SDK rev 12(平台 2.2、2.1 和 2.3.3)上,这项工作对我不起作用 …… qemu监控器 KO:内部错误:无法从控制台分离!

    -> 我在 Windows Vista、SDK rev 19 和平台 10 (2.3.3) 上也是如此

    但也许这对某人有用......

    【讨论】:

      【解决方案10】:

      最后,这个方法怎么样。

      android-sdks/tools/emulator -avd [AVD name goes here] -qemu -net nic,vlan=0 -net user,vlan=1
      

      实际上,这是一个技巧,因为以下会使我的模拟器崩溃:

      android-sdks/tools/emulator -avd [AVD name goes here] -qemu -net none
      

      在 Debian 上使用 Android 模拟器 V21.0 测试。

      【讨论】:

      • 这确实会使设备进入离线模式,但是它是如此离线以至于甚至 adb 都无法连接到它......
      【解决方案11】:

      我发现@Marco C. 的回答很有效,但我也发现我的 AVD 设置也很容易做到这一点。

      在侧边栏中,一直点击底部的三点图标:

      然后,将您的蜂窝设置,“信号强度”和“数据状态”分别调整为“无”和“拒绝”,如下图所示:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-08-05
        • 1970-01-01
        • 2013-08-03
        • 1970-01-01
        • 2021-08-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多