https://blog.csdn.net/mlq8087/article/details/79443048
(Ubuntu安装到源码下载编译一条龙)

创建Ubuntu虚拟机

本来本博客没有这个段落的,但是由于后面一系列下载问题,我特地在这里强调一下坑。
1)定义磁盘容量,尽可能大一些,100G是不够的。在下载4.4源码的时候,就突然提示磁盘空间不足。
怎么扩容:
https://jingyan.baidu.com/article/86fae34604bdd53c49121a26.html
上面这个是命令来分区扩容,推荐一款可视化分区神器Gparted
https://blog.csdn.net/Meteor_s/article/details/85068524
https://blog.csdn.net/u010164190/article/details/90639809
https://blog.csdn.net/PY0312/article/details/95877261
验证是否扩容成功,终端输入 df -h指令。
image.png
sda1由原来的100G扩展到300G了,但是Disk应用显示并没有变,咋回事?
image.png
对于新手,强烈建议初次创建虚拟机时,磁盘容量尽量建的大一些,至少来个150G吧。

下载

我基本是按照下面的博客来实现了android源码下载:
博客1 (我是主要参照这个来搞的)
博客2
博客3 (个人建议,博客1和博客3结合着看。很简洁的博客,repo init的方式和博客1的不一样,没法查看分支。查看分支的时候想要退出,输入q即可。)
https://www.jianshu.com/p/02509496abcb

如何只下载AOSP中指定部分的代码

https://www.jianshu.com/p/3922ec229077

在看上面的博客之前,必须要会的技能:git,repo,linux。
* repo (多个git库的管理)
https://blog.csdn.net/u013171283/article/details/80895125
https://blog.csdn.net/hellofeiya/article/details/8560321

大致的步骤我总结如下:

1)下载repo并配置

博客1采用的git下载,所以要配置git环境.(推荐)  (这里我要纠正一下,其实repo直接用apt install 就能安装,没有必要像文章里搞的那么复杂。)
博客2采用的curl下载,估计是参照着清华大学的教程:[https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/](https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/)

有可能repo指令执行不了,提示“/usr/bin/env: "python": 没有那个文件或目录”,就是python没有安装
https://www.jianshu.com/p/02509496abcb

2)配置repo的镜像为清华大学的镜像

官方的源码在google服务器上,直接下是下不了的,除非翻墙。最好的办法就是配置清华大学的
镜像。
就是修改~/git-repo/repo文件的REPO_URL地址,上面博客1中已经说明了。
还有很重要的一步:[https://blog.csdn.net/zy13608089849/article/details/84767864](https://blog.csdn.net/zy13608089849/article/details/84767864),清华大学镜像网站也提到了这个问题如何解决:[https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/](https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/),就是上面的REPO_URL地址要同步到.bashrc这个文件里。

然后就参照博客1下载源码即可了。
注意默认linux是不显示隐藏的文件,而repo下载的.repo默认就是隐藏的,需要显示才能看到下载的源码。
image.png

3)下载中断

错误1:error: RPC failed; curl 7 GnuTLS recv error (-54): Error in the pull function.

 fatal: The remote end hung up unexpectedly
 百度了下解决办法:[http://www.pianshen.com/article/4397334526/](http://www.pianshen.com/article/4397334526/),都是说将git的缓存变大

git config --global http.postBuffer 2000000000
有个牛人还写了个中断继续下载的脚本http://www.voidcn.com/article/p-vnwowtir-ea.html,中断下载就不用人工输入repo sync指令了。

echo “======= start repo sync =======”

repo sync -j4

while [ $? == 1 ]; do

    echo “====== sync failed! re-sync again =====”

    sleep 3

    repo sync -j4

done

但是上面这个脚本,最后的检出关头会报一个错误:
“[: XXXX: unexpected operator”

错误2:卡住不动了

卡住不动了
等了一个晚上第二天上班显示
image.png
按照https://blog.csdn.net/qq_21508727/article/details/89413590处理了这个错误重新repo sync后卡在下面又不动了

image.png

等了大老半天提示
image.png

打断执行 repo sync j4指令

错误3:接着,又卡住了。

image.png
找到platform/external/mockwebserver这个文件夹,删除。
打断执行 repo sync j4指令

错误4:接着,报404错误。

image.png
百度的说法:https://blog.csdn.net/YuDBL/article/details/86143963,无视忽略即可。
最后又继续执行repo sync j8指令,又回到了错误3.

错误5:卡在某个地方一直不动

image.png
上面一直卡在apps/Car/Media不动,等了好几个小时才出现下面那句话。
error: RPC failed; curl 6 GnuTLS recv error (-54): Error in the pull function.
fatal: The remote end hung up unexpectedly
网上提供了个解决办法:https://blog.csdn.net/ai2000ai/article/details/80708079,但是对于我并没有什么鸟用,我最终是去下载4.4的源码才下载成功,8.0的根本就下载不下来。所以你卡在某个地方走投无路的时候,试下换个版本的源码再下载。

卡住不动,也不提示任何错误,这真是源码下载过程中最让人揪心的问题,加了个QQ群有大佬提出解决办法如下:
调整TCP/IP堆栈的设置和使用非并行命令可以改善这种情况。需要root访问权限修改TCP设置:

$ sudo sysctl -w net.ipv4.tcp_window_scaling=0

$ repo sync -j4

4)下载完成的标记

http://blog.sina.com.cn/s/blog_6e9011f90100nv5d.html

在上面的错误3,abort之后
image.png
提示Fetching projects:100%,但这并不代表所有的源码都下载完毕。

真正的下载成功应该是下面的,出现“Syncing work tree: 100% (407/407), done”就表明源码下载完毕。
image.png

5)如何只下载指定目录的源码

http://bcoder.com/others/sync-part-of-code-when-using-repo-sync
repo sync platform/加上想要同步的目录system/core/include
执行

repo sync platform/system/core/include

注意还有一步,repo的manifest.xml文件也得相应配置一下,否则会报错如下:
error: project platform/system/core/include not found
image.png

但是好像只能更新manifest.xml文件中已有的模块(多一级或者少一级目录都不行),添加自己的模块报错:

分类: 下载

0 条评论

发表回复

您的电子邮箱地址不会被公开。