环境
系统:MacOS 10.14.1
工具:Android Studio
Java:1.8.0_144
Gradle:4.6
问题现象简述
这两天向Android Studio(后面简称AS)中导入另一个工程时,报出一个很尴尬的问题。
不论用什么方式,错误提示总是在Connect refused和Read Timed Out之间来回切换。
然而谷歌访问正常,其他常用资源也都可以正常访问。
以上为问题的现象。
查看BuildTool获取详细报错Log如下图:

从Log上看,大概意思是:由于网络不通畅,导致在拉取Gradle中依赖的jar包时Read Timed Out,或者某些情况下很干脆的提示Connect refused。
作为以码代码为生的我们一定都知道,在开发的过程中,很大一部分的jar包需要我们从mavenCenter等地方拉取资源。
所以当遇到这样的问题,稍加分析会发现问题的点无外乎网络访问异常和代理工具连接异常。解决的思路如下:
· 检查AS代理配置;
· 检查SSX服务端配置;
检查AS代理配置和SSX服务端配置
打开Android Studio的HTTP Proxy:
Android Studio → Preferences → Appearance & Behavior → System Settings → HTTP Proxy
如图:


图3中Port number为1080,而图4中的SSX服务端的local_port也为1080,AS和SSX使用的是同一端口。
等等...总觉得哪里不对...
此时灵光一现,立刻想到SSX和AS之间需要桥接,AS才能使用SSX的代理服务。至此本案告破!我们只需要在SSX和AS之间建立起桥接即可。
提供两种解决方案:
方案一、在本地安装proxy,通过命令行来配置第三方的代理入口;
方案二、安装SSX-NG(该版本的SSX集成proxy)。
方案一:
度娘一大堆,老哥们自行百度。放上一个参考链接:
http://www.cnblogs.com/kenshinobiy/p/4325601.html
方案二:
下载SSX-NG:
https://github.com/shadowsocks/ShadowsocksX-NG
下载完成之后和SSX一样,添加自己服务端的IP、Port、Passwd:

点击SSX-NG的图标,选择偏好设置,选择HTTP(因为我用的HTTP,如果在AS中用使用的是Socks代理,请点击“高级”,配置Socks代理监听端口):

图中5中SSH-NG的HTTP代理监听端口为1087
此时在的HTTP Proxy中将Port number修改为1087,点击ok保存。
打开SSH-NG代理。
重启AS,command + F9重新编译工程。

至此问题成功解决!
解决这个问题的过程可谓是波折万分,尝试了很多方法,比如在build.gradle中把依赖的仓库地址设置为国内镜像、修改HTTP Proxy代理方式等,无数种尝试均以失败告终,心态一度到达临界点,心路历程大概就是这样- -

然而找到问题所在的点之后,发现问题本身非常简单。
所以以后遇到暂时无法解决的问题时,切忌焦躁,静下心来细心分析冷静思考,相信世界上没有什么问题是给自己加个鸡腿解决不了的,如果有,那就两个!
祝各位老哥好运,码神保佑,永无bug!
网友评论