Android emulator: How to monitor network traffic?
How do I monitor network traffic sent and received from my android emulator?
Solution 1:
There are two ways to capture network traffic directly from an Android emulator:
Copy and run an ARM-compatible tcpdump binary on the emulator, writing output to the SD card, perhaps (e.g.
tcpdump -s0 -w /sdcard/emulator.cap
).Run
emulator -tcpdump emulator.cap -avd my_avd
to write all the emulator's traffic to a local file on your PC
In both cases you can then analyse the pcap file with tcpdump or Wireshark as normal.
Solution 2:
It is also possible to use http proxy to monitor http requests from emulator. You can pass -http-proxy
flag when starting a new emulator to set proxy (Example burp) to monitor Android traffic. Example usage ./emulator -http-proxy localhost:8080 -avd android2.2
. Note that in my example I'm using Burp, and it is listening port 8080. More info can be found here.
Solution 3:
For OS X you can use Charles, it's simple and easy to use.
For more information, please have a look at Android Emulator and Charles Proxy blog post.
Solution 4:
Yes, wireshark will work.
I don't think there is any easy way to filter out solely emulator traffic, since it is coming from the same src IP.
Perhaps the best way would be to set up a very bare VMware environment and only run the emulator in there, at least that way there wouldn't be too much background traffic.
Solution 5:
A current release of Android Studio did not correctly apply the -tcpdump
argument. I was still able to capture a dump by passing the related parameter to qemu as follows:
tools/emulator -engine classic -tcpdump dump.cap -avd myAvd