我该如何监控从我的Android模拟器发送和接收的网络流量?
我该如何监控从我的Android模拟器发送和接收的网络流量?
从Android模拟器中直接捕获网络流量有两种方法:
在模拟器上运行与ARM兼容的tcpdump二进制文件,将输出写入SD卡,例如:tcpdump -s0 -w /sdcard/emulator.cap
。
运行 emulator -tcpdump emulator.cap -avd my_avd
将所有模拟器的流量写入到PC上的本地文件中。
在这两种情况下,您可以像平常一样使用tcpdump或Wireshark来分析pcap文件。
对于 OS X 操作系统,您可以使用 Charles,它简单易用。
更多信息,请查看Android模拟器和Charles代理的博客文章。
Charles
。但据我所见,它是针对HTTP的。但是OP的问题并不是这个。 - Siu Ching Pong -Asuka Kenji-tcpdump
可执行文件(大多数当前映像都有它,已测试API 24和API 27映像),并在主机上以root身份运行adbd
(只需运行adb root
)。在Wireshark可用接口列表中(仅限Qt版本,弃用的GTK+没有它)或使用tshark -D
显示的列表中,应该有几个Android接口允许嗅探蓝牙、Logcat或Wifi流量,例如:
android-wifi-tcpdump-emulator-5554(Android WiFi Android_SDK_built_for_x86 emulator-5554)
是的,Wireshark可以使用。
我认为没有简单的方法可以仅过滤出模拟器流量,因为它来自相同的源IP。
也许最好的方法是设置一个非常简洁的VMware环境,并且只在其中运行模拟器,这样至少就不会有太多的后台流量。
当前版本的Android Studio无法正确应用-tcpdump
参数。但是,您仍可以通过将相关参数传递给qemu来捕获转储,方法如下:
tools/emulator -engine classic -tcpdump dump.cap -avd myAvd
http://developer.android.com/tools/debugging/ddms.html
更新: ⚠️ Android 设备监视器已在 Android Studio 3.1 中被弃用。更多信息请参见 https://developer.android.com/studio/profile/monitor
emulator -tcpdump emulator.cap -avd my_avd -engine classic
。这将强制使用已弃用的模拟器引擎,但应该可以解决问题,直到他们修复此问题。 - Mladen