博文《Android源代码下载——用git clone实现单个文件夹下载》介绍了採用git clone方法下载Android单个文件夹源代码的方法,这篇文章已经有四年的历史,这期间Google对源代码的管理站点已经进行了更改,直接採用原来的方法下载源代码已经失效。

本文介绍了在ubuntu下(在Windows下安装Cygwin,通过Cygwin也可在Windows里通过本文的下载步骤下载Android源代码)获取眼下最新的Android
4.4 全套源代码以及单个自模块源代码的下载方法。可依据本文方法下载全套或者仅仅下载子模块Android源代码进行源代码分析和编译。下载过错中遇到非常多问题,这些问题的解决对大家获取源password非常有借鉴意义。

Google源代码的官方帮助页面:http://source.android.com/source/initializing.html。下载源代码依照此页面介绍的步骤操作就可以。

以下简要介绍下下载的步骤和遇到问题的解决的方法。

1、安装 Repo

a) 建立Repo的安装文件夹、配置环境变量

$ mkdir ~/bin

$ PATH=~/bin:$PATH

b) 获取Repo工具

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

  问题:上面是Google制定的repo获取地址,但获取可能失败。
解决的方法:网上有网友给出了替代的获取地址,如遇报错可用以下的地址替代:
curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ~/bin/repo
2、建立并进入源代码下载文件夹

$ mkdir WORKING_DIRECTORY
$ cd WORKING_DIRECTORY

3、初始化源代码Repo下载地址
如是下载当前最新的代码,则:

  repo init -u https://android.googlesource.com/platform/manifest
如是下载特定Android成熟版本号分支的代码,则加上-b 參数。如当前最新公布的android 4.4分支代码:


  repo init -u https://android.googlesource.com/platform/manifest -b android-4.4.1_r1
命令如顺利运行,期间将要求输入unsername和email。直接输入自己的自己定义的username和email就可以。 问题:在init过错中,可能会出现例如以下的443连接失败错误:
error: Failed connect to android.googlesource.com:443
解决的方法:找到/etc/hosts文件,添加例如以下地址(如无法保存须要用root权限改动hosts文件的訪问权限):
74.125.128.82    android.googlesource.com
74.125.31.82    www.googlesource.com
203.208.46.172    cache.pack.google.com
173.194.74.82   gerrit.googlesource.com
上面的地址可能会发生变化,保存前在终端用ping命令逐个ping各个域名的当前IP地址替换:



  e.g.: ping android.googlesource.com
 4、同步全套源码 
 $ repo sync


  问题:命令运行过程中可能会报错:
 fatal: '../platform/abi/cpp.git' does not appear to be a git repository
fatal: The remote end hung up unexpectedly
error: Cannot fetch platform/abi/cpp

解决的方法

在init成功后下载的.repo文件夹下的manifest.xml里,找到fetch属性,并改动为:
fetch= "git://Android.git.linaro.org/"

repo sync命令在运行过程中一般不会一次性成功,中途可能超时或存在其它失败,此时仅仅需再次运行repo sync就可以。曾经的记录会被缓存的。



 5、同步子模块代码


 repo syn命令是同步所制定分支的全套代码,但全套代码的运行过程非常长,有时候也并不须要全套代码而仅仅须要特定子模块的代码。
获取子模块的方法是在repo sync 命令后加上子模块的git节点文件夹名就可以,比如想要获取Launcher3模块的源码:



 repo sync packages/apps/Launcher3
各个子模块的节点文件夹查找方法:


 在init成功后下载的.repo文件夹下的manifest.xml里。找到子模块的project 属性就可以:
e.g. Launcher 3 的git文件夹:
...
<project path="packages/apps/Launcher2" name="platform/packages/apps/Launcher2" />
  <project path="packages/apps/Launcher3" name="platform/packages/apps/Launcher3" />
  <project path="packages/apps/LegacyCamera" name="platform/packages/apps/LegacyCamera" />
...

































































































我的手机专卖店。欢迎各位看官捧场http://vpclub.octech.com.cn/ztewd/9495.html

本文为原创文章,转载请注明出处http://blog.csdn.net/droidpioneer

