最新消息:iOS编程开发交流群(6906921) ,Mac.Cocoa开发交流群(7758675) 欢迎iOS/macOS开发编程爱好及学习者加入!

建立自己的Android SDK镜像站

Android 天狐 10143浏览 0评论

做Android开发难免会遇到在线更新SDK很慢的问题,国内也有很多Android SDK镜像站。

那么可不可以自己在公司内网,或者局域网,或者个人服务器上搭建个Android SDK在线更新镜像服务器呢?

答案是肯定的。

总体思路就是,使用脚本同步google源镜像所有目录之后,把当前目录建立为网站,设置为IDE的代理即可。

建立镜像站点

安装Apache等Web容器,以Apache为例配置域名与别名(没有域名可以使用IP):

<VirtualHost *:80>
DocumentRoot /data/mirrors
ServerName mirrors.skyfox.org
ServerAlias dl.google.com
ServerAlias dl-ssl.google.com
</VirtualHost>

/data/mirrors作为mirrors.skyfox.org的根路径,你可以使用任何你想要的路径,这里只是一个范例。

ServerName 域名(根路径)+/android/repository/  就是安卓的镜像文件了

谷歌的镜像站如下格式。

http://dl.google.com/android/repository/

https://dl-ssl.google.com/android/repository/

我们要做的是替换android/repository/之前的域名为我们自己的域名,从而实现代理。所以目录创建要严格按照谷歌。

从谷歌同步源

翻墙后使用同步脚本进行同步,

进入到/data/mirrors文件夹,终端执行python android.py,将会自动下载创建文件。(注意目录的读写权限)

同步脚本中的base_url为谷歌的源地址,也可以换成国内的任意源地址。

out_dir为建立好的源站点目录(/data/mirrors)的子目录(/android/repository/)。

同步成功后即可进行配置Android Studio

同步脚本 android.py

#!/usr/bin/python
from string import rfind
from time import mktime, strptime
from os import makedirs, path, stat, utime
from urllib import urlretrieve, urlopen
from xml.etree import ElementTree

base_url = 'https://dl.google.com/android/repository/'
out_dir = '/data/mirrors/android/repository'

def download(filename, last_modified):
   file = out_dir + filename
   print 'Downloading ' + filename
   urlretrieve(base_url + filename, file)
   utime(file, (last_modified, last_modified))

   process(filename)

def process(filename, size=-1):
   file = out_dir + filename
   if path.isfile(file) and stat(file).st_size == size:
      print 'Skipping: ' + filename
      return

   print 'Processing: ' + filename
   handle = urlopen(base_url + filename)
   headers = handle.info()
   content_length = int(headers.getheader('Content-Length'))
   last_modified = mktime(strptime(headers.getheader('Last-Modified'), '%a, %d %b %Y %H:%M:%S %Z'))

   if rfind(filename, '/') > 0:
      dir = out_dir + filename[:rfind(filename, '/')]
   else:
      dir = out_dir

   if not path.isdir(dir):
      print 'Creating ' + dir
      makedirs(dir)

   if not path.isfile(file):
      download(filename, last_modified)
   else:
      file_stat = stat(file)
      if file_stat.st_mtime != last_modified or file_stat.st_size != content_length:
         download(filename, last_modified)
      else:
         print 'Skipping: ' + filename

def fetch(file):
   if base_url in file:
      dir = file[len(base_url) - 1:rfind(file, '/') + 1]
      file = file[rfind(file, '/') + 1:]
   elif 'http' in file:
      return
   else:
      dir = '/'
   process(dir + file)
   base_dir = path.dirname(dir + file)
   if base_dir != '/':
      base_dir += '/'
   tree = ElementTree.parse(out_dir + dir + file)
   for element in tree.getiterator():
      if element.tag.split('}')[1] == 'url':
         if element.text[-4:] != '.xml':
            if not 'http' in element.text:
               process(base_dir + element.text)
         else:
            fetch(element.text)
for file in ['repository-10.xml', 'addons_list-2.xml']:
fetch(file)

镜像站使用方法

启动 Android SDK Manager ,在『Android SDK Manager - Settings』窗口中,在『HTTP Proxy Server」和「HTTP Proxy Port』输入框内填入镜像服务器地址和端口,并且选中『Force https://... sources to be fetched using http://...』复选框。设置完成后单击『Close』按钮关闭『Android SDK Manager - Settings』窗口返回到主界面;

依次选择『Packages』、『Reload』。

81448474-7e68-41a7-ac09-92cf42f7ff8d

国内现存的镜像站

大连东软信息学院镜像服务器:

http://mirrors.neusoft.edu.cn 端口:80

北京化工大学镜像服务器:

IPv4: http://ubuntu.buct.edu.cn/ 端口:80

IPv4: http://ubuntu.buct.cn/ 端口:80

IPv6: http://ubuntu.buct6.edu.cn/ 端口:80

上海GDG镜像服务器:

http://sdk.gdgshanghai.com 端口:8000

中国科学院开源协会镜像站:

IPV4/IPV6: http://mirrors.opencas.cn 端口:80

IPV4/IPV6: http://mirrors.opencas.org 端口:80

IPV4/IPV6: http://mirrors.opencas.ac.cn 端口:80

腾讯Bugly 镜像:

http://android-mirror.bugly.qq.com 端口:8080
腾讯镜像使用方法: http://android-mirror.bugly.qq.com:8080/include/usage.html

扩展阅读

脚本来自,中科院开源镜像小组 https://github.com/opencas/mirrors

Make a LAN mirror for developing Android apps https://github.com/renfeng/android-repository

 

转载请注明:天狐博客 » 建立自己的Android SDK镜像站

微信 OR 支付宝 扫描二维码
为天狐 打赏
非常感谢你的支持,哥会继续努力!
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址