如何获取android源代码

   研究Android的内部机理,源代码是必不可少的。大多数blog都推荐使用google提供的repo工具来获取Android源码,不过尝试多次 后未能完成。repo过程中问题多多:权限问题,gitserver主动断开连接,以及偶尔还有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下可以实现cloneAndroid源码。下面介绍一下方法:

1. 获取当前的在github上托管的Androidgitrepositories :

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

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

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

2. 基于第1步获取的Androidgitrepositories来生成clonegit的脚本 :

执行如下的一行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

现在用于cloneandroidgit的脚本生成好了,一共有103个gitrepository.

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

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

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

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

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

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

更多相关文章

  1. 【阿里云镜像】切换阿里巴巴开源镜像站镜像——Debian镜像
  2. Android高手进阶教程(二十二)之---Android中几种图像特效处理的
  3. android 类似QQ 换皮肤 实现思路 apk资源共享
  4. ListView setOnItemClickListener无效原因详细分析
  5. Android(安卓)Studio中获取sha1证书的方法
  6. ListView setOnItemClickListener无效原因分析
  7. Android中使用ViewPager制作广告栏滚屏效果
  8. Android中Handler源码解析(一)
  9. Android应用实例之----基于Service与ContentProvider的音乐播放

随机推荐

  1. Arm Development Studio 社区版
  2. 数据库查询多少条数据
  3. android问题:保存文件后文件内容为空
  4. Error:org.gradle.api.internal.tasks.De
  5. Android客户端WebService访问接口(Ksoap2A
  6. OCR(opencv vs tesseract)
  7. android 消费者和生产者的队列处理模型
  8. Android(安卓)Studio 问题集合
  9. Android(安卓)根据显示长度 调整字体大小
  10. 屏蔽apk在主界面上的显示