ubuntu13.04下载android4.0.1源码过程

摘要:
Curl是一种文件传输工具,它使用URL语法在命令行模式下工作。回购基于git。对于repo和git的使用,使用curl下载repo脚本以登录普通用户。参考Android官方指导文档http:,然后将~/bin目录添加到PATH。因此,此次下载的Android源代码是面向普通用户的。

最初我参考的是老罗的博客http://blog.csdn.net/luoshengyang/article/details/6559955

进行下载安装的,但弄着弄着就发现不太对劲了。这里记录下详细过程

1,我的前提是已经搭建好了Android开发环境,也即jdk已经安装好了,输入java -version来检查是否成功。搭建android开发环境可以看链接1 链接2.

2,首先要安装git工具,而repo是基于git的。同时要安装所需的若干软件,命令如下:

sudo apt-get install git-coreflex bison gperf libsdl-dev libesd0-dev libwxgtk2.6-dev build-essential zip curlvalgrind

            最后的valgrind是为了编译时用,一次安完了省事。如果是为了下载源码,只需安装curl和git- core就足够了。curl是一个利用URL语法在命令行方式下工作的文件 传输工具,它支持很多协议,包括FTP、FTPS、HTTP、HTTPS、TELENT等,我们需要安装它从网络 上获取Repo脚本文件。然后curl就用不到了。repo是基于git的,git是一个分布式版本控制软件。由于android源码是由很多个部分组成 的,如果用git的话需要多次git clone。为此google提供了repo,其实质就是若干个git命令写的脚本。这是curl  git repo三者之间的关系。关于repo和git的使用,可以参考这里:

(1),http://blog.chinaunix.net/uid-20780196-id-3171133.html
(2),http://www.cnblogs.com/pied/archive/2012/04/12/2444159.html
(3),http://blog.sina.com.cn/s/blog_8218aa3801013ady.html
(4),http://zhidao.baidu.com/question/466204880.html

3,利用curl下载repo脚本

       在普通用户下登录,不是root。这时~表示/home/xxx/的目录,在~下新建一个bin文件夹,用来放下载的repo脚本。参考android的官方指导文档http://source.android.com/source/downloading.html ,然后将~/bin目录添加到PATH。方法为sudo gedit /etc/profile, 然后添加 PATH=$PATH:~/bin    保存关闭后,再终端输入 source /etc/profile使设置生效。事实上这里也可以用绝对路径来写死,/home/xxx/bin 需要注意的是,这一切都是在普通用户下,如果以root用户登录,~表示的是/root文件夹。所以此次下载android源码一律是普通用户,不要随便 切换。因为里面的在普通用户和root用户下表示的地方不一样。如果用绝对路径写死则无此问题。

然后终端输入:

curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo

用这条命令下载repo脚本到刚建的bin文件夹。

       老罗的博客里的命令是:wget https://dl-ssl.google.com/dl/googlesource/git-repo/repo 用的是wget,应该也可以。我用的是上面的curl命令。然后chmod a+x ~/bin/repo为其增加可执行权限。

4,新建一个文件夹,即是repo的工作空间,将源码下载到此处。我新建的目录是/home/administrator/document/androidSource.  cd到这个目录下,要确保这个目录一般用户可以访问读写。

      然后就要用repo init命令来初始化repo了,如果输入:

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

则是让repo下载最新的android源码。一般我们可以通过-b参数指定下载的android版本,输入:

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

则是让repo下载4.0.1的源码,也可以用-b Jelly Bean来指定android的版本,具体可以参考:http://source.android.com/source/initializing.html  

