配置下载Android源代码的过程及问题解决

最近在学习Android底层框架,今天打算研究一下Android源代码,源码的下载过程可没有想像的顺利。主要原因是网上的很多资料都是多年以前的,而一些网站都发生了变更,所以域名也会失效。OK,废话少说,我把遇到的各种问题和大家分享一下,希望大家能对号入座,避免浪费不必要的时间~

以下是我按照正常下载过程总结出的步骤,遇到的问题将在后面讲述。

       第一步:创建下载脚本文件(repo)的存放目录(可任意),这里我选用 ~/android/bin

# mkdir  ~/android/bin              //创建repo目录
#PATH=  ~/android/bin:$PATH         //为repo工具配置环境变量,方便后面使用

第二步:下载repo文件:(出错点)

# curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~ /bin/repo//下载repo文件
# chmod a+x ~/bin/repo           //修改repo文件的权限设定

repo其实是一个应python脚本对Git的封装,主要是为了简化下载Android源代码的步骤。

第三步:创建用于存放Android源代码的目录(可任意),这里我选用~/android/bin/android_source:

# mkdir android_source              //创建文件目录
# cd android_source                 //进入该目录

第四步:初始化:(出错点)

# repo init -u https://android.googlesource.com/platform/manifest           //repo的初始化

此时便会要求repo工具自动下载Android源代码(默认是Master分支,也可以下载其他分支)。

如果下载其他分支,使用一下语句:

# repo init -u https://android.googlesource.com/platform/manifest -bandroid-4.4.2_r2  //下载Android4.4.2源代码

如果要下载其他版本,分支名参考官方网站:http://git.omapzoom.org/?p=platform/manifest.git;a=tags

随后可看到终端输出如下信息:

Getting repo ...from git://codeaurora.org/tools/repo.git
remote: Counting objects: 2818, done.
remote: Compressing objects: 100% (863/863), done.
remote: Total 2818 (delta 1907), reused 2818 (delta 1907)
Receiving objects: 100% (2818/2818), 959.24 KiB | 798 KiB/s, done.
Resolving deltas: 100% (1907/1907), done.
From git://codeaurora.org/tools/repo* [new branch]      aosp-new/maint -> origin/aosp-new/maint* [new branch]      aosp-new/master -> origin/aosp-new/master* [new branch]      aosp-new/stable -> origin/aosp-new/stable* [new branch]      caf-stable -> origin/caf-stable* [new branch]      master     -> origin/master* [new branch]      stable     -> origin/stable* [new tag]         v1.10.4    -> v1.10.4* [new tag]         v1.12.16   -> v1.12.16* [new tag]         v1.12.2    -> v1.12.2* [new tag]         v1.6.8.1   -> v1.6.8.1* [new tag]         v1.7.5     -> v1.7.5

可以看到Android源代码中的分支([new branch]和[new tag])。

第五步:开始下载Android源代码:

# repo sync       //同步,即下载源代码

至此,下载Android源代码的基本步骤就到此结束,如果顺利的话,Linux终端可以看到如下的信息:

之后会正式开始下载源代码,下载过程漫长,会根据具体情况的不同速度差异很大,整个过程Git会尽可能占用带宽,朋友们需要耐心等待。


下载过程中可能遇到的问题:

1.首先容易出错的是第二步,这里由于网站或者本地网络的问题,可能会出现如下故障:

root@mc-virtual-machine:~/android/bin# curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/android/bin/repo% Total    % Received % Xferd  Average Speed   Time    Time     Time  CurrentDload  Upload   Total   Spent    Left  Speed0     0    0     0    0     0      0      0 --:--:--  0:00:21 --:--:--     0

下载会卡在一开始,而且卡住的概率很高。此时不必急着检查问题,可能是暂时的网络故障,可以ctrl + c 中断之后再次执行,尝试多次通常可解决此问题。

2.其次容易出错的地方便是第四步。

由于站点的问题,有些朋友在第四步执行repo init命令的时候会报错,如下:

./bin/repo: 行 1: 未预期的符号 `newline' 附近有语法错误
./bin/repo: 行 1: `<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">'
解决方法:更换repo下载站点,使用如下命令
# curl "http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo" > ./repo    //获取repo

此时再次执行第四步:

# repo init -u https://android.googlesource.com/platform/manifest       //repo的初始化

便可看到如第五步中所示的正确结果。

3.在第四步的时候终端会询问如下问题:

