解决Android SDK / Android Studio(IntelliJ IDEA)更新不了(被墙)的问题

本文介绍了如何在Android SDK和Android Studio更新遇到网络障碍时,通过手动下载资源和配置来解决问题。包括解析XML文件获取下载链接,创建本地镜像服务器,修改Android Studio的idea.properties文件以及设置Android SDK路径,确保更新和安装的顺利进行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨天更新android sdk时,发现developer.android.com被墙了,手上也没有代理,再者android sdk manager更新有个不太好的地方是,只有一台机更新还好,但如果有多台机要更新,每台机都要重新下载一遍,那效率.....

1)先说Android SDK单独更新的问题


观察了一下日志发现 

Fetching http://dl-ssl.google.com/android/repository/addons_list-2.xml
Fetched Add-ons List successfully

原来它先下载一个源的list,addons_list-2.xml的内容如下,很容易就看出这个list又指示了 各个版本,platform-tools,build-tools......的源list

<sdk:sdk-addons-list xmlns:sdk="http://schemas.android.com/sdk/android/addons-list/2">
    <sdk:addon-site>
        <sdk:url>
            addon.xml
        </sdk:url>
        <sdk:name>
            Google Inc.
        </sdk:name>
    </sdk:addon-site>
    <sdk:addon-site>
        <sdk:url>
            addon-6.xml
        </sdk:url>
        <sdk:name>
            Google Inc.
        </sdk:name>
    </sdk:addon-site>
    <sdk:addon-site>
        <sdk:url>
            https://dl-ssl.google.com/glass/gdk/addon.xml
        </sdk:url>
        <sdk:name>
            Glass Development Kit, Google Inc.
        </sdk:name>
    </sdk:addon-site>
    <sdk:addon-site>
        <sdk:url>
            extras/intel/addon.xml
        </sdk:url>
        <sdk:name>
            Intel HAXM
        </sdk:name>
    </sdk:addon-site>
    <sdk:sys-img-site>
        <sdk:url>
            sys-img/android/sys-img.xml
        </sdk:url>
        <sdk:name>
            Android System Images
        </sdk:name>
    </sdk:sys-img-site>
    <sdk:sys-img-site>
        <sdk:url>
            sys-img/android-wear/sys-img.xml
        </sdk:url>
        <sdk:name>
            Android Wear System Images
        </sdk:name>
    </sdk:sys-img-site>
    <sdk:sys-img-site>
        <sdk:url>
            sys-img/android-tv/sys-img.xml
        </sdk:url>
        <sdk:name>
            Android TV System Images
        </sdk:name>
    </sdk:sys-img-site>
    <sdk:sys-img-site>
        <sdk:url>
            sys-img/google_apis/sys-img.xml
        </sdk:url>
        <sdk:name>
            Google API add-on System Images
        </sdk:name>
    </sdk:sys-img-site>
    <sdk:addon-site>
        <sdk:url>
            sys-img/x86/addon-x86.xml
        </sdk:url>
        <sdk:name>
            Google Inc. (x86 System Images)
        </sdk:name>
    </sdk:addon-site>
</sdk:sdk-addons-list>

依次把这些list下载回来,放在根目录,developer.android.com对我们虽然是被墙了,但还是可以能过迅雷下载回来,


===================================================

现在开始DIY,思路是 dl-ssl.google.com,developer.android.com被墙了,那自己写个简单的镜像server,完整的python代码如下

#!/usr/bin/env python
#coding=utf-8

# 在天朝内更新不了android sdk,只能自建镜像server

import os
import BaseHTTPServer
import SimpleHTTPServer

class SimpleHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def __init__(self, request, client_address, server):
        SimpleHTTPServer.SimpleHTTPRequestHandler.__init__(self, request, client_address, server)
    def do_GET(self):
        print "old_path: ",self.path # 把所有URI路径都redirect到根目录,因为把所有下载回来的东西都放在根目录了
        self.path = os.path.basename(self.path)
        SimpleHTTPServer.SimpleHTTPRequestHandler.do_GET(self)

def run(server_class=BaseHTTPServer.HTTPServer,
        handler_class=SimpleHandler):
    server_address = ('', 80)
    httpd = server_class(server_address, handler_class)
    httpd.serve_forever()

if __name__ == '__main__':
    run()
需要用root权限运行这个脚本,再在host加下这两条

127.0.0.1 developer.android.com
127.0.0.1 dl-ssl.google.com
===================================================
现在再次运行android sdk manager,设置强制使用http,就可以看到有哪些可选的更新项目了







在下载回来的这些xml找到你要下载的URL,再用迅雷下载回来 ,放在根目录


repository-10.xml这个list包含的是这个版本的 SDK Platform,以我下载的4.4.2为例

    <span style="color:#ff0000;"><strong><sdk:platform></strong></span>
        <!-- Generated at Mon Sep 22 15:22:30 2014 from git_klp-sdk-release @ 1456859 -->
        <sdk:revision>4</sdk:revision>
        <sdk:description>Android SDK Platform 4.4.2</sdk:description>
        <sdk:version>4.4.2</sdk:version>
        <sdk:api-level>19</sdk:api-level>
        <sdk:min-tools-rev>
            <sdk:major>22</sdk:major>
        </sdk:min-tools-rev>
        <sdk:layoutlib>
            <sdk:api>12</sdk:api>
            <sdk:revision>1</sdk:revision>
        </sdk:layoutlib>
        <sdk:archives>
            <sdk:archive>
                <sdk:size>63871092</sdk:size>
                <sdk:checksum type="sha1">2ff20d89e68f2f5390981342e009db5a2d456aaa</sdk:checksum>
                <strong><span style="color:#ff0000;"><sdk:url>android-19_r04.zip</sdk:url></span></strong>
            </sdk:archive>
        </sdk:archives>
        <sdk:uses-license ref="android-sdk-license"/>
    </sdk:platform>
那么补上http://dl-ssl.google.com/android/repository/,它的正确下载URL为http://dl-ssl.google.com/android/repository/android-19_r04.zip,打开迅雷,然后美好的事情就发生了

注意,有些像http://dl-ssl.google.com/android/repository/sys-img/android/sysimg_x86-18_r01.zip是补上http://dl-ssl.google.com/android/repository/sys-img/android/,一般在那个文件上看一下别的URL你就知道要补上什么了



下载好所有内容的根目录布局如下



我已经下载好了我所需要的包,点击安装...



2)再说Android Studio(IntelliJ IDEA)更新的问题


android studio每次启动都要在fetching Android sdk compoment information

1)进入刚安装的Android Studio目录下的bin目录。找到idea.properties文件,用文本编辑器打开。
2)在idea.properties文件末尾添加一行: disable.android.first.run=true ,然后保存文件。
3)关闭Android Studio后重新启动,便可进入界面。


再次启动,进入界面后,在 Configure -> Settings 把Update给禁止了, 



Configure -> Project Defaults -> Project Structure,Android SDK location手工填入上面单独用Android SDK Manager更新的目录


再回到主界面时,已经多了一个SDK Manager了



至此,所有的更新都完成了。


最后,别忘了把hosts改回来。

==================================================================

这种方法的缺点是:
手工扒开xml文件找下载URL
优点是:
多台机器更新很给力


当然如果你是在大公司或是公司网络能....如这个方法不适用你了

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值