Android 内核开发之—— repo 使用教程

前言

repo 是一个用于管理多个 Git 仓库的工具,特别适用于管理大型项目如 Android 的源码。它是由 Google 开发的,用于解决多个 Git 仓库的同步、管理和代码审查等问题。因此,做 Android 内核开发,首先要了解 repo 是什么,它是如何使用的?

1 repo 的概念

repo 是一种代码版本管理工具,它是由一系列的 Python 脚本组成,封装了一系列的 Git 命令,用来统一管理多个 Git 仓库。

2 repo 的作用

Android 源码引用了很多开源项目,每一个子项目都是一个 Git 仓库,每个 Git 仓库都有很多分支版本,为了方便统一管理各个子项目的 Git 仓库,需要一个上层工具批量进行处理,因此 repo 诞生。

repo 也会建立一个 Git 仓库,用来记录当前 Android 版本下各个子项目的 Git 仓库分别处于哪一个分支,这个仓库通常叫做:manifest 仓库。

3 repo 的安装

官方的 repo 脚本下载方法:

powershell 复制代码
curl http://commondatastorage.googleapis.com/git-repo-downloads/repo >  ./repo

由于官网被墙,目前可以使用的 repo 脚本下载方法如下(clone 命令两者选一):

powershell 复制代码
$ git clone git://git.omapzoom.org/git-repo.git
$ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/  
powershell 复制代码
$ cp git-repo/repo  ./repo

4 源码的下载

Android 源码分支其实由一个叫 manifest 仓库来管理起来的,因此,下载源码首先要 clone 这个 manifest 仓库。这个仓库里面有一个 XML 文件,其实就是一个文件清单,列出了本代码仓库依赖哪些代码,该去哪下载,分支是什么。

一般用 repo init 命令来 clone 这个 manifest 仓库,例如,如果要下载 Android 源码,则方法如下:

powershell 复制代码
$ repo init -u https://android.googlesource.com/platform/manifest

当然,上面的官网被墙了,因此,推荐如下镜像(两者选一):

powershell 复制代码
$ repo init -u git://git.omapzoom.org/platform/manifest.git
powershell 复制代码
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest

初始化完毕后,你会在本地的.repo 文件夹中看到 manifest 仓库的内容,这个文件夹中最重要的文件是 manifest.xml(有的仓库用的是 default.xml,然后指向具体的 xml),它就是上面说到的文件清单。

如果要选择特定版本的 Android 源码,或者在已下载的源码基础上切换到其他版本,则可以使用-b选项:

powershell 复制代码
$ repo init -u git://git.omapzoom.org/platform/manifest.git -b android-13.0.0_r3
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest -b android-13.0.0_r3

然后使用 repo sync 命令进行同步即可下载好全部的 Android 源码了。

5 manifest.xml 文件清单的组成

上面提到了 repo init 需要初始化一个 manifest 仓库,仓库中含有一个很重要的 manifest.xml 文件清单,其实这个 manifest.xml 并不复杂的,它就是用 XML 文件的格式记录了本项目依赖的各个 Git 仓库的名称、地址,以及分支等信息。常用的元素如下所示:

  1. manifest 最顶层的 XML 元素
  2. remote 设置远程 git 服务器的属性,如名称、根 URL 地址等
  3. project 需要 clone 的 Git 仓库,path 表示本机路径,name 表示远程版本库的相对路径
  4. copyfile 执行拷贝操作,把URL/ s r c 地址的文件拷贝到 . / src地址的文件拷贝到./ src地址的文件拷贝到./dest
    其实,如果不使用 repo 工具,也是可以对照 manifest.xml 文件清单直接使用"git clone"的方式一个 project 一个 project 的下载的,然后对每个 project 进行 git checkout 特定的分支。

6 常用 repo 命令

常用命令如下:

  1. 初始化 repo 仓库
powershell 复制代码
repo init
  1. 下载最新源码
powershell 复制代码
repo sync
  1. 创建分支
powershell 复制代码
repo start
  1. 换分支
powershell 复制代码
repo checkout
  1. 查看分支
powershell 复制代码
repo branches
  1. 查看文件状态
powershell 复制代码
repo status
  1. 查看修改
powershell 复制代码
repo diff
  1. 查看仓库信息
powershell 复制代码
repo info
相关推荐
wstcl1 小时前
安卓app、微信小程序等访问多个api时等待提示调用与关闭问题
android·微信小程序·webapi
Revol_C2 小时前
【Git 操作笔记】第1期--云代码仓库更换服务商,本地如何批量更新对应项目的git地址(持续更新...)
前端·git
louisgeek2 小时前
Android Studio 打印中文乱码
android
眼镜会飞3 小时前
Flutter 3.x新版android端的build.gradle.kts文件配置arm64-v8a和armeabi-v7a等
android·前端·flutter
vocal3 小时前
【我的安卓第一课】Activity 的伙伴 Fragment
android
猫头虎3 小时前
开源协议区别与限制详解:Fork、改名、再发布是否合法?(MIT、Apache、GPL、BSD、SSPL、BSL)
git·开源·github·apache·开源软件·开源协议·gitcode
Nayuta4 小时前
字节跳动「移动 OS 部门」招聘安卓工程师,AI+OS 方向
android
00后程序员张4 小时前
iOS 应用上架常见问题与解决方案,多工具组合的实战经验
android·ios·小程序·https·uni-app·iphone·webview
恋猫de小郭4 小时前
Flutter 小技巧之有趣的 UI 骨架屏框架 skeletonizer
android·前端·flutter
Kapaseker5 小时前
Kotlin 老手怎么写代码?
android·kotlin