2019/8/17更新:
最近发现 Android Studio 是可以配置 socks 代理的,而当初是否支持已经无从考证。而其内置的 Gradle 却没有提供图形界面配置 socks 代理,但却提供了图形界面配置 HTTP 代理(在打开项目时弹出,如下图所示)。然而我想使用 socks 代理怎么办呢?一种方法是按照本文原来的方法进行配置,然后这个弹窗里就可以按照你配置的情况来填写了。然而还有更方便的方法——在你的 gradle.properties 配置文件里配置 jvm 参数的那行加上代理设置:
org.gradle.jvmargs=-Xmx4536m -DsocksProxyHost=127.0.0.1 -DsocksProxyPort=8080
当然,你需要把主机与端口替换成你自己的设置,如此一来就可以直接使用 socks 代理了(上文的弹窗就直接 Cancel 就行了)。
以下为原文
最近拾起了安卓开发,虽然之前开发过几个app,但也没有深入了解,在写过更多的代码之后,决定重构一下之前的项目并重新开始安卓学习之路,因此,把实验室的电脑又装上了Android Studio。
面临的第一个问题就是——没有Android SDK,而且,配置的Shadowsocks代理并不起作用,导致我总是下不了Android SDK。最终得知,我得给SDK配置一个HTTP代理才行。所以问题转化成,如何将Shadowsocks的socks5代理转成HTTP代理。对此我选择了Privoxy作为一个本地运行的HTTP代理服务器,让它向Shadowsocks发送网络请求,再将SDK的代理配置为Privoxy即可。
本机环境
Windows 10 x64 + Shadowsocks Windows客户端(C#)
为什么选择Privoxy
其实有一个很强大的代理软件,甚至可以代理那些不支持代理的程序,就是Proxifier。之所以不用它,一是它收费,二是感觉用它阵仗有点大,没必要。既然我只是需要一个HTTP代理,那么强大的开源的Privoxy已经足够。
Privoxy的配置
- 下载安装Privoxy。
- 打开Privoxy安装目录下的主配置文件
config.txt
。这里我们需要了解并配置的只有两个字段:
- 代理的IP地址与监听端口
listen-address
,因为是在本机运行代理,IP必然是127.0.0.1
,这个字段我们保持默认值即可,无须改动,默认值为127.0.0.1:8118
。文件内搜索字段名可以查看。 - 转发请求的代理IP地址与监听端口
forward-socks5t
,也即本机上运行的Shadowsocks的IP与监听端口,由于Shadowsocks使用socks5协议因此我们选择配置该字段。该字段没有默认配置,我们需要在文件中添加一行,在文件内搜索字段名可以看到注释中给出的示例。对于Shadowsocks,一般监听端口为1080,也就是我们需要在文件中添加一行forward-socks5t / 127.0.0.1:1080 .
- 运行安装并配置完成的Privoxy,至此我们的机器上已经运行着一个可以进行HTTP代理的代理服务。
Android Studio的配置
- 打开Android Studio,进入
Settings -> System settings -> Android SDK
,会发现根本获取不到Android SDK的列表,接下来配置代理解决这个问题。 - 在Android Studio中进入
Settings -> System settings -> HTTP Proxy
,依次点击选择Manual proxy configuration
,HTTP
,然后在Host name
中填写127.0.0.1
,在Port number
中填写8118
。至于下面的No proxy for
这个字段,个人只填写了localhost,127.*
,可以适当添加不需要代理的IP和域名。点击OK保存更改。 - 再次进入
Settings -> System settings -> Android SDK
,这个世界正常运行了起来。