root@mc-virtual-machine:~/android/bin/android_source# repo init -u https://android.googlesource.com/platform/manifest
error: Failed to connect to 2404:6800:4005:c00::52: Network is unreachable while accessing https://android.googlesource.com/platform/manifest/info/refs
fatal: HTTP request failed
fatal: cannot obtain manifest https://android.googlesource.com/platform/manifest

由于访问是匿名的,为了防止连接过多,谷歌对同一IP地址的连接数做了一定的限制。这里需要用gmail帐号进行认证。
通常在公司内部网络或者用虚拟机下运行的话,会经常遇到这个问题。

解决方法:
1. 浏览器登录https://android.googlesource.com/new-password,并用gmail帐号登录; 
2. 点击网页上的“是”(有些资料上写的是点击“允许访问”,我看到到是“是”),得到类似如下结果:

Username: git-hust.mczy.gmail.com
Password: 1/3t2difm8LDvgpYCdci5nripSiQuWBaIv
然后将网页上由machine开头到两行复制下来,在linux终端里新建~/.netrc文本文档,复制进去,保存退出。最后在域名中加一个“/a”,完整命令如下
# repo init -u https://android.googlesource.com/platform/manifest           //repo的初始化

随后会在终端中输出如下验证信息:

Your Name  [root]: MC
Your Email [root@mc-virtual-machine.(none)]: hust.mczy@gmail.comYour identity is: MC <hust.mczy@gmail.com>
is this correct [y/n]? yTesting colorized output (for 'repo diff', 'repo status'):black    red      green    yellow   blue     magenta   cyan     white bold     dim      ul       reverse
Enable color display in this user account (y/n)? 

此时需要验证gmail邮箱,然后输入用户名和Gmail邮箱,选择Y回车即可。

4.最后一步在执行repo sync时,可能会报如下错误:

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

这说明获取的路径有问题。

解决方法:

进入安装repo的bin目录下一个叫.repo的目录,打开manifest.xml文件(命令gedit manifest.xml)并找到fetch属性,在我的文件中显示fetch="..",将fetch修改为fetch="git://Android.git.linaro.org/",保存并退出。再次执行repo sync 即可开始下载。

5.另外还有一个很少出现的错误。同样是在repo sync时,如果出现如下错误:

remote: Sending approximately 1.11 GiB ...
remote: Counting objects: 42, done
remote: Finding sources: 100% (42/42)
remote: Sending approximately 200.67 MiB ...
remote: Counting objects: 18, done
remote: Finding sources: 100% (18/18)
error: RPC failed; result=56, HTTP code = 2000 KiB/s
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack failed
error: RPC failed; result=56, HTTP code = 200
fatal: The remote end hung up unexpectedly
fatal: early EOF
fatal: unpack-objects failed
error: RPC failed; result=56, HTTP code = 200
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack failed
error: RPC failed; result=56, HTTP code = 200
fatal: The remote end hung up unexpectedly
fatal: 过早的文件结束符(EOF)
fatal: index-pack failed

这个问题挺尴尬的,这是由于网络信号不顺畅造成的,比较Android官方网站设在国外,国内的网络常常会故障。大家可以留意一下在崩溃之前终端显示的下载速度,是不是由M编程KB ,然后慢慢变小,最后直接崩溃。。。

解决方法:

网络不顺通常是一时的,这里的办法除了换网之外只有反复执行 repo sync。当然这里完全不需要自己去反复执行,可以通过编写一个脚本程序,让计算机在下载崩溃后自动重新下载。在代码目录建立一个脚本(sh)文件,输入如下:

#!/bin/bashecho ¨================start repo sync===============¨repo sync -f -j10while [ $? == 1 ]; doecho ¨================sync failed, re-sync again=============¨sleep 3repo sync -f -j10done

之后可以做自己的事,让程序自动下载,当你蓦然回首的时候,它已经默默下载成功了。。

总结:

下载Android源代码会出现很多问题(光是本人就有很多问题),网上查找到的许多资料也都是很早以前的,故未必能解决。个人认为主要的问题有三个:一个是下载的repo版本,要是最新版,很多版本不是被墙掉了,就是失效了;第二个就是初始化源代码的站点。同样的,由于站点的无效也会导致一系列的问题。第三则是谷歌对谷歌邮箱的验证,按照这个步骤执行,一般都能够搞定。
好了,基本上大部分出现的问题都是由于这两个原因造成的,所以对于其他原因,这里我就不详谈了。如果各位按照以上步骤仍然无法下载成功,欢迎给我留言,相信大家互相探讨学习,一定能够客服困难,共同进步!

