如何获取android源代码



   研究Android的内部机理,源代码是必不可少的。大多数blog都推荐使用google提供的repo工具来获取Android源码,不过尝试多次 后未能完成。repo过程中问题多多: 权限问题,git server主动断开连接,以及偶尔还有G_F_W 干扰......

  当前的Android 代码托管在两个地方:  https://github.com/android  和  https://android.googlesource.com  之前在 android.git.kernel.org 上也有托管,不过现在重定向到了  https://android.googlesource.com  好在都支持git访问。

  google 提供的 repo 工具实际上是一个内部操作git工具来简化操作Android源码的Python脚本。经过尝试,直接使用git 工具在ubuntu 下可以实现clone Android 源码。下面介绍一下方法: 

1.  获取当前的在github 上托管的Android git repositories :

github页面为:  https://github.com/android/following  。不过这个页面不支持通过  wget "https://github.com/android/following " 或者 curl " https://github.com/android/following " 的方式访问, 错误信息如下:

Android 代码导出数据库文件 android导出源代码_awk

这样一来,获取这个页面内容并解析出其中的 git repositories就需要手工完成了。好在方法也很简单: 浏览器中打开这个页面,然后"查看源文件"并保存为文本文件,比如保存为"android_git.html"。最后,通过下面的一行脚本来取出 Android git repositories.

grep -o "<span class=\"repo\">.*</span>" ./android_git.html | cut -d ">" -f2 | cut -d "<" -f1 > android_git.txt
———————————————



2.  基于第1步获取的Android git repositories 来生成clone git的脚本 :

执行如下的一行awk脚本

awk 'BEGIN{i=1; print "#!/usr/bin/env bash" }{ print "\n\necho \"begin clone android git ["i"]: " $1 "\""; print "git clone http://github.com/ " $1 ".git"; print "echo \"finish clone android git ["i"]: " $1 "\"" ; i=i+1; }' ./android_git.txt > git_clone_android.sh
————————————————



现在用于clone android git的脚本生成好了,一共有 103 个 git repository.

3.  执行git_clone_android.sh这个脚本即可

整体Android 源码的代码量是相当庞大,完成所有的clone 任务后,大概占用了 7G 磁盘空间,历时20多个小时,这是在网速比较快的情况下达到的效果:

Android 代码导出数据库文件 android导出源代码_Android 代码导出数据库文件_02

Android 代码导出数据库文件 android导出源代码_移动开发_03

其间也有许多问题,比如多次出现如下的错误:

Android 代码导出数据库文件 android导出源代码_Android 代码导出数据库文件_04

这个时候需能做的只能是"try again"了。

需要说明的是"不要试图同时并发执行多个git clone 命令",这样会导致大量出现上面贴图中的错误, 另外,整个clone过程中耗时最多的git repository 如下:

kernel_common.git kernel_msm.git platform_frameworks_base.git platform_prebuilt.git  其中 platform_prebuilt.git 是google 提供的预编译好的二进制文件,包含: 各种库文件,jar 包,可执行程序等等,如果只是阅读Android 源代码,这个git repository 可以不用clone.