当前位置: 首页 > article >正文

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 脚本下载方法:

curl http://commondatastorage.googleapis.com/git-repo-downloads/repo >  ./repo

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

$ git clone git://git.omapzoom.org/git-repo.git
$ git clone git://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/  
$ cp git-repo/repo  ./repo

4 源码的下载

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

$ repo init -u https://android.googlesource.com/platform/manifest

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

$ repo init -u git://git.omapzoom.org/platform/manifest.git
$ repo init -u git://aosp.tuna.tsinghua.edu.cn/android/platform/manifest

初始化完毕后,你会在本地的.repo 文件夹中看到 manifest 仓库的内容,这个文件夹中最重要的文件是 manifest.xml(有的仓库用的是 default.xml,然后指向具体的 xml),它就是上面说到的文件清单。
如果要选择特定版本的 Android 源码,或者在已下载的源码基础上切换到其他版本,则可以使用-b选项:

$ 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 仓库
repo init
  1. 下载最新源码
repo sync
  1. 创建分支
repo start
  1. 换分支
repo checkout
  1. 查看分支
repo branches
  1. 查看文件状态
repo status
  1. 查看修改
repo diff
  1. 查看仓库信息
repo info

http://www.kler.cn/news/315676.html

相关文章:

  • Kotlin 函数和变量(四)
  • 双向链表:实现、操作与分析【算法 17】
  • 【Fastapi】参数获取,json和query
  • 深度学习02-pytorch-05-张量的索引操作
  • 2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)
  • Android 车载应用开发指南 - CarService 详解(下)
  • 在Spring Boot中实现多环境配置
  • 汽车总线之----FlexRay总线
  • LeetCode_sql_day31(1384.按年度列出销售总额)
  • C# 委托与事件 观察者模式
  • Java项目实战II基于Java+Spring Boot+MySQL的植物健康系统(开发文档+源码+数据库)
  • 设计模式之复合模式
  • 高级java每日一道面试题-2024年9月16日-框架篇-Spring MVC和Struts的区别是什么?
  • Redis发布和订阅
  • 波分技术基础 -- Liquid OTN技术特性
  • 高效打造知识图谱,使用LlamaIndex Relik实现实体关联和关系抽取
  • 火车站高铁站站点时刻查询网站计算机毕设/动车站点时刻查询
  • WebRTC编译后替换libwebrtc.aar时提示找不到libjingle_peerconnection_so.so库
  • 基于单片机控制的程控开关电源研究
  • list(一)
  • 基于微信小程序的健身房管理系统
  • ROS第五梯:ROS+VSCode+C++单步调试
  • [Golang] Context
  • GNU链接器(LD):设置入口点(ENTRY命令)的用法及实例解析
  • 科研绘图系列:R语言箱线图(boxplot)
  • error -- unsupported GNU version gcc later than 10 are not supported;(gcc、g++)
  • 计算机毕业设计 基于SpringBoot的小区运动中心预约管理系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 【python】深度优先搜索文件夹并移动全部doc文件
  • 自闭症儿童寄宿学校:打造良好的学习和生活环境
  • 速盾:高防cdn除了快还有什么好处?