http://source.android.com/source/build-numbers.html,尤其是第二个链接来选定版本号比较好。

         如果输入上面的repo init  .................xxx,再进入下一步骤虽然可以下载源码,但是下载中间会出现如下报错:

  1. error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/manifest/info/refs  
  2. fatal: HTTP request failed  
  3. error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/manifest/info/refs  
  4. fatal: HTTP request failed  
  5. Fetching projects:   9% (20/221)  error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/bison/info/refs  
  6. fatal: HTTP request failed  
  7. Fetching projects:  10% (23/221)  error: Failed to connect to 2404:6800:4008:c01::52: Network is unreachable while accessing https://android.googlesource.com/platform/external/apache-xml/info/refs  
  8. fatal: HTTP request failed  
  9. error: Failed to connect to 2404:6800:4008:c01::52: Network is unreachable while accessing https://android.googlesource.com/platform/external/astl/info/refs  
  10. fatal: HTTP request failed  
  11. error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/bluetooth/glib/info/refs  
  12. fatal: HTTP request failed  
  13. error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/astl/info/refs  
  14. fatal: HTTP request failed  
  15. Fetching projects:  11% (25/221)  error: The requested URL returned error: 406 while accessing https://android.googlesource.com/platform/external/apache-xml/info/refs  


         错误的核心就是 error android.googlesource.com/platform/manifest/info/refs,百度一下参考这里:http://www.rosoo.net/a/201302/16504.html    这是google防止匿名访问连接次数过多而设置的。

        解决方法是:浏览器登录https://android.googlesource.com/new-password,输入自己的gmail帐号,点击网页上的“确定”或“允许访问”会得到如下信息(我只找到了确定按键):

  1. Login for Git:  
  2. Username: git-yanzi1225627.gmail.com  
  3. Password: 1/IwTl_VomaQWIk0I4gRjdDL5SybS8MGDv15Cb0bLonMg  
  4. Staying Authenticated:  
  5. To stay authenticated by saving the password, append the following line to the ~/.netrc configuration file:  
  6. machine android.googlesource.com login git-yanzi1225627.gmail.com password 1/IwTl_VomaQWIk0I4gRjdDL5SybS8MGDv15Cb0bLonMg machine android-review.googlesource.com login git-yanzi1225627.gmail.com password 1/IwTl_VomaQWIk0I4gRjdDL5SybS8MGDv15Cb0bLonMg   
  7.   
  8. Make sure you have set the permissions on ~/.netrc so that only your user account can read the file. If your home directory is on a network filesystem, consider moving it to a local disk and making ~/.netrc a symbolic link to the local version.  


新建一个.netrc文件,gedit ~/.netrc,如果有的话就不用新建了。在linux里前面有个"."表示这个文件是隐藏文件。在里面输入machine开头的两行话保存即可。

然后将下载的地址中间加一个/a,也即最终的repo init的命令是

repo init -u https://android.googlesource.com/a/platform/manifest -b android-4.0.1_r1

5,开始同步源码前的两处修改,就这两个地方我摸了两天

      经过4步骤里的改.netrc操作,我发现下载时报的错依旧,大爷的。报错如下:

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

      参考文章http://blog.csdn.net/lengxibo/article/details/8299888#reply  原来是需要改/etc/hosts, 终端输入ping www.googlesource.com或ping android.googlesource.com,得到IP是www.googlesource.com和 android.googlesource.com的IP, 我的电脑上两个IP都是74.125.31.82.  

         然后sudo gedit /etc/hosts, 在里面输入:

  1. 74.125.31.82 www.googlesource.com  
  2.   
  3. 74.125.31.82 android.googlesource.com  
  4.   
  5. 203.208.46.172 cache.pack.google.com  
  6.   
  7. 59.24.3.173cache.pack.google.com  


保存就ok了。

6,开始同步源码喽

       按理说在repo init  ....之后使用repo sync就可以开始下载源码了,但是在下载过程中经常会出现没网速“死”的情况。当然,我修改了/etc/hosts文件之后就再也么有死过。在没网速提 示连接不上时,可以按ctrl+z按键来暂停同步,然后再输入repo sync就可以了。但尽管这样也不太方便,比如大半夜的谁会守着电脑监督下载情况,源码貌似都要一夜才下好,汗。为此,可以参考http://www.rosoo.net/a/201302/16503.html  在工作目录,我的是~/document/androidSource文件夹下新建一个download.sh脚本文件,里面的内容是:

  1. <span style="font-size:18px;color:#FF0000;">    #!/bin/bash     
  2.     echo "======start repo sync======"     
  3.     repo sync     
  4.     while [ $? == 1 ]; do     
  5.     echo "======sync failed, re-sync again======"     
  6.     sleep 3     
  7.     repo sync     
  8.     done   </span>  

