repo系列讲解 —— Android系统源码(AOSP)下载

本文详细介绍了如何使用repo工具下载和管理Android系统的源码,包括repo的下载配置、初始化、同步源码的步骤,并解析了repoinit和reposync过程中涉及的仓库管理、项目清单、同步内容等关键概念,帮助读者深入理解repo在大型项目中的应用。

对于Android系统这种超大型项目,一般都会将其拆分为很多个git仓库进行管理(多达几百个)。如果这个时候还单一使用Git管理将会非常耗时,因此现在管理Android系统项目用的是repo工具。repo是一种使用python语言构建的基于git的仓库管理工具,可以批量且有效的组织众多的git仓库。

1. 下载并配置repo工具(掌握)

#下载repo文件到本地的/bin目录,如果放到别的路径需要将路径添加到系统变量$PATH中
sun@ubuntu:~$ curl https://storage.googleapis.com/git-repo-downloads/repo > /bin/repo

#给repo添加可执行权限
sun@ubuntu:~$ chmod a+x /bin/repo

2. 下载Android源码步骤(掌握)

以AOSP(Android Open Source Project)的Android9为例

2.1 初始化repo

#这里使用国内的清华源镜像,速度较官网快
sun@ubuntu:~/projects/AOSP4$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-9.0.0_r9 --repo-url=https://aosp.tuna.tsinghua.edu.cn/git-repo

2.2 同步源码到本地

sun@ubuntu:~$ repo sync -c
...
...
正在检出文件: 100% (4084/4084), 完成.prebuilts/gcc/darwin-x86/aarch64/aarch64-linux-android-4.9正在检出文件:   0% (14/4084)   
正在检出文件: 100% (10157/10157), 完成.
正在检出文件: 100% (1150/1150), 完成.
Checking out: 100% (668/668), done in 19m37.235s
repo sync has finished successfully.

3 下载源码过程解析(了解)

这部分有时间可以进行了解,内容较多。

3.1 repo init

3.1.1 常用选项

-u: 指定项目清单库的url地址
-m: 指定使用哪个项目清单文件
-b: 指定具体的分支,默认情况下指定master分支
–repo-url: 指定repo库的url地址
–config-name: 指定访问服务器的用户名和邮箱。这个选项后面不接内容,运行的时候会提示你输入用户名和邮箱

3.1.2 主要作用

repo init主要有两部分工作:下载两个git管理的仓库(repo库和manifest库)
repo库: 主要存放一些python脚本,配合之前说的repo脚本来共同管理众多源码仓库
manifest库: 项目清单库,用来管理各个版本的清单文件
在这里插入图片描述完成后AOSP目录的会出现一个.repo的隐藏文件夹,文件夹结构如下:

sun@sun-pc:~/project/AOSP4/.repo$ ll
总用量 24
drwxrwxr-x  5 sun sun 4096 118 15:23 ./
drwxrwxr-x  3 sun sun 4096 118 15:22 ../
drwxrwxr-x  2 sun sun 4096 118 15:23 manifests/
drwxrwxr-x  8 sun sun 4096 118 15:23 manifests.git/
-rw-rw-r--  1 sun sun  500 118 15:23 manifest.xml
drwxrwxr-x 11 sun sun 4096 118 15:23 repo/

3.1.3 解析repo init产生的内容

此时AOSP根目录下还没有代码,只有.repo目录中有所变化。

3.1.3.1 manifests

这个文件夹是由3.1.3.2所说的manifests.git进行维护的。文件夹中包含该分支(android-9.0.0_r9)的项目清单文件(AOSP目前每个分支下只维护default.xml这一个清单)

#-------------------------<< AOSP >>--------------------------------
#有多个分支
sun@sun-pc:~/project/AOSP/.repo/manifests$ git branch -avv
* default                                         d69a58cdc [origin/android-9.0.0_r9] Manifest for Android 9.0.0 Release 9
  remotes/origin/android-10.0.0_r1                151c2f061 Manifest for Android 10.0.0 release 1
  remotes/origin/android-10.0.0_r10               e3bacc7b4 Manifest for Android 10.0.0 Release 10
  ...
  
#每个分支只有一个清单default.xml
sun@sun-pc:~/project/AOSP/.repo/manifests$ ls
default.xml  GLOBAL-PREUPLOAD.cfg



#--------------------<< 实际开发中 >>---------------------------------
#通常一个代码服务器的清单库只有一个分支
sun@sun-pc:~/project/SIM8000/.repo/manifests$ git branch -avv
* default               0427dac [origin/master] SIM8000_PHONE.xml
  remotes/m/master      -> origin/master
  remotes/origin/master 0427dac SIM8000_PHONE.xml

#一个分支下会有很多的清单文件
sun@sun-pc:~/project/SIM8000/.repo/manifests$ ls
SIM8000_PHONE.xml  SIM8000_AUTOMOTIVE.xml SIM8000_TV.xml SIM8000_POS.xml

截取一部分default.xml的内容进行分析:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
  <remote  name="aosp"
           fetch=".."
           review="https://android-review.googlesource.com/" />
  <default revision="refs/tags/android-9.0.0_r9"
           remote="aosp"
           sync-j="4" />
  <project path="build/make" name="platform/build" groups="pdk" >
    <copyfile src="core/root.mk" dest="Makefile" />
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星际工程师

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值