Android SDK更新 Connection to http://dl-ssl.google.com refused 解决方法

问题描述

使用SDK Manager更新时出现问题
Failed to fetch URL https://dl-ssl.google.com/android/repository/repository-6.xml, reason: Connection to https://dl-ssl.google.com refused
Failed to fetch URL http://dl-ssl.google.com/android/repository/addons_list-1.xml, reason: Connection to http://dl-ssl.google.com refused
Failed to fetch URL https://dl-ssl.google.com/android/repository/addons_list-1.xml, reason: hostname in certificate didn't match: <dl-ssl.google.com> != <www.google.com>
更新ADT时无法解析https://dl-ssl.google.com/android/eclipse


解决办法

由于某些众所周知又无法理解的原因,我们大陆使用Google的服务会出现种种问题,譬如Android开发也会出现阻碍。不过首先要说明的是一般情况下使用SDK Manager更新或者更新Eclipse的ADT插件是没有问题的,我以前也能正常更新,但是昨天不知道节点抽什么风,压根无法连接服务器,出现了上边的种种问题,下面说一下如果网络抽风的话应该如何解决问题。

第一种方法一劳永逸,直接配置VPN,但是现在想找个速度快又稳定还免费的VPN实在不易,尤其是更新SDK,以几kb/s的速度一个文件需要400多分钟,所以也就放弃了VPN。

另一种方法是使用http协议而不是https协议,因为https协议进行了加密处理,大陆因为无法审查,直接封死,而http协议则进行过滤处理,如果不访问乱七八糟的东西,更新个SDK还是没问题的。
在SDK Manager下Tools->Options打开了SDK Manager的Settings,选中“Force https://… sources to be fetched using http://…”,强制使用http协议。
而在更新ADT插件的时候则使用网址http://dl-ssl.google.com/android/eclipse,而不是https://dl-ssl.google.com/android/eclipse,这个在官方开发文档里也有介绍。
但是昨天的情况就是使用http协议也无法访问。

再说一个比较麻烦的方法,就是直接打开
https://dl-ssl.google.com/android/repository/addons_list.xml
https://dl-ssl.google.com/android/repository/repository.xml
https://dl-ssl.google.com/android/repository/addon.xml
这几个文件,找到你要下载的文件名,直接用迅雷下载,ADT可以直接在官网下载ADT包进行安装。具体方法自己搜索。

最好的方法还是改hosts文件的方法,更新速度较快。Windows在C:\WINDOWS\system32\drivers\etc目录下,Linux用户打开/etc/hosts文件。
打开文件后添加以下内容。

#Google主页
203.208.46.146 www.google.com
#这行是为了方便打开Android开发官网 现在好像不翻墙也可以打开
74.125.113.121 developer.android.com
#更新的内容从以下地址下载
203.208.46.146 dl.google.com
203.208.46.146 dl-ssl.google.com

### SDK DNS 配置与使用教程 在 Android 开发中,DNS 的配置和优化对于提升应用性能至关重要。以下是关于如何配置和使用 SDK 中的 DNS 功能以及常见错误解决方法的内容。 #### 1. **SDK DNS 配置** 为了更好地管理 DNS 请求并提高网络请求效率,可以采用自定义 DNS 解析器来替代默认的系统解析器。以下是一个基于 `happy-dns-android` 的简单配置示例: ```java import com.qiniu.dns.DnsManager; import com.qiniu.dns.IDnsServer; import com.qiniu.dns.IResolver; import com.qiniu.dns.Resolver.AndroidDnsServer; public class DnsConfig { public static void configureDns() { IDnsServer dnsServer = null; if (DnsManager.needHttpDns()) { // 判断是否需要启用 HttpDNS IResolver[] resolvers = new IResolver[2]; // 配置支持 DoH(DNS over HTTPS)协议的 URL resolvers[0] = new DnhResolver("https://dns.alidns.com/dns-query"); resolvers[1] = AndroidDnsServer.defaultResolver(null); dnsServer = new DnsManager(null, resolvers); } else { IResolver[] resolvers = new IResolver[2]; resolvers[0] = AndroidDnsServer.defaultResolver(null); // 默认系统解析器 resolvers[1] = new DnsUdpResolver("8.8.8.8"); // Google Public DNS dnsServer = new DnsManager(null, resolvers); } } } ``` 此代码片段展示了如何通过判断条件动态切换不同的 DNS 解析策略[^2]。 --- #### 2. **SDK DNS 常见错误及其解决** ##### (1)证书匹配问题 当更新 SDK 或下载资源时可能出现如下错误: > Download interrupted: hostname in certificate didn't match: `<dl-ssl.google.com>` != `<www.google.com>` 此类问题是由于 SSL/TLS 证书验证失败引起的。可以通过修改 HostnameVerifier 来绕过主机名校验,但这并不推荐用于生产环境。如果确实需要临时修复,可参考以下代码: ```java import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.HostnameVerifier; HttpsURLConnection.setDefaultHostnameVerifier(new HostnameVerifier() { @Override public boolean verify(String hostname, SSLSession session) { return true; // 跳过主机名校验 } }); ``` 更安全的做法是确认目标服务器域名与其证书中的 CN 字段一致,并重新安装最新版本的 SDK 工具链[^3]。 --- ##### (2)连接拒绝问题 另一个常见的错误提示为: > Connection to `https://dl-ssl.google.com` refused. 这通常是因为防火墙阻止了访问或者代理设置不正确。建议检查设备的网络状态,确保能够正常访问外部服务端口。另外也可以尝试更换镜像站点作为备用方案。 --- #### 3. **HTTPDNS 实现原理简介** HTTPDNS 是一种利用 HTTP/HTTPS 协议代替传统 UDP 查询机制完成域名解析的技术。它具有更高的灵活性和服务质量保障能力,尤其适合移动互联网场景下的复杂网络环境。目前主流云服务商如阿里云、腾讯云均提供商用级产品;而对于预算有限的小型团队,则可以选择开源工具自行搭建私有化部署实例[^2]。 例如,在 Happy-DNS 官方文档中有详细介绍其架构设计思路及 API 接口调用流程,请参阅链接:<https://github.com/qiniu/happy-dns-android>. ---
评论 51
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值