曲线救国,解决Mac系统下,Android sdk下载失败的问题
Mac下翻_墙的问题
话说GFW屏蔽谷歌已经有一阵子了,最近打算在Mac系统下折腾个Android应用,备好了IDE,只欠SDK,无奈下载时因为GFW的缘故,总是失败,我心痛哉!
由于本人偏爱Mac系统,于是便开始折腾Mac下的翻_墙问题,试过Break Wall,鱼摆摆,GoAgent,居然没有一个好用的!在公司办公的时候使用的都是Windows系统,需要翻_墙的时候,我都用自(he)由(xie)门这个东东,简单好使,实乃翻_墙神器也,可惜没有Mac的版本,这可咋整??????(博客园居然屏蔽\自\由\门这个关键字,⊙﹏⊙b汗)
家里2台电脑,一台Mac,一台Windows(我的游戏机),心想,要不Windows翻_墙,然后Mac接入Windows进行翻_墙不就行了。
于是,赶紧打开了Windows下的自(he)由(xie)门:
自(he)由(xie)门在本地开通了8580用作代理翻_墙端口,通过telnet 192.168.1.240 8580测试我windows的端口情况,发现不通,看了自(he)由(xie)门留了一手,监听ip是127.0.0.1,也就是只能通过127.0.0.1:8580去使用端口。
看来Mac直接访问Windows的自(he)由(xie)门代理是不行了。
开发Socket代理,解决Mac不能访问Windows自(he)由(xie)门代理的问题
心想,既然你自(he)由(xie)门只能通过127.0.0.1访问,那我何不开发个socket代理,对外开放一个端口,然后将端口的数据直接转发到8580上,这样应该就能解决Mac不能访问Windows自(he)由(xie)门代理的问题了。
嗯,思路不错,那就开搞一个吧,大晚上的时间有限,我就简单的用Nodejs开发了一个socket代理程序,话说用Nodejs开发网络应用这是超爽啊,socket代理代码如下:
var net = require('net'); var server = net.createServer(function(c) { //'connection' listener console.log(c.remoteAddress); // 暂停socket的数据处理 c.pause(); var client = net.connect({host:'127.0.0.1', port: 8580}, function() { //'connect' listener // 连上自(he)由(xie)门代理了,可以去处理socket数据了 c.resume(); console.log('connected to proxy'); }); // 将过来的数据发给自(he)由(xie)门,然后将自(he)由(xie)门回过来的数据,原封不动的转发出去 c.pipe(client); }); server.listen(8124, function() { //'listening' listener console.log('server bound'); }); process.on('uncaughtException', function(err) { console.log('Caught exception: ' + err); });
Socket代理的运行效果如下:
Mac下配置http代理,访问Windows的自(he)由(xie)门,进行翻_墙
进入Mac,打开Android Sdk Manager,系统菜单中选择,Preferences,如下如:
然后设置Http代理服务器和端口信息,如下如:
注意:上面的192.168.1.240就是我的Windows电脑的ip,8124端口是socket代理的端口哦,它负责把Mac过来的http请求直接丢给自(he)由(xie)门,这样就可以翻_墙下载了。
最终解决了Mac下Android SDK下载失败的问题
看看下载效果吧:
嗯,搞定android sdk了,关机,睡觉觉!
据说看到好文章不推荐的人,服务器容易宕机!
本文版权归翟士丹(Stan Zhai)和博客园共有,原创文章,未经允许不得转载,否则保留追究法律责任的权利。