注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

还东国的博客

行之苟有恒,久久自芬芳

 
 
 

日志

 
 

深入理解Android之一源码的分析1——源码的下载  

2014-08-22 11:22:37|  分类: Android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

深入理解Android之一源码的分析1——源码的下载

本着学要学到精处,看到根上的缘由,想着去网上把Android的源码下载过来,结果却是吃尽了苦头,不过好歹还是下来了,下载的方法总结下,供大家参考。

首先第一步:sudo apt-get install git-core curl

这个就报错误,报找不到软件包,这个的解决方法是按照书的步骤来的,即在软件源中的UBUNTU软件TAB页上,“下载自”选择了一个好的选项(选择其它服务器,中国,让操作系统自己找了一个,是"mirror.sohu.com/ubuntu")。然后再执行一次命令就下载下来了。网上有的说需要修改source.listsudo gedit /etc/apt/sources.list),其实和这个是一样的。

第二步,创建文件下载的路径:mkdir -p develop/download,然后进入这个路径cd ~/develop/download

第三步,下载repo,书上说的是用curl http://Android.git.kernel.org/repo > ./repo,即将repo 下载到.repo文件夹中去。结果这个不行,报没有可用的源,这个地址不可以使用。换了:

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo >./repo也不行,现在象可以下载了,但是一直下载的速度是0.

这个真是折腾老长时间,修改了后来换了一个非官方的网址:

curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" >./repo 

chmod a+x ~/bin/repo

如果不使用上面的方法在HOST里增加:

gedit /etc/hosts 

添加如下内容: 

74.125.237.1   dl-ssl.google.com

这个未经测试,只是说这么做可以。

第四步,初始化repo,  ./repo init -u git//Android.git.kernel.org/platform/manifest.git -b froyo

现象和第三步一样,出现如下错误:

error: The requested URL returned error: 403 while accessing http://android.git.kernel.org/platform/manifest.git/info/refs fatal: HTTP request failed  fatal: cannot obtain manifest http://android.git.kernel.org/platform/manifest.git

地址是不对的,然后换成下面的

repo init -u https://android.googlesource.com/platform/manifest

如果上面这个不行使用这个:

将初始化地址改为:  repo init -u git://github.com/android/platform_manifest.git git://github.com/android/platform_manifest.git

下面这个是非官方的网址,是可以用的:

repo  init  -u  git://codeaurora.org/platform/manifest.git -b gingerbread

但是不知道以后还可不可以用,可以用多长时间。

第五步,./repo sync, 这步是最最难熬的,一开始出现了个错误:

fatal: '../platform/abi/cpp.git' does not appear to be a git repository”

解决方法:

1、在存放android系统源代码的目录(也就是执行repo sync命令的目录)下,有个.repo的隐藏目录,用ls -a可以查看的到,进入该目录:cd .repo 

2、打开.repo目录下的manifest.xml文件(命令vim manifest.xml)并找到fetch属性,在我的文件中显示fetch="..",将fetch修改为fetch="git://Android.git.linaro.org/",保存并退出; 3、继续repo sync就可以下载了。

然后基本就没遇到其它的问题,当然网上的资料说得还有很多的问题,有一种情况需要说明,可能在这个过程中会不断的有网络的传输错误,那么你就得手动的./repo sync,如果你不想这么做就可以写一个脚本:

#!/bin/bash   

echo "======start repo sync======"   

repo sync   

while [ $? = 1 ]; do   

echo "======sync failed, re-sync again======"   

sleep 3   

repo sync   

done

 

这里最后还要提到一个问题,如果出现下面的错误:

error: Failed connect to android.googlesource.com:443;Connection refused while accessinghttps://android.googlesource.com/a/platform/frameworks/base/info/refs 

 

fatal: HTTP request failed 

 

error: Cannot fetch platform/tools/motodev 

 

error: Cannot fetch platform/frameworks/base 

 

error: Cannot fetch platform/prebuilts/sdk  

 

error: Exited sync due to fetch errors 

 

等错误信息。 

 

解决方法:编辑/etc/hosts文件 

 

 $ sudo gedit /etc/hosts 

 

增加下面内容,保存 

 

74.125.31.82 www.googlesource.com 

 

74.125.31.82 android.googlesource.com 

 

203.208.46.172 cache.pack.google.com 

 

59.24.3.173 cache.pack.google.com

但是好像这么解决的作用并不是很大。

说明一下,./repo sync过程很长的,书上说两个G,那个坑爹的说法,后来在网上查找说是足有16G,下了大约三天三夜吧。挺熬人的。其它最后大家发现,上面折腾来折腾去,为什么,还不是XX人写得防火墙软件整得不好上网。无语。

下面还有内核的源码,还得装JDK,挺多,慢慢来吧。

 

 

 

  评论这张
 
阅读(965)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017