Android SDK Mirror搭建和使用

缘由

前段时间XcodeGhost闹的沸沸扬扬,意外发现迅雷下载真的是可以被污染的,这个很有意思,详情见对迅雷下载进行投毒的简单尝试,也提醒了开发者不要随意从非官方渠道下载开发工具。

我们都知道Android SDK由于国内网络环境的原因,下载速度很慢,有很多国内搭建的镜像,但镜像服务器下载带宽肯定有一定限制,并且内网一般也会限制下载速度。所以在内网搭建一个Android SDK镜像服务器很有必要,一方面可以保证速度,几兆每秒肯定不成问题,另一方面大家从内网下载,也可以保证安全性。貌似有的团队用FTP存储SDK,还是太Low了,用起来肯定不如镜像方便。

搭建Android SDK镜像服务器,有两个现成的开源解决方案,苏州GDG中科院开源镜像小组,苏州GDG牛皮吹的很响,貌似还在某个会议上发表过演讲,但估计是个人作品,东西不够完善,更新缓慢。中科院开源镜像小组开源的方案非常不错,并且也对外开放了镜像服务,一直运行良好,Github上还有定时同步和Nginx的配置信息。

花了一个下午的时间,搞定了内网Android SDK镜像服务器,下载速度平均5M/s,效果杠杠的。

下载SDK

直接运行android.py脚本,由于SDK下载需要翻墙,所以你可能需要代理。命令行程序默认不走你的全局代理,我在家用sock5代理,在mac下用的是proxychains4,公司内网有Http代理服务器,想在命令行中使用,需要设置http_proxy和https_proxy环境变量,临时使用直接在终端中输入:

1
2
export http_proxy=http://yourproxyaddress:proxyport
export https_proxy=http://yourproxyaddress:proxyport

细看脚本,你会发现脚本会先去下载repository-.xml和addons_list-.xml,xml里面是一些文件的具体下载地址,包含sdk、build_tools、support包等等,然后去下载具体的文件。

服务器配置

因为最终搭建的镜像要作为代理服务器,在SDK Manager中配置,所以需要你配置ngnix的虚拟主机。在/etc/nginx/conf.d/default.conf文件中,修改server_name字段:

1
2
server_name dl.google.com
dl-ssl.google.com;

因为当SDK Manger配置你的镜像作为代理后,首先会拉取xml配置文件,比如https://dl.google.com/android/repository/repository-11.xml,最终会找到镜像服务器的android/repository/repository-11.xml文件,下载其他SDK文件也是同样,所以需要你把之前运行脚本下载的文件放到正确的目录中。

使用

image

  1. 动 Android SDK Manager ,打开主界面,依次选择『Tools』、『Options…』,弹出『Android SDK Manager - Settings』窗口;

  2. 在『Android SDK Manager - Settings』窗口中,在『HTTP Proxy Server』和『HTTP Proxy Port』输入框内填入上面镜像服务器地址(不包含http://,如图)和端口并且选中『Force https://… sources to be fetched using http://…』复选框。

  3. 设置完成后单击『Close』按钮关闭『Android SDK Manager - Settings』窗口返回到主界面,依次选择『Packages』、『Reload』。

参考