美文网首页程序员Android技术知识
Mac下AS工程报错:Connect refused或Read

Mac下AS工程报错:Connect refused或Read

作者: 五号先生丶 | 来源:发表于2018-12-13 15:52 被阅读0次

环境

      系统:MacOS 10.14.1      
      工具:Android Studio
      Java:1.8.0_144               
      Gradle:4.6

问题现象简述

这两天向Android Studio(后面简称AS)中导入另一个工程时,报出一个很尴尬的问题。
不论用什么方式,错误提示总是在Connect refused和Read Timed Out之间来回切换。
然而谷歌访问正常,其他常用资源也都可以正常访问。
以上为问题的现象。

查看BuildTool获取详细报错Log如下图:


图1-错误日志

从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

如图:


图2-AS HTTP Proxy配置
图3-SSX配置

图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:

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

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


图6-编译成功

至此问题成功解决!

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


em

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

祝各位老哥好运,码神保佑,永无bug!

相关文章

网友评论

    本文标题:Mac下AS工程报错:Connect refused或Read

    本文链接:https://www.haomeiwen.com/subject/ibkbhqtx.html