推荐系统:基于Debian8的Linux发行版,ubuntu16.04,(因为安卓源码实在ubuntu下编译的,redhat系没有)
我使用的系统:Deepin15.3(ubuntu是debian8 , deepin也是debian8,应该是一样可行的
安卓7.1需要ubuntu16.04和openjdk8
打开终端,root下执行命令:
apt-get install openjdk-8-jdk
提示是否安装,选Y
如果没有安装git的话也要安装git:
apt-get install git
这里我只介绍使用使用每月更新的初始化包的方式更新,其他方式请看清华大学开源软件镜像站
另外git方式,清华大学开源软件镜像站不提供,原因流量压力太大,这里也推荐使用每月更新包,不要直接去更新
aosp每月更新包大概20g左右,期间不能断,所以注意网络通畅,不然断了就苦了,保持一个盘120g+,因为你下载20g,同步完就40多g,60g+了,
自己看着办吧。
--------------------------------------------我是应用分割线------------------------------------------------------
由于首次同步需要下载 24GB 数据,过程中任何网络故障都可能造成同步失败,我们强烈建议您使用初始化包进行初始化。
下载 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar,下载完成后记得根据 checksum.txt 的内容校验一下。
由于所有代码都是从隐藏的 .repo
目录中 checkout 出来的,所以我们只保留了 .repo
目录,下载后解压 再 repo sync
一遍即可得到完整的目录。
使用方法如下:
wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP # 解压得到的 AOSP 工程目录
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码
此后,每次只需运行 repo sync
即可保持同步。 我们强烈建议您保持每天同步,并尽量选择凌晨等低峰时间
上面是清华大学开源软件镜像站原文。我们用wget https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
对于小白这句话是下载至你当前命令行表示的目录的地方,不知道当前目录在哪,就用一个新开的控制台使用这个命令吧,将会下载至/home/用户名 下面
cd到目录,使用tar -xvf aosp-latest.tar解压,解压完是空白目录,不要惊讶,就是空白的,因为隐藏了个.repo目录
下载需要很久,解压就比较快。
下载完包,解压完,我们介绍同步的,看下面。
mkdir ~/bin
PATH=~/bin:$PATH
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
chmod a+x ~/bin/repo
chmod a+x ~/bin/repo这句是添加执行权限,不要忘了
打开/home/用户名/bin/repo
将REPO_URL = 'https://gerrit.googlesource.com/git-repo'这句改为:
REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'
记得改,不然会出错的。
将repo添加至环境变量中:
sudo su
echo export PATH="$PATH:/home/你的用户名/bin" >> /etc/profile
exit
验证:
./repo
命令行cd到你的aosp目录下,使用:
~/bin/repo sync
同步。
出现以下错误(只标出最后一句,前面好像每一个错误前面都是一样的):
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 16: ordinal not in range(128)
在路径: 你的路径/aosp/.repo/repo/main.py
编辑这个文件,在import下面添加下面语句:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
再使用命令:
~/bin/repo sync
出现了一点同步,然后有出现错误了:
error: .repo/manifests/: contains uncommitted changes
首次使用要为git添加账户:
git config --global user.email "你的邮箱(随便一个邮箱就行了)"
git config --global user.name "你的名字"
cd .repo/manifests
git status (看待有个default.xml没有提交,切记不要删了default.xml
git add .
git commit -m "save"
位于分支 default
您的分支落后 'origin/master' 共 42 个提交,并且可以快进。
(使用 "git pull" 来更新您的本地分支)
尚未暂存以备提交的变更:
(使用 "git add <文件>..." 更新要提交的内容)
(使用 "git checkout -- <文件>..." 丢弃工作区的改动)
修改: default.xml
修改尚未加入提交(使用 "git add" 和/或 "git commit -a")
使用命令:
~/bin/repo sync
出现提示:
project .repo/manifests/
首先,回退分支以便在上面重放您的工作...
应用:save
使用索引来重建一个(三方合并的)基础目录树...
error: 您对下列文件的本地修改将被合并操作覆盖:
default.xml
请在合并前提交您的修改或者保存进度。
终止中
error: 无法合并变更。
回落到基础版本上打补丁及进行三方合并...
打补丁失败于 0001 save
失败的补丁文件副本位于:.git/rebase-apply/patch
当您解决了此问题后,执行 "git rebase --continue"。
如果您想跳过此补丁,则执行 "git rebase --skip"。
要恢复原分支并停止变基,执行 "git rebase --abort"。
cd .repo/manifests
git status (看待有个default.xml没有提交,切记不要删了default.xml
git add .
git commit -m "save"
再次提交更改,再次回到aosp目录下,又或者直接用两次cd ..回到aosp目录。
使用命令:
~/bin/repo sync
难点1、下载20g的文件太大了。
难点2、需要硬盘容量多
难点3、必须使用linux(也许有些人没用过linux,deepin比较适合小白用户)
难点4、repo修改url地址
难点5、解决git提交、合并错误
过程中有什么看不明白的可以评论,我会把过程整理更清楚些,我自己看当然是看得懂的,其他人我不知道了。。。
如果出现错误:error: Exited sync due to fetch errors ,再次使用
~/bin/repo sync
接着上次继续下载。网上的办法好像都不太靠谱,直接继续吧,毕竟都是国内源了,下载速度都是满速的。
安卓源码(二)查看安卓源码分支列表