<ignore_js_op> 
    同学遇到了更新Android SDK的问题,而且Goagent现在也无法用来更新。
就想到了用替代Host的方法,添加可用的谷歌地址来实现更新。
    更新Host文件之后的功能:访问谷歌,更新Android SDK

原理分析:

1. github上的一个hosts项目(https://github.com/racaljk/hosts),获取到最新的Host的文件

2. 获取hosts的文本网页(https://raw.githubusercontent.com/racaljk/hosts/master/hosts)

3. 把提取这个网页的内容,并且替换在C:\Windows\System32\drivers\etc\hosts的文件中

C#中得到网页内容的函数:

private string GetGeneralContent(string strUrl)
{
string strMsg = string.Empty;
try
{
WebRequest request = WebRequest.Create(strUrl);
WebResponse response = request.GetResponse();
StreamReader reader = new StreamReader(response.GetResponseStream(), Encoding.GetEncoding("gb2312")); strMsg = reader.ReadToEnd(); reader.Close();
reader.Dispose();
response.Close();
}
catch
{ }
return strMsg;
}

  按钮点击事件:

private void button1_Click(object sender, EventArgs e)
{
string add = GetGeneralContent("[url=https://raw.githubusercontent.com/racaljk/hosts/master/hosts"]https://raw.githubusercontent.com/racaljk/hosts/master/hosts"[/url]);
if (add != "")
{
//string str2 = File.ReadAllText(@"C:\Windows\System32\drivers\etc\hosts", Encoding.ASCII);
//str2 = str2 + '\n' + add;
string str2 = add;
File.WriteAllText(@"C:\Windows\System32\drivers\etc\hosts", str2, Encoding.ASCII);
MessageBox.Show( "修改成功" ,"xiaoz 提示:");
}
else {
MessageBox.Show("修改失败", "xiaoz 提示:");
}
}

  

软件运行图(需要管理员权限):

Android SDK更新图:

软件需要管理员权限

软件需要管理员权限

软件需要管理员权限

(.net framework 4.0 环境)

软件下载地址:http://pan.baidu.com/s/1i32KqJb 密码:szo9
源码下载地址:http://pan.baidu.com/s/1eQ2kw3g 密码:7er9

解决Android SDK Manager更新(一个更新Host的程序的原理实现和源码)的更多相关文章

  1. 解决Android SDK Manager更新、下载速度慢

    hosts文件里面原来的内容不做修改,只是添加内容 方法/步骤 先看看如何加快更新速度,再说如何更新. 首先更新host文件,如图,打开目录 C:\Windows\System32\drivers\e ...

  2. 解决Android SDK Manager 更新、下载慢以及待安装包列表不显示

    参考地址:http://www.cnblogs.com/tc310/archive/2012/12/21/2828450.html 问题描述: Android SDK Manager 无法下载更新,或 ...

  3. 完美解决Android SDK Manager无法更新

    由于国内的各种屏蔽现在Android SDK Manager出现无法更新或更新太慢,如下方法可完美解决此问题 1. 打开..\Android\sdk\SDK Manager.exe  2.

  4. 解决Android SDK Manager 更新下载慢以及待安装包列表不显示

    问题描述: Android SDK Manager 无法下载更新,或者更新速度超慢,或者待安装包列表不显示 解决方法: 第一步:修改hosts文件 修改后的hosts 文件内容为: 127.0.0.1 ...

  5. android SDK manager 无法获取更新版本的解决办法

    http://mirrors.neusoft.edu.cn/eclipse/releases/luna/打开这个网址就可以看到adt的详细信息:  http://developer.android.c ...

  6. (转)解决Android SDK Manager无法更新或下载太慢问题

    原帖地址:http://blog.csdn.net/exlsunshine/article/details/22208857 天朝的网络...哎~真是无语...还好最近装了谷歌的chrome浏览器+红 ...

  7. [转] Android SDK manager 无法获取更新版本列表

      打开这个网址(LINK)就可以看到adt的详细信息. 或者直接在你的eclipse的Help > Install New Software里面add,地址直接输入 https://dl-ss ...

  8. Android SDK Manager国内无法更新的解决方案

    万里长城永不倒,千里黄河水滔滔.算了跑题了. 但还是要吐槽这下这个万里长城,感谢 方滨兴 叫兽 给我们净化了互联网,靠!什么&!@#¥ 此处略去一万字. 现在由于GWF,google基本和咱们 ...

  9. (转)Android SDK Manager国内无法更新的解决方案

    转载地址:http://www.linuxidc.com/Linux/2015-01/111958.htm 现在由于GWF,google基本和咱们说咱见了,就给现在在做Android  或者想学习An ...

随机推荐

  1. 命令行修改weblogic用户名和密码

    语法为:java weblogic.security.utils.AdminAccount <NewAdminUserName> <NewAdminPassword>  dir ...

  2. C#自动实现的属性

    using System; using System.Collections.Generic; using System.Text; namespace 自动属性 { class Program { ...

  3. web.xml配置文件 taglib

      web.xml的内容如下: <?xml version="1.0" encoding="UTF-8"?><web-app version= ...

  4. Winedt10 添加自定义宏

    Winedt10 添加自定义功能,并在toolbar上添加快捷命令 功能描述: 用宏实现latex+bib参考文献的一键编译. Remark: The toolbar is the most visi ...

  5. CentOS7安装小小输入法

    添加epel源 $ sudo yum install epel-release 安装centos7缺失依赖包 libwayland-client $ sudo rpm -Uvh ftp://ftp.p ...

  6. StringBuffer与StringBuilder之间的区别

    public class Test { public static void main(String[] args) { StringBuffer strBuffer = new StringBuff ...

  7. Adapter 适配器模式

    将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 目标接口(Target):客户所期待的接口.目标可以是具体的或抽象的类,也可 ...

  8. UML类图细节

    类图表述的是类和类之间的关系,是前期用来推演代码设计,后期用来优化代码的结构,寻找设计不合理之处.网上解释类图和类图的画法,往往表述的十分晦涩,或者例子呆板,很难具体的操作. 类图一般在详细设计过程中 ...

  9. C# 自定义排序

    /// <summary> /// 实体 /// </summary> public class Product { public int ID { get; set; } p ...

  10. 冒泡排序算法(C#实现)

    简单的冒泡排序算法,代码如下: ] = temp; hasExchangeAction =true; //发生过互换 } } if (!hasExchangeAction) //如果没有发生过互换,则 ...