chomd a+x download.sh让其可以运行,然后终端输入./download.sh就可以开始下载了,用这一步代替官方文档里的repo sync。
当连接不上终端时休息3毫秒然后再自动repo sync,这样就很完美了。

7,下载的源码在哪里

          在工作目录~/document/androidSource文件夹下,输入命令 ls -a,可以看到有个.repo文件夹。很显示这是个隐藏文件夹,进去这个目录后查看结果如下:

  1. <span style="font-size:18px;">administrator@ubuntu:~/document/androidSource/.repo$ ls  
  2. manifests  manifests.git  manifest.xml  projects  repo</span>  

      里面的projects文件夹即是下载的源码:

  1. <span style="font-size:18px;">administrator@ubuntu:~/document/androidSource/.repo/projects$ ls  
  2. abi         build.git   development.git  external    libcore.git  prebuilt.git  
  3. bionic.git  cts.git     device           frameworks  ndk.git      sdk.git  
  4. bootable    dalvik.git  docs             hardware    packages     system  
  5. </span>  


       当然我的还么下载完,估计里面的内容还不太全。下面附一个下载时的截图:

ubuntu13.04下载android4.0.1源码过程第1张http://blog.csdn.net/zhanglongit/article/details/9263009

有点奇怪的时我在repo init -u的时候已经用-b指定下载源码版本为4.0.1_r1, 不知到为啥下载的时候还会出现4.2.x的信息,有时候还会出现2.3.x的相关信息,知道为啥的大神告知一下哈。

           据说会有10G左右,源码还在下载。等下载完后用mv .repo repo强制把这个隐藏文件夹弄成可见的看着就方便了。源码下好了,

原创:

http://blog.csdn.net/zhanglongit/article/details/9263009

免责声明:文章转载自《ubuntu13.04下载android4.0.1源码过程》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇office2007 密钥(key、注册码) 激活方法Unity3D脚本语言UnityScript初探下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

关于android中EditText边框的问题 下划线

方法1   将edittext的style设置成?android:attr/textViewStyle 取消掉默认的样式,在设置background为@null 接下来就是一个空空的edittext了, 在两个edittext中间加一个view,设置background为灰色,宽度match_parent,高度2dip看看。 如果可以了就采纳吧。不行的话...

如何用myeclipse和eclipse搭建安卓开发环境

搭建安卓开发环境 1.        下载android开发必备工具之JAVA JDK: :http://www.java.net/download/jdk6/6u10/promoted/b32/binaries/jdk-6u10-rc2-bin-b32-windows-i586-p-12_sep_2008.exe 下载JDK1.6,进行安装  2.   ...

elementui源码解析markdown处理

一些参考网址: markdown-it官网:markdown-it | markdown-it 中文文档 (docschina.org) markdown-it插件的分析和源码分析参考地址:https://zhuanlan.zhihu.com/p/64290806 参考例子:https://gitee.com/springliuliu/mdToHtm...

经典的CSS代码(转)

Web开发技术每年都在革新,浏览器已逐渐支持CSS3特性,并且网站设计师和前端开发者普遍采用这种新技术进行设计与开发。但仍然有一些开发者迷恋着一些CSS2代码。 分享20段非常专业的CSS2/CSS3代码供大家使用,你可以把它们保存在IDE里、或者存储在CSS文档里,这些代码片段绝对会给你带来意外的惊喜。 1. CSS Resets 网络上关于CSS重置的...

gitlab如何从Github导入项目

本文简单演示如何Github上导入项目到私人搭建的Gitlab中,搭建过程参考:CentOS7 搭建gitlab服务器。 Gitlab版本是gitlab-ce-12.0.2,界面可能稍有差异,但应该影响不大。 登录Gitlab服务器 登录自己的账户,初次登录界面应该如下所示。 选择创建一个项目(Create a project) ==> 选择导入项...

Android百度地图的使用

    做关于位置或者定位的app的时候免不了使用地图功能,本人最近由于项目的需求需要使用百度地图的一些功能,所以这几天研究了一下,现写一下blog记录一下,欢迎大家评论指正! 一、申请AK(API Key)     要想使用百度地图sdk,就必须申请一个百度地图的api key。申请流程挺简单的。     首先注册成为百度的开发者,然后打开http://...