Android 4.4 全套源代码及子模块源代码的下载方法的更多相关文章

  1. Android源代码下载方法具体解释

    作者:张星 相信非常多下载过内核的人都对这个非常熟悉 git clone git://android.git.kernel.org/kernel/common.git kernel 可是这是在曾经,如 ...

  2. Android从入门到精通pdf+书源代码

    不须要积分,免费放送 Android从入门到精通的pdf,入门的好书籍,因为csdn文件大小的限制所以分成了两部分. part1地址:http://download.csdn.net/detail/a ...

  3. Android应用程序进程启动过程的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址: http://blog.csdn.net/luoshengyang/article/details/6747696 Android 应用程序框架层创 ...

  4. Android View体系(八)从源代码解析View的layout和draw流程

    相关文章 Android View体系(一)视图坐标系 Android View体系(二)实现View滑动的六种方法 Android View体系(三)属性动画 Android View体系(四)从源 ...

  5. Memcached源代码分析 - Memcached源代码分析之消息回应(3)

    文章列表: <Memcached源代码分析 - Memcached源代码分析之基于Libevent的网络模型(1)> <Memcached源代码分析 - Memcached源代码分析 ...

  6. Mac OS X于Android Kernel下载方法

    于上一篇日志中,我总结了大家提供的下载Android源代码的方法.这里再简单总结一下内核的下载方法. 參考这里的介绍:http://source.android.com/source/building ...

  7. Android源码50例汇总,欢迎各位下载(转载)

    下载中心好资料很多,藏在各个角落,小弟在此帮大家做了一个整理,做了一个下载目录,方便大家选择性下载. 源码实例如下: <Android应用开发揭秘>源代码推荐 http://down.51 ...

  8. 【Android】Eclipse自动编译NDK/JNI的三种方法

    [Android]Eclipse自动编译NDK/JNI的三种方法 SkySeraph Sep. 18th  2014 Email:skyseraph00@163.com 更多精彩请直接访问SkySer ...

  9. Android斗地主棋牌游戏牌桌实现源码下载

    本次给大家分享下Android斗地主棋牌游戏牌桌实现源码下载如下: 为了节约内存资源,每张扑克牌都是剪切形成的,当然这也是当前编程的主流方法. 1.主Activity package com.biso ...

随机推荐

  1. 【原创】项目管理软件之争,禅道和JIRA大对比

    本文摘要: 一. 产品介绍 二. 界面设计 1. 界面颜色设计 2. 布局结构 三. 功能区别 四. 价格对比 五. 后期服务 六. 优缺点 七. 总结 说到项目管理软件,不得不提的是禅道和JIRA. ...

  2. [BZOJ2111][ZJOI2010]Perm排列计数(组合数学)

    题意就是求一个n个点的堆的合法形态数. 显然,给定堆中所有数的集合,则这个堆的根是确定的,而由于堆是完全二叉树,所以每个点左右子树的大小也是确定的. 设以i为根的堆的形态数为F(i),所以F(i)+= ...

  3. [Hybrid App]--Android混合开发,Android、Js的交互

    AndroidJs通信 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !imp ...

  4. apk打包

    1.在导航栏中选择Builder->Generate Signed Apk 2.新建点击Creat new... 3.注意路径后面写apk的名字(这个名字将会显示在手机软件的下方)

  5. JAVA call graphs JAVA调用图

    https://github.com/gousiosg/java-callgraph Programs for producing static and dynamic (runtime) call ...

  6. 安网讯通签约孟强美容CRM

    整形美容CRM软件是辽宁安网讯通有限公司为孟强整形医院定制开发的一套客户关系管理软件,软件专门针对整形美容行业专科门诊的需求,能满足大中小整形美容机构或或各种专科科室的日常业务需求. 主要功能包括: ...

  7. 转载:oracle11G 已开启监听,但远程连接依旧无监听解决过程

    1.连接数据库显示无监听程序,首先查看服务器的oracle监听服务是否开启,服务名称:OracleOraDb11g_home1TNSListener(具体环境中可能不完全一样,但是认准TNSListe ...

  8. android 图片上传到服务端 文件损坏问题

    在网上找的例子,怎么试都不行. 上传上去之后提示文件损坏,不过最后问题还是找到了. 是因为不能在写入流的byte中写入其他内容 这是网上的例子 如果是要在服务端取文件名,可以在这里写入 在服务端获取文 ...

  9. Swift,简单语法

    1.创建变量 var a=0 //变量 let b=0 //常量 let b:String="你好" //:后可以定义类型(变量一旦定义,类型不可改变)(类型不填Swift会自动判 ...

  10. SpringBoot整合Quartz定时任务

    记录一个SpringBoot 整合 Quartz 的Demo实例 POM.XML文件 <!-- 定时器任务 quartz需要导入的坐标 --> <dependency> < ...