Android SDK下载异常(hostname in certificate didn't match)

时间:2022-12-31 18:06:02

UPDATE 2015.10.23

原hosts地址已经失效,最新hosts地址为

203.208.41.144

如果以后hosts地址失效,大家可以去GitHub搜索"Google Hosts",在项目中获取最新google服务器ip地址,地址我就不贴了,获取到最新hosts地址后,可以使用本机ping一下,或者使用http://ping.chinaz.com进行测试。

下面是原文:

对于Android开发者来说,每次下载更新 Android SDK 都是一次痛苦的经历,因为 google 被墙,每次我们都要想尽办法来更新 SDK, 以前我是通过 VPN 来下载 SDK,但是也只能保证稍微稳定一点的下载速度,每次更新还是要耗费很长的时间来等待,上星期我的同事发现通过修改 hosts 文件并将下载地址域名指向 203.208.46.146 即可加快速度,而且下载速度基本上都是4,5M左右,这让我惊喜异常,说实话,其实我甚至大家都很早知道可以通过修改 host 文件来提高 SDK 下载速度,但是把域名指向哪里是一个问题,以前我曾经按照一篇帖子来试过修改 host ip 的方法,先通过http://ping.chinaz.com 来 ping http://dl-ssl.google.com 这个域名(Android SDK下载地址所用的域名),然后点击查询即可,如图所示: 
Android SDK下载异常(hostname in certificate didn't match)

可见这个域名已经完全被墙掉,国内基本上没有可以 ping 通的地方,有的博文说可以试下 海外 的 ip,于是我在监测点上只选择了 海外,查询后结果如下图所示: 
Android SDK下载异常(hostname in certificate didn't match)

基本上都可以 ping 通,而且速度还很不错,有的博文会推荐使用这些响应IP,但是我曾经试过,在 hosts 文件中将 SDK 下载域名指向这些 ip 之后依然无法下载 sdk,我们可以直接 ping 下ip,以 荷兰 的 74.124.136.93 响应IP 为例,查询结果如下图所示: 
Android SDK下载异常(hostname in certificate didn't match)

很明显,这个位于美国的 IP地址 已经被墙掉了,事实上,所以我们将 hosts 中的 sdk 下载地址域名指向这些 ip 其实并没有作用,服务器依然被墙。

那么为什么我们要将 hosts 中的sdk下载地址域名指向 203.208.46.146 这个 IP 呢?我们照例来 ping 下它就会知道: 
Android SDK下载异常(hostname in certificate didn't match)

看到 IP归属地 我相信大家都已经明白了,这应该是 google 位于北京的服务器,它的响应速度也是非常快的,我们将 sdk 下载地址域名指向这个ip,由于服务器就在北京,所以下载速度是非常可观的,可以看下我修改后的下载速度: 
Android SDK下载异常(hostname in certificate didn't match)

基本上是4,5M 每秒的速度,更新完全部sdk也只花费了我很少的时间。

这里再简单讲一下如何修改 hosts 文件, Windows 的 hosts 文件位于 C:\WINDOWS\system32\drivers\etc 这个位置,通过文件浏览器直接进入这个目录然后用编辑器修改 hosts 文件即可; 
 Mac 的hosts文件位于 /etc/hosts,我们可以通过 shell 命令行来操作它,sudo nano /etc/hosts 是直接调用出默认文本编辑器来操作的,我们也可以使用 VIM 或者其它编辑器 sudo vim /etc/hosts,使用 sudo 则是因为 hosts 
文件是系统文件,操作它需要管理员权限,最后我们将以下内容粘贴保存即可:

203.208.46.146  dl.google.com
203.208.46.146 dl-ssl.google.com

注意前面不要加#号,否则这一行将被注释掉。

修改完 hosts 文件之后我们就可以打开 eclipse,然后点击菜单中的 Window
—— Android SDK Manager
 来下载更新 SDK 了,但是当我们勾选任务开始下载的时候,问题来了: 

Download interrupted: hostname in certificate didn't match: != Download interrupted: Connection to https://dl-ssl.google.com refusedDone. Nothing was installed. 

上面的异常信息就是我们修改完 hosts 文件之后下载 sdk 报的异常,异常信息提示 dl-ssl.google.com 的 https 证书可能不正确,通过搜索得知,我们可以将 Android SDK 下载默认使用的 https 协议改为未加密的 http 协议,这样便能避免此异常的产生。

将 SDK 下载地址的 https 协议改为 http 协议的步骤如下:

  1. 在Eclipse菜单中选择 Window —— Android SDK Manager即可打开Android SDK 下载窗口;
  2. 在Android SDK下载窗口选择 Preferences... 菜单项打开设置窗口;
  3. 最后在设置窗口勾选Others中的第一项Force https://... sources to be fetched using 
    http...
    即完成操作。 
    Android SDK下载异常(hostname in certificate didn't match) 
    完成修改之后,我们关闭设置窗口就可以正常且快速的下载 Android SDK了。



参考链接: 
http://jingyan.baidu.com/article/1974b289ad9ad3f4b1f7749a.html

http://www.netfoucs.com/article/wsq2002/75368.html