版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/MonaLisaTearr/article/details/79768758
最近开始从原生App的开发转到系统的开发,期间免不了对公司的系统源码进行定制、编译、烧录等,但是很多朋友由于时平时自己根据兴趣爱好学习的,所以手上并没有源码,说以在我们进行定制之前,好歹也需要弄份源码下来吧!废话不多说!
当然,我们也可以将repo sync的同步过程写成sh脚本,方便同步被中断时能够重新触发同步!这个大家可以去网上搜下资料!
ps:本人用的时Ubuntu 14.04
一、git安装
如果之前又安装过git那就忽略这一步,如果没有就按照下面命令进行安装以及配置即可:
sudo apt-get install git
git config –global user.email “[email protected]” git config –global user.name “xxx”
这里多说一嘴,上面的邮箱跟用户名,直接写你平时用的即可,没有严格的规定,只不过是设置一个标识而已!
二、repo安装以及配置
1、在用户目录建立/bin文件夹
mkdir ~/bin
2、将~/bin目录纳入到PATH
export PATH = ~/bin:$PATH
3、下载repo并设置权限
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
在这里我们大概说一下repo,说repo之前我们先了解aosp项目,那什么是aosp项目呢?它的全称其实是Android Open Source Project,也就是整个android开源项目的意思,而repo就是google用来管理aosp项目的一个工具,由于aosp项目非常庞大,所以google采用了git对aosp项目进行多仓库管理,而repo就是用Python编写的一些对git命令进行调用的脚本,所以是,repo不是什么新东西,仅仅时对git的进行了一些封装而已!!
三、接下来我们开始同步源码了
1、紧接着我们就在我们的用户目录下创建一个source文件夹使用repo工具初始化一个仓库
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest
此时,由于我们的repo 中的REPO_URL指向的是gerrit.googlesource.com的,由于某墙的原因会报如下错误:
fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
此时应该很多朋友想到科学上网,其实不用那么麻烦,清华大学就维护了一个aosp项目的镜像源,我们去那里搞就行了
使用vi编辑~/bin/repo文件,修改里面的REPO_URL为下面内容即可:
REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
2、搞定镜像源问题后我们继续初始化仓库,这次我们就不用原来的命令了,我们直接用带参数的指定具体分支的命令
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r1
这里大家不要过于疑惑这个repo命令,其实它内部所做的操作就是git命令,就像时执行了下面这两条命令一样:
git clone https://android.googlesource.com/platform/manifest
git checkout -b android-6.0.1_r1 origin/android-6.0.1_r1
这里我们指定了android-6.0.1_r1分支,因为不同分支对应支持不同的设备的,所以我们在明确我们的设备的情况下去选择不同分支,那么我们怎么知道哪些分支都支持哪些版本呢?下面给大家罗列一些6.0的!
MMB29Q android-6.0.1_r11 Marshmallow Nexus 5, Nexus 5X, Nexus 6, Nexus 6P, Nexus 7 (flo/deb)
MMB29T android-6.0.1_r10 Marshmallow Nexus Player
MMB29S android-6.0.1_r9 Marshmallow Nexus 5, Nexus 6, Nexus 9 (volantis/volantisg)
MMB29P android-6.0.1_r8 Marshmallow Nexus 5X, Nexus 6P
MMB29O android-6.0.1_r7 Marshmallow Nexus 7 (flo/deb)
MXB48K android-6.0.1_r5 Marshmallow Pixel C
MXB48J android-6.0.1_r4 Marshmallow Pixel C
MMB29M android-6.0.1_r3 Marshmallow Nexus 6P, Nexus Player
MMB29K android-6.0.1_r1 Marshmallow Nexus 5, Nexus 5X, Nexus 6, Nexus 7 (flo/deb), Nexus 9 (volantis/volantisg)
至此,我们的仓库就跟android-6.0.1_r1这个分支关联起来了!
三、同步源码
同步源码就简单多了,我们只需要用repo sync命令即可,但是有些问题要注意下,避免后面编译的时候踩坑!
1、保证文件系统够大,这是必须的,建议100G以上
2、在完成sync之后,建议多sync几次,以保证所有文件都同步下来了,否则一旦有文件缺失,很可能会导致后续编译的时候出问题的
3、最后就是,耐心点,几十个G的源码,耗时一辆天很正常!
ok,经过这些步骤,源码应该能下来了!后续会给大家分享一些编译编译环境的配置以及编译的过程!