Chinaunix首页 | 论坛 | 博客
  • 博客访问: 61977
  • 博文数量: 15
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 107
  • 用 户 组: 普通用户
  • 注册时间: 2013-05-18 21:26
文章分类

全部博文(15)

文章存档

2013年(15)

我的朋友

分类: Android平台

2013-06-06 10:08:56

我的环境WIN7+ VIRTUALBOX虚拟机+ubuntu12.04

下载android源码,官方的教程在: 主要是三个步骤:
1)安装repo
2)初始化repo
3)代码同步

前两个步骤很简单略去不表,一般也不会碰到什么问题。

但是在下载代码的时候,老是出现HTTPS错误,或者代码下到了一定的程度,就一直不动了。

官方的教程里面显示,google对每个IP进行了限制,所以需要认证,认证的办法见官方教程。

代码下载到了一定的程度不动了,官方也给出了一个解决方案。

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0
$ repo sync -j1
主要是控制TCP的窗口大小和下载的进程数。一般把下载的进程数固定为CPU核的个数。

按照这个配置后,继续进行代码同步。

可以弄个脚本,如果出问题了,可以自动开始下载。脚本可以配置如下:

  1. #!/bin/bash
  2. echo"======startreposync======"
  3. reposync
  4. while[$?=1];do
  5. echo“======syncfailed,re-syncagain======”
  6. sleep3
  7. reposync
  8. done

想让代码下载完成后自动编译,可以添加以下的语句:
sources ./build/envsetup.sh

make

配置完成,执行脚本继续下载代码,噩梦来了。
在下载的过程中老是卡在一个地方 ,receiving objects 80%.
网络上查找了这个错误,发现的解决方案都是上面发的配置TCP窗口大小,控制下载进程数量。
但是这两个都已经配置了,应该不会有问题啊。
还有说虚拟机要设置为桥接,不要设置为NAT。
这个有道理,配置成NAT,网络速度比桥接要慢不少。所以将虚拟机设置为桥接模式。
继续下载,还是不行。

仔细看了看,前面还有一个错误:
curl:(56)reset by peer。

于是google baidu查找这个问题的原因,发现没什么人碰到过这样的问题。但是curl:(56)reset by peer有不少人碰到过。
解决的方案如下:
1)google网站连接不稳定,老是被墙,**会给双边链路发送reset数据。有人碰到这个问题,拿到公司下载就好了。
或者用VPN,也可以下载。
2)UFW导致的错误。
3)curl工具错误
方案分析:
1)这个你说有啥办法?公司网络限制一天200M,自己又没有VPN。
2)UFW 防火墙我是关闭的。
3) curl重装吧。
无效。

会不会是虚拟机导致的问题呢?
切换到机器上装的ubuntu上下载,还是碰到一样的问题。
发帖求助,也没人响应。

因为忙别的事情,就把电脑挂着再下载吧。
下了两天,其间几次下载,也都是会卡在这个地方。

晚上对着电脑发呆。
curl reset, 这个怎么会reset呢?
网络断开了,或者链接错误,才会reset的。

突然想起我的电脑的IP是通过DHCP分配的,DHCP协议有个租期的,到期了就会重新申请IP,
重新申请IP,curl就会断的。

登录路由器,发现我的路由器里面的DHCP租期设置为120分钟,修改为最大值2880分钟。
然后想想我的WAN口的PPPoE也是有租期的,但是这个是网络提供商控制的,用户没法修改,
只好把路由器重启了,重新拨号,这个时候租期剩余时间就是最大值,看是不是可以支持一次下载。

修改完,执行脚本继续下载。
早上起来,发现下载好了。
Bingo!!!





阅读(2604) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~