×

用repo从清华开源镜像站同步安卓最新AOSP源码(ubuntu平台)

96
forgot2015
2017.01.14 09:45* 字数 746

笔者使用的ubuntu平台,其他系统请自行研究
AOSP全称:Android Open Source Project

若只是想下载源码来看看,不关注最新版本的,可以在下方链接下载,是热心网友转存的http://pan.baidu.com/s/1c8C0nsaosp
源码4.4 5.0下载

如果你网络好,不怕翻墙的话,也可以直接从谷歌官网同步(https://source.android.com/source/downloading.html),本文讲述从清华开源镜像站同步的方法。清华开源镜像站地址如下,该网站也有同步教程,可以过去看https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

本文主要在该网站教程基础上,增加了遇到报错时的解决办法。
1、下载repo工具,终端输入命令
mkdir ~/bin PATH=~/bin:$PATH curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
2、同步源码
建议先下载一份源码,在此基础上再同步,会比直接同步快多了
最新源码下载
https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar
由于所有代码都是从隐藏的 .repo 目录中 checkout 出来的,所以只保留了 .repo 目录,下载后解压 再 repo sync 一遍即可得到完整的目录。

使用方法如下:
将下载后的aosp-latest.tar解压,然后进入解压文件夹
终端输入
repo sync
正常同步一遍即可得到完整目录此后,每次只需运行 repo sync 即可保持同步。 教程到此为止,如果你成功同步的话 终端会有一大串正在同步信息的信息输出,等几十分钟就好了,当然,笔者没那么好运。

如果你不想麻烦的话,也可以直接repo仓库,就不用做sync设置了,在某文件夹终端输入repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest由于首次同步需要下载 24GB 数据,过程中任何网络故障都可能造成同步失败,我们强烈建议您使用初始化包进行初始化。
笔者过程中遇到的错误:
错误1、python编码问题

注意最后一句UnicodeDecodeError: 'ascii' codec can't decode byte 0xe8 in position 1: ordinal not in range(128).
这里能找到答案
http://stackoverflow.com/questions/21129020/how-to-fix-unicodedecodeerror-ascii-codec-cant-decode-byte
就是说要改一下python编码,可以在python目录下的sitecustomize.py中修改,也可以直接在报错文件的头部添加
import sys reload(sys) sys.setdefaultencoding('utf8')
还有更方便的办法,直接在终端输入
python
然后陆续输入
import sys reload(sys) sys.setdefaultencoding("utf-8")
然后输入下面的查一下成功了没
sys.getdefaultencoding()
输出utf-8那就对了这下继续到aosp目录下输入
repo sync
看能否成功

错误2、error: .repo/manifests/: contains uncommitted changes
提示 还有未提交的改变
网上有很多解决办法,大多说的是先 cd .repo/manifests再执行 git stash 和 git clean -f -d然后再repo sync 就可以通过了
很不幸运,这都对我没用
最后找到一个回答在终端输入
git config core.filemode false
(加入忽略文件权限的配置)再输入repo sync总算成功了
等待数十分钟的初始化,完成后得到aosp源码了最终得到的目录如下

一些源码常用目录

应用程序层,目录/aosp/packages/apps/
框架层,目录/aosp/frameworks/

Android学习
Web note ad 1