谢谢~~

超低空


下载Android源代码错误汇总分析相关推荐

  1. Windows11:如何下载Android源代码

    文章目录 AOSP简介 WSL安装 启动WSL 下载Ubuntu repo下载 拉取源代码 参考 AOSP简介 AOSP就是安卓开放的源代码,我们可以下载下来学习,或者进行二次开发.本文章主要介绍如何 ...

  2. 教育网使用http proxy下载android源代码

    前两天按照书上的流程下载android源代码,下载repo之后,在执行下载时遇到如下错误: $ repo init -u git://android.git.kernel.org/platform/m ...

  3. Windows下载Android源代码

    下载msysgit,安装 官方下载:http://code.google.com/p/msysgit/downloads/list, 打开Git Bash,运行命令 cd D:git clone ht ...

  4. Mac下通过镜像下载Android源代码

    在Android开发过程中,经常需要查看Android的源代码.而在下载的SDK中,有各个Platform版本的Framework层的源代码下载,而这些源代码是不完整的,没有C/C++的代码.我们需要 ...

  5. 下载Android源代码

    1安装repo脚本 首先安装repo.在当前用户:~目录下新建一个bin目录.在终端中执行: #cd ~ #mkdir bin 然后,向PATH中添加bin路径: #export PATH=$PATH ...

  6. Android开发错误汇总

    大家都在为项目开发成功而喜悦,但可不知成功的路上是会经常出错的,下面是我碰到的一些错误集合! [错误信息] [2011-01-19 16:39:10 - ApiDemos] WARNING: Appl ...

  7. win7 下载android源代码_适用于Android的30种最佳免费黑客应用程序和工具

    在本文中,我们将列出前30个Android黑客工具,以帮助完成网络和渗透测试任务. 适用于Android的30种最佳免费黑客应用程序和工具 NMap for Andr oid(NetworkMappe ...

  8. Windows环境下载android源代码

    最近需要android自带的项目源代码.网上一搜居然要在linux下用git下载.后来找到了windows下的git下载方法.步骤如下: 1.到http://code.google.com/p/msy ...

  9. 下载Android 源代码树的三种方式

    一.从Google托管的 Git 代码库下载(需VPN) mkdir aosp cd aosp git config --global user.name Your Name git config - ...

最新文章

  1. SAP RETAIL WA01 创建分配表报错 - Plant 0000000039 Confirmation date not maintained.-
  2. python脚本下载sentinel数据_Python API sentinelsat下载错误
  3. 【AI不惑境】模型量化技术原理及其发展现状和展望
  4. mysql 开启守护进程_[求助]Linux上MySQL Server 5.6 安装后无法启动守护进程
  5. opcua客户端实现断线重连_PLCopen amp; OPC UA信息模型
  6. apache jmx_用于JMX访问的Apache Ant任务
  7. android摄像头矩形框提取_视频图像摄像头跟踪的上位机系统设计
  8. C#从构造函数中调用其他构造函数
  9. Bootstrap 3 移除输入框聚焦线 How to remove border (outline) around text/input boxes?
  10. 雅可比迭代c++实现_线性方程组(3)-静态迭代法
  11. 福州大学第十四届程序设计竞赛-重现赛(Record)
  12. php 调用dll静态库,vue-cli 2.x 项目优化之引入本地静态库文件
  13. OpenGL天空盒skybox
  14. 正版maya安装时,更改注册登录方式方法
  15. P9 力荐!阿里巴巴最新出品 776 页 JDK 源码 + 并发核心原理解析小册
  16. cmos电路多余输入端能否悬空_CMOS和TTL集成门电路多余输入端的处理方法
  17. 崔希凡-javaWeb-笔记day07-day09(2016年7月26日23:17:27)
  18. Webpack 配置中的一股清流
  19. OpenBMC环境搭建及测试
  20. 技术之路如何成长而不迷茫

热门文章

  1. 区块链游戏未来如何?
  2. 漂浮式数据中心降低成本及功耗
  3. 计算机专业考研100+不是梦!
  4. 计算机审计兴趣小组工作小结,关于科技兴趣小组活动总结.docx
  5. 关于登录失效弹窗多次弹出问题
  6. Android版中文分词器:原理、接入和启动优化
  7. android camera绿屏,android 播放摄像头实时流一直绿屏
  8. LATEX教程第二讲——那些不得不说的宏包(上)
  9. 新浪微博私信,即时聊天接口研究
  10. 服务网格和Cookpad