如何设置安卓模拟器代理设置

119

我想在Android模拟器中使用浏览器,并且希望使用我的机器上的代理设置。我该如何设置?

阅读非常好的Android手册后,他们告诉我应该使用以下命令启动Android:

emulator -avd myavd -http-proxy http://168.192.1.2:3300

但是我仍然无法使用模拟器浏览器。请注意,我正在使用我的代理服务器的IP地址。

我做错了什么?

23个回答

153

最简单也是最好的方法如下:

  1. 点击菜单
  2. 点击设置
  3. 点击无线和网络
  4. 进入移动网络
  5. 进入接入点名称
  6. 这里你会看到 Telkila Internet,点击它。
  7. 在编辑接入点部分,输入“代理”和“端口”
  8. 同时提供用户名和密码,其余字段留空。
注意:以上内容适用于 Android 模拟器 2.2。请保留原有的 HTML 标签。

不适用于最常见的在本地主机上运行Fiddler2或其他代理的使用情况...可能需要添加端口转发,但这也很麻烦。 - gcb
2
它在 Android 模拟器 2.3.3 上无法工作,但在模拟器 4.1.2 上对我有效。 - azgolfer
30
这在安卓 5 的镜像(API 21)上已经不再可用。 - neomega
这个答案应该被接受!在Mac上可以使用Burpsuite工作! - alchemist
这也适用于Volley!仅以防有人正在使用grep搜索。 - computingfreak

57

-http-proxy on Android Emulator

在Run Configuration> Android Application > App > Target > Additional Emulator Command Line Options中添加以下内容:-http-proxy http://xx.xxx.xx.xx:8080


1
这是哪个Eclipse版本?我没有看到这个界面 :( - salmatron
还要配置您的模拟器。 - Badre
4
代理使用用户名和密码时,请使用以下格式:-http-proxy http://用户名:密码@主机名:端口号 - ashakirov
在我的情况下出现了错误“模拟器未被识别为命令”..我需要在PATH变量中添加任何内容吗??我正在使用Android Studio 1.0.1,并且在我的办公系统中使用代理。 - Anil Bhaskar

55

Android模拟器中有一个设置可以设置代理。 在此输入图片描述


参考链接为 https://developer.android.com/studio/run/emulator-networking.html#proxy - Alen Siljak
12
这个设置从来没有对我有效,我总是不得不使用“-http-proxy”命令启动模拟器才能使其工作。 - gsgx
3
这个菜单从2017年中期开始出现了一个反复出现的错误,让我感到非常烦恼。有时它可以工作,有时在同一AVD上不能工作。只有重新创建AVD才能可靠地解决问题。有时代理在会话过程中断开连接!在企业环境中,这意味着我的账户被锁定了,因为这个麻烦事。 - halxinate
这在我使用Charles时一直有效。现在突然停止工作了,即使我写错代理,仿真器仍然有互联网。 - George Shalvashvili
4
如果您在工具窗口中启动模拟器,则代理选项卡将不可用。 -> 转到Android Studio设置 - 工具 - 模拟器,取消选中“在工具窗口中启动”。 - Marvin
显示剩余2条评论

22

我尝试在服务器名称中删除http后,它对我有效。

模拟器 -avd myavd -http-proxy 168.192.1.2:3300


2
这仅适用于浏览器,但没有应用程序请求通过代理 :( - Felipe Sabino
@FelipeSabino 你能解决这个问题吗?我也遇到了同样的问题。 - Rohit Singh
@RohitSingh 我也遇到了同样的问题,你能解决吗? - Mab
1
很遗憾,@Mab不行。 - Rohit Singh

20
在Android Studio中:
点击App菜单下的“编辑配置”

enter image description here

  1. 前往应用程序或者安卓应用程序(默认设置)
  2. 点击调试器
  3. 点击LLDB启动命令
  4. 点击 +
  5. 添加你的命令 -http-proxy http://168.192.1.2:3300

enter image description here

就是这样。

如果你想使用你的PC IP,可以使用以下命令:

  • 在MacOS上:-http-proxy "$(ipconfig getifaddr en0)":8888
  • 在Linux上:-http-proxy "$(hostname -i)":8888

====== 2022年2月23日更新 ======

目前我正在使用以下命令来启用/禁用代理:

adb shell settings put global http_proxy 127.0.0.1:8889

或者动态地将我的个人电脑作为主机

adb shell settings put global http_proxy $(ipconfig getifaddr en0):8889

要禁用该代理,请使用以下方法:

adb shell settings put global http_proxy :0

对我没有用。我可以通过模拟器浏览器访问链接,但无法通过应用程序访问。 - Rohit Singh
1
@RohitSingh 你可以尝试使用终端:adb shell settings put global "http_proxy 192.168.0.111:8888"。你可以通过 $(ipconfig getifaddr en0) 获取当前机器的IP地址。 - Maher Abuthraa

14

这不会对浏览器有帮助,但你也可以在代码中定义代理,并与HTTP客户端一起使用:

// proxy
private static final String PROXY = "123.123.123.123";
// proxy host
private static final HttpHost PROXY_HOST = new HttpHost(PROXY, 8080);
HttpParams httpParameters = new BasicHttpParams();
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
httpClient.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, PROXY_HOST);

1
在字符串PROXY中,您不应该输入“127.0.0.1”。 - Michaël
kuester2000,请看一下我在这里的问题:http://stackoverflow.com/questions/31723494/access-internet-via-another-country-using-android - Zar E Ahmer

7

对于一些 leanback (电视) 模拟器,您可以使用以下命令:

adb shell settings put global http_proxy 10.0.2.2:8888

  • 8888 - 是本地机器(主机)上代理的端口,因此在本地机器上,http代理将是127.0.0.1:8888

要删除代理,请按顺序在cmd行中运行以下命令:

adb shell settings delete global http_proxy

adb shell settings put global global_http_proxy_host ""

adb shell settings put global global_http_proxy_port ""


这对我来说是最好的答案。 - BollMose

5

2022年,您可以使用以下adb命令:

adb shell settings put global http_proxy "your_PC_IP:PORT_YOU_LISTEN"

您可以使用以下命令禁用代理:

adb shell settings put global http_proxy :0

4

3
最简单的方法是从模拟器中删除默认APN(在我的情况下是T-Mobile),然后创建新的APN并设置代理。

注意:我已经尝试了所有命令行选项,也尝试了为模拟器默认APN设置代理,但都没有成功。


我为此苦苦挣扎了一个多月,但最终终于让它工作了... 感谢@usergo,他的答案给了我这个线索。 - Mahesh

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