Android 模拟器在与 tcpdump-option 一起使用时无法启动

Android emulator fails to start when used with tcpdump-option

当我在 Ubuntu 14.04 上从终端 运行 一个 AVD 时,以下命令可以正常工作:

my_name@host:~$ emulator -avd my_avd

但是当我想使用 tcpdump 捕获网络流量时,模拟器无法启动:

my_name@host:~$ emulator -avd my_avd -tcpdump ~/test.cap
qemu-system-i386: -tcpdump: invalid option

我没有问题 运行在 Windows 上使用 tcpdump 连接模拟器,但在 Ubuntu 和 Debian 上它拒绝工作。这可能是一个错误还是我遗漏了什么?当我想使用选项 -timezone Europe/Berlin 时,同样的问题发生了。相反,选项 -dns-option 8.8.8.8 工作正常。每个 AVD 都会出现此问题。

Android SDK:

在 Intel Core 2 Duo 上启用了虚拟化 (KVM)。 Oracle JDK 8 已安装。

根据您的模拟器,-tcpdump 是一个无效选项。检查模拟器-?或 man emulator 的语法。但是,如果这在正常情况下完全有效,我会感到惊讶 - 我还没有看到 tcpdump 与任何东西集成在一起作为一个参数(尽管我确信这并非不可能)。

通常我希望将 tcpdump 单独用作命令。根据您安装的工具,我会 运行 启动模拟器,检查它 运行ning 的端口,如果您正在寻找传入流量,则 运行 tcpdump 分别针对其端口范围.如果它是传出的,请使用 tcpdump 跟踪到您要使用的目的地的流量。

我的 Mac 也出现了同样的行为,解决方案似乎是将 -engine classic 添加到您的命令行调用中。所以它是:

my_name@host:~$ emulator -avd my_avd -tcpdump ~/test.cap -engine classic

感谢@Interix 发布此内容here