6

我在代码的某处犯了一个错误,当我在应用程序的 HTTPClient 发出一些请求时关闭模拟器中的网络时,我的 Android 应用程序崩溃了。

但是我无法调试它,因为当我关闭网络时,我也失去了 ADB 连接。因此我看不到是什么异常导致了崩溃。

我尝试通过以下方式关闭网络:

  • F8
  • 在 DDMS 模拟器控制中将“数据”设置为“未注册”或“拒绝”

我可以让我的 Mac 离线,ADB 会继续运行,但不幸的是我无法以这种方式重现崩溃。

有没有办法在模拟器中关闭网络,同时保持 ADB 活着?我基本上需要访问 LogCat 条目。

谢谢!

4

4 回答 4

2

您可以从设备而不是 ADB 运行 logcat,并将其重定向到文件以供离线阅读。

adb shell logcat [-v threadtime] > /sdcard/mylogs/logcat.log

代替

adb logcat [-v threadtime]

然后,您可以在重新连接到设备时获取该文件。

于 2012-11-12T10:10:08.960 回答
1

在 linux 上,使用 iptables 防火墙非常简单。我想你试图调试 api 调用所以只是阻止 api 主机:

iptables -I OUTPUT -d api.example.com -j DROP

当然,您可以使用 Mac 或 Windows 防火墙做同样的事情。

于 2014-03-31T07:23:51.653 回答
0

您始终可以将设备置于飞行模式,这仍然允许您通过 adb 进行连接,但不能让模拟器连接到互联网。您还可以通过 ddms 中的模拟器控制部分通过 eclipse 关闭数据,方法是在数据下拉列表中输入未注册/拒绝。

于 2012-11-10T08:24:57.727 回答
0

我知道这是个老问题,但有人可能会为此使用 find 。

我的设置

带有模拟 android 4.4 的 Eclipse Kepler

如果你想让你的 adb 保持活动状态并关闭网络,你可以试试这个。

  1. 启动模拟设备
  2. 激活飞行/飞行模式
  3. 重启 Eclipse
  4. 它应该工作!检查连接设备的 DDMS 透视图或使用adb devices命令
于 2014-05-18T12:43:58.080 回答