如何使用Charles Proxy设置Android Lollipop模拟器?

22

我一直在按照其他问题的指引操作,例如:如何在Windows上配置SSL证书与Charles Web代理和最新的Android模拟器(尽管我使用的是MAC),以及SSL Proxy/Charles 和 Android 问题,我能够使用Charles Proxy分析Android模拟器的数据包,直到Kitkat版本。

现在我想对Lollipop版本的模拟器执行相同的步骤。然而,当我重复了成功设置Kitkat模拟器时使用的相同步骤后,Charles没有显示任何内容!当我尝试使用模拟器浏览器连接网络时,它会出现以下错误: 输入图像描述

是否需要针对Mac OS X上的Android Lollipop模拟器采取特殊步骤才能启用数据包嗅探?

提前致谢!

5个回答

29

我也遇到了同样的问题,终于找到了解决方法:按照您提到的链接中的说明操作:如何在Windows上使用Charles Web代理和最新的Android模拟器配置SSL证书?

然后我从charles进入'Proxy'菜单并启用了'Mac OS X proxy'。 然后突然就有东西过来了。 即使我关闭了'Mac OS X proxy'...

附注:通过模拟器上的移动设置设置代理无效;必须通过命令行设置代理(模拟器命令在sdk/tools中,应该运行类似于: ./emulator -avd Nexus_4_API_21 -http-proxy http://<your-ip-as-in-charles-help-menu>:8888)。 我还尝试了一些代理应用程序,例如proximator,但没有成功。 我还遇到了一些问题,重新启动charles解决了它。


18

如果你不想在命令行中忙碌,你可以通过模拟器来完成这个操作,需要更多的设置但效果很好:

  1. 打开"设置" > "更多" > "移动网络" > "接入点名称"

输入图像描述

  1. 选择主要的APN,将代理设置为10.0.2.2:8888(指向本地主机),如果您正在使用实际设备或局域网上的另一台设备进行操作,则可以使用网络上的其他IP。

输入图像描述

  1. 在Chrome中转到charlesproxy.com/getssl

输入图像描述

  1. SSL证书将被下载

输入图像描述

  1. 打开它时会要求您设置或确认密码(如果您已经设置了密码)

  2. 命名证书

输入图像描述

  1. 享受代理的乐趣(您必须在Charles上启用SSL代理以查看请求)

注意:我已经在API 24模拟器上进行了测试,并且似乎可以工作,但它也应该可以与其他版本一起使用。

注意2:自Android Studio 3.0起,当使用API > 21时,大部分情况下将不再需要Charles,因为这个功能即将来临: https://developer.android.com/studio/profile/network-profiler.html


无法与最新的Charles 4.2.1和Android模拟器v27配合使用,在其中运行Nougat 7。虽然我使用了类似的IP地址将代理连接到Genymotion(10.0.3.2),也许旧的模拟器可以正常工作。 - Alex Sorokoletov
起初它没有工作,但在重新启动连接(飞行模式关闭->打开)后,证书终于下载完成。 - Dmitriy Pavlukhin

10

现在Android模拟器中有一个设置 输入图像描述


4
模拟器发出的网络调用在 Charles 上显示为原始 IP 地址。是否有办法让它们显示为域名? - Gak2
@Gak2 有时重新启动Charles和/或模拟器可以解决这个问题。 - Chris Gunawardena
@Gak2 请参考这篇博客 :) https://medium.com/@daptronic/the-android-emulator-and-charles-proxy-a-love-story-595c23484e02 - Curious96

8

在Mac上使用Android模拟器进行调试可能会有些繁琐。

按照以下步骤操作:

1)打开终端并转到SDK路径下的tools文件夹。
2)将名为emulator的文件拖放到终端中(这样可以获得可执行文件的路径)。
现在你的模拟器应该显示如下路径:

/Users/your_pc_name/android_sdk/tools/emulator -avd Nexus_6P_API_23 -http-proxy http://x.x.x.x:8888

这里的xxxx是Charles帮助菜单中可以找到的IP地址。
3)执行以上操作。

完成!您的模拟器现在以代理网络模式启动。


对我来说,最终结果是/Users/chris/Library/Android/sdk/tools/emulator -avd Nexus_5_API_22 -http-proxy http://192.168.0.4:8888 - Chris Gunawardena
只要我导航到http://www.charlesproxy.com/getssl,这对我很有效。 - TTransmit

2
/Users/`whoami`/Library/Android/sdk/tools/emulator -avd `android list avd | grep Name -m 1 | cut -c 10-99` -http-proxy `ipconfig getifaddr en0`:8888

这应该适用于大多数Mac电脑。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接