推荐系统:基于Debian8的Linux发行版,ubuntu16.04,(因为安卓源码实在ubuntu下编译的,redhat系没有)

我使用的系统:Deepin15.3(ubuntu是debian8 , deepin也是debian8,应该是一样可行的


安卓7.1需要ubuntu16.04和openjdk8


1、安装openjdk

打开终端,root下执行命令:

apt-get install openjdk-8-jdk
提示是否安装,选Y

如果没有安装git的话也要安装git:

apt-get install git

2、下载AOSP

这里我只介绍使用使用每月更新的初始化包的方式更新,其他方式请看清华大学开源软件镜像站

另外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目录

下载需要很久,解压就比较快。

下载完包,解压完,我们介绍同步的,看下面。

3、下载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

如果出现命令解释就配置成功了,不配置的话直接使用绝对路径~/bin/repo效果是一样的。


4、同步

命令行cd到你的aosp目录下,使用:

~/bin/repo sync
同步。

出现以下错误(只标出最后一句,前面好像每一个错误前面都是一样的):

UnicodeDecodeError: 'ascii' codec can't decode byte 0xe5 in position 16: ordinal not in range(128)

因为本地的语言不是utf8,所以需要设置

在路径: 你的路径/aosp/.repo/repo/main.py

编辑这个文件,在import下面添加下面语句:

import sys
reload(sys)
sys.setdefaultencoding('utf8')

再使用命令:

~/bin/repo sync
出现了一点同步,然后有出现错误了:

error: .repo/manifests/: contains uncommitted changes

错误原因是git没有提交改变。


首次使用要为git添加账户:

git config --global user.email "你的邮箱(随便一个邮箱就行了)"
git config --global user.name "你的名字"


接着回到空白的aosp目录下,

cd .repo/manifests
git status (看待有个default.xml没有提交,切记不要删了default.xml
git add .
git commit -m "save"


git status:

位于分支 default
您的分支落后 'origin/master' 共 42 个提交,并且可以快进。
  (使用 "git pull" 来更新您的本地分支)
尚未暂存以备提交的变更:
  (使用 "git add <文件>..." 更新要提交的内容)
  (使用 "git checkout -- <文件>..." 丢弃工作区的改动)

	修改:     default.xml

修改尚未加入提交(使用 "git add" 和/或 "git commit -a")


这样子就提交了改变了,再次回到aosp目录下,现在是在.repo/manifests下面,使用两次cd ..就回到aosp下了。

使用命令:

~/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"。

还是git问题,我们使用:

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
接着上次继续下载。网上的办法好像都不太靠谱,直接继续吧,毕竟都是国内源了,下载速度都是满速的。


安卓源码(二)查看安卓源码分支列表

Logo

更多推荐