AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82

news2025/1/16 11:09:21

篇头

最近写文章,反复多次折腾AOSP代码,因通过网络repo sync aosp代码,能一次顺利下载的概率很低,以前就经常遇到,但从未总结,导致自己也要回头检索方法,所以觉得可以总结一下,涉及下载最新、各分支AOSP代码的方法,以及如何处理所遇到的同步错误及其解决方法,现分享给大家~

一、下载源码包及repo

  • 包含 aosp-latest.tar 和 repo程序
  • 下载TAG包,可以节约很多时间
(1)下载初始化包,约 60GB 数据,建议复制地址,直接使用迅雷下载
szhou@bc-R01:~/works$curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar 

(2)解压
szhou@bc-R01:~/works$ mkdir aosp
szhou@bc-R01:~/works$ tar -xvf aosp-latest.tar  -C aosp/

(3)下载repo
szhou@bc-R01:~/works/aosp$ mkdir bin
szhou@bc-R01:~/works/aosp$ curl https://storage.googleapis.com/git-repo-downloads/repo > bin/repo

szhou@bc-R01:~/works/aosp$ curl https://storage.googleapis.com/git-repo-downloads/repo > bin/repo  
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 48143  100 48143    0     0  48336      0 --:--:-- --:--:-- --:--:-- 48287

(4)部署repo
szhou@bc-R01:~/works/aosp$ chmod a+x bin/repo  
szhou@bc-R01:~/works/aosp$ sudo cp bin/repo /usr/bin/
[sudo] password for szhou: 
szhou@bc-R01:~/works/aosp$ 

二、代码更新

2.1 目录情况

  • 解压后,在aosp目录下,只有.repo目录,还需要同步代码和检出代码
szhou@bc-R01:~/works/aosp/aosp$ ls -al
total 12
drwxr-xr-x 3 szhou szhou 4096 101 00:00 .
drwxrwxr-x 4 szhou szhou 4096 1224 00:39 ..
drwxr-xr-x 7 szhou szhou 4096 101 00:45 .repo
szhou@bc-R01:~/works/aosp/aosp$ 

2.2 更新.repo/repo 程序

  • 第一次更新AOSP源码,记得执行此步骤,可以减少后续repo sync错误
szhou@bc-R01:~/works/aosp/aosp$ ls -al
total 12
drwxr-xr-x 3 szhou szhou 4096 101 00:00 .
drwxrwxr-x 4 szhou szhou 4096 1224 00:39 ..
drwxr-xr-x 7 szhou szhou 4096 101 00:45 .repo
szhou@bc-R01:~/works/aosp/aosp$ cd .repo/repo/
szhou@bc-R01:~/works/aosp/aosp/.repo/repo$ git pull
remote: Enumerating objects: 263, done.
remote: Counting objects: 100% (191/191), done.
remote: Compressing objects: 100% (138/138), done.
remote: Total 263 (delta 152), reused 55 (delta 53), pack-reused 72
Receiving objects: 100% (263/263), 264.03 KiB | 11.00 MiB/s, done.
Resolving deltas: 100% (158/158), completed with 12 local objects.
From https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
   1e9f7b9..4c80921  stable     -> origin/stable
   83c66ec..b1d1ece  main       -> origin/main
 * [new tag]         v2.40      -> v2.40
 * [new tag]         v2.38      -> v2.38
 * [new tag]         v2.39      -> v2.39
Updating 1e9f7b9..4c80921
Fast-forward
 .github/workflows/close-pull-request.yml |   22 +++
 .github/workflows/test-ci.yml            |    5 +-
 color.py                                 |    4 +-
…… 略……
 tests/test_wrapper.py                    |    2 +-
 tox.ini                                  |    7 +-
 60 files changed, 3043 insertions(+), 2389 deletions(-)
 create mode 100644 .github/workflows/close-pull-request.yml
 create mode 100644 git_trace2_event_log_base.py
szhou@bc-R01:~/works/aosp/aosp/.repo/repo$ 

操作如下图所示

2.3 查看可用分支

  • 可见13的最新版本为:remotes/origin/android-13.0.0_r82, 即r82版本
  • 通过修改grep后的过滤条件,也可以查看其他版本情况
szhou@bc-R01:~/works/aosp/aosp/.repo/manifests.git$ git branch -av | grep android-13
  remotes/origin/android-13.0.0_r1                                       0f42cde46 Manifest for Android 13.0.0 Release 1 (TP1A.220624.014)
  remotes/origin/android-13.0.0_r10                                      e64b26003 Manifest for Android 13.0.0 Release 10
…… 略 ……
  remotes/origin/android-13.0.0_r80                                      4ca496b8e Manifest for Android 13.0.0 Release 80
  remotes/origin/android-13.0.0_r81                                      259db423b Manifest for Android 13.0.0 Release 81
  remotes/origin/android-13.0.0_r82                                      ed487956f Manifest for Android 13.0.0 Release 82
  remotes/origin/android-13.0.0_r9                                       0bac787fd Manifest for Android 13.0.0 Release 9
szhou@bc-R01:~/works/aosp/aosp/.repo/manifests.git$ 

操作如下图所示

2.4 配置Python

  • 当前AOSP代码需要Python 3.6以上版本,才可正常使用

2.4.1 Python版本导致的repo sync错误

szhou@bc-R01:~/works/aosp/aosp/.repo/manifests.git$ cd ../..
szhou@bc-R01:~/works/aosp/aosp$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r82
  File "/usr/bin/repo", line 51
    def print(self, *args, **kwargs):
            ^
SyntaxError: invalid syntax
szhou@bc-R01:~/works/aosp/aosp$ python --version
Python 2.7.18
szhou@bc-R01:~/works/aosp/aosp$ 

2.4.2 查看可用的Python版本

  • 常用Python,至少需安装2.7和3.6以上,两个版本
sudo apt-get install python2.7
(1)查看已安装的Python有哪些版本
szhou@bc-R01:~/works/aosp/aosp$ ls -l /usr/bin/python*
lrwxrwxrwx 1 root root      24 1210 20:34 /usr/bin/python -> /etc/alternatives/python
lrwxrwxrwx 1 root root       9 313  2020 /usr/bin/python2 -> python2.7
-rwxr-xr-x 1 root root 3662032 71  2022 /usr/bin/python2.7
lrwxrwxrwx 1 root root      33 71  2022 /usr/bin/python2.7-config -> x86_64-linux-gnu-python2.7-config
lrwxrwxrwx 1 root root      16 313  2020 /usr/bin/python2-config -> python2.7-config
lrwxrwxrwx 1 root root       9 1210 08:57 /usr/bin/python3 -> python3.8
-rwxr-xr-x 1 root root 5465880 1122 18:22 /usr/bin/python3.8
lrwxrwxrwx 1 root root      33 1122 18:22 /usr/bin/python3.8-config -> x86_64-linux-gnu-python3.8-config
lrwxrwxrwx 1 root root      16 313  2020 /usr/bin/python3-config -> python3.8-config
-rwxr-xr-x 1 root root     384 125  2023 /usr/bin/python3-futurize
-rwxr-xr-x 1 root root     388 125  2023 /usr/bin/python3-pasteurize
lrwxrwxrwx 1 root root      14 415  2020 /usr/bin/python-config -> python2-config
szhou@bc-R01:~/works/aosp/aosp$

2.4.3 配置多Python版本支持

  • 本人系统中已安装2.7和3.8两个版本
(1)配置多版本支持
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.8 2

(2)执行 --config python后,选择Python3.8, 编号为2
szhou@bc-R01:~/works/aosp/aosp$  sudo update-alternatives --config python
[sudo] password for szhou: 
There are 2 choices for the alternative python (providing /usr/bin/python).

  Selection    Path                Priority   Status
------------------------------------------------------------
  0            /usr/bin/python3.8   2         auto mode
* 1            /usr/bin/python2.7   1         manual mode
  2            /usr/bin/python3.8   2         manual mode

Press <enter> to keep the current choice[*], or type selection number: 2
update-alternatives: using /usr/bin/python3.8 to provide /usr/bin/python (python) in manual mode
szhou@bc-R01:~/works/aosp/aosp$ 

(3)查看版本设置情况
szhou@bc-R01:~/works/aosp/aosp$ python --version
Python 3.8.10
szhou@bc-R01:~/works/aosp/aosp$ 

2.5 repo init 初始化分支

  • 为了节约repo sync时间,我们可以选定只同步目标分支:android-13.0.0_r82
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r82

2.6 repo sync

  • 加上 -c 参数,仅同步当前android-13.0.0_r82分支,节约下载时间
szhou@bc-R01:~/works/aosp/aosp$ repo sync -c

三、解决repo sync 错误

3.1 Python 版本引起的错误

  • 解决办法: 建议切换到3.8及以上版本
  • 多版本支持,请查看本文第2.4.1节
szhou@bc-R01:~/works/aosp/aosp/.repo/manifests.git$ cd ../..
szhou@bc-R01:~/works/aosp/aosp$ repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r82
  File "/usr/bin/repo", line 51
    def print(self, *args, **kwargs):
            ^
SyntaxError: invalid syntax
szhou@bc-R01:~/works/aosp/aosp$ python --version
Python 2.7.18
szhou@bc-R01:~/works/aosp/aosp$ 

3.2 repo脚本偏旧导致的错误

  • 解决办法:切换到aosp/.repo/repo目录下,执行git pull
szhou@oa-R630:~/works/aosp$ /home/szhou/Downloads/aosp/bin/repo sync -c  
Fetching: 100% (1146/1146), done in 11m43.689s
info: A new version of repo is available
repo: Updating release signing keys to keyset ver 2.3
warning: repo is not tracking a remote branch, so it will not receive updates
================================================================================
Repo command failed: RepoUnhandledExceptionError
szhou@oa-R630:~/works/aosp$ 
szhou@oa-R630:~/works/aosp/.repo/repo$ git pull

3.3 repo sync 数据错误

3.3.1 类型1:error: in sync -lc: revision refs xxx

  • 解决办法:
  • (1)找到事故目标: .repo/projects/device 或 .repo/projects/device /google/raviole-kernel
  • (2)删除 rm -rf .repo/projects/device
  • (3)更准确点:rm -rf .repo/projects/device /google/raviole-kernel
  • (4)继续repo sync -c 同步代码
szhou@oa-R630:~/works/aosp$ /home/szhou/Downloads/aosp/bin/repo sync -c 
error: Cannot checkout device/google/raviole-kernel: ManifestInvalidRevisionError: revision refs/tags/android-13.0.0_r82 in device/google/raviole-kernel not found
error: in `sync -c`: revision refs/tags/android-13.0.0_r82 in device/google/raviole-kernel not found
szhou@oa-R630:~/works/aosp$ ls -al
total 24
drwxr-xr-x  6 szhou szhou 4096 1220 11:11 .
drwxrwxr-x  5 szhou szhou 4096 1220 10:53 ..
drwxrwxr-x 36 szhou szhou 4096 1220 11:11 art
drwxrwxr-x  4 szhou szhou 4096 1220 11:11 device
drwxrwxr-x  3 szhou szhou 4096 1220 11:11 external
drwxr-xr-x  7 szhou szhou 4096 1220 11:10 .repo
szhou@oa-R630:~/works/aosp$ cd .repo/
manifests/       manifests.git/   project-objects/ projects/        repo/            
szhou@oa-R630:~/works/aosp$ cd .repo/manifests.git/
branches/ hooks/    info/     logs/     objects/  refs/     
szhou@oa-R630:~/works/aosp$ cd .repo/
manifests/       manifests.git/   project-objects/ projects/        repo/            
szhou@oa-R630:~/works/aosp$ cd .repo/manifests
manifests/     manifests.git/ 
szhou@oa-R630:~/works/aosp$ cd .repo/
manifests/       manifests.git/   project-objects/ projects/        repo/            
szhou@oa-R630:~/works/aosp$ cd .repo/projects/
art.git/              build/                developers/           external/             kernel/               packages/             prebuilts/            test/                 
bionic.git/           cts.git/              development.git/      frameworks/           libcore.git/          pdk.git/              sdk.git/              toolchain/            
bootable/             dalvik.git/           device/               hardware/             libnativehelper.git/  platform_testing.git/ system/               tools/                
szhou@oa-R630:~/works/aosp$ cd .repo/projects/device
szhou@oa-R630:~/works/aosp/.repo/projects/device$ cd -
/home/szhou/works/aosp
szhou@oa-R630:~/works/aosp$ rm -rf  .repo/projects/device
szhou@oa-R630:~/works/aosp$ /home/szhou/Downloads/aosp/bin/repo sync -c  

3.3.1 类型2:Unable to fully sync the tree

  • 如下,虽然同步完成了,但提示了一些错误
  • 解决办法:
  • (1)锁定Failing repos目标
  • (2)逐个删除,例如 rm -rf device/generic/trusty device/generic/uml art ……
  • (3)继续执行 repo sync -c, 直至无错误100%完成同步
Checking out: 100% (1145/1145), done in 10m12.341s
error: Unable to fully sync the tree
error: Checking out local projects failed.
Failing repos:
device/generic/trusty
device/generic/uml
device/generic/vulkan-cereal
art
device/google/pantah-sepolicy
device/google/raviole
Try re-running with "-j1 --fail-fast" to exit at the first error.
================================================================================
Repo command failed due to the following `SyncError` errors:
device/generic/trusty checkout 05e24c85c2a542498ccf2983d898fcf0e6f9edd2 
device/generic/uml checkout 60bc18c3a72bbed9640edaba4422fec18f36d6e9 
device/generic/vulkan-cereal checkout 4b79dc90f067220adcc37bc24dae8f211ebe2d17 
platform/art checkout b4ac1db327a419fb87e83c8b6f9825bc5fc126c3 
device/google/pantah-sepolicy checkout 28219f7c6376cd1a810517d770029439dde653d5 
+1 additional errors...
szhou@oa-R630:~/works/aosp$ 

四、代码同步成功

  • 同步成功后,画面如下所示

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1331633.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

python+django疾病健康知识科普推荐系统

基于智能推荐的卫生健康系统通过信息化技术,研究健康管理倌息的获取、传输、处理和反馈,实现区域一体化协同医疗健康服务,建立高品质与高效率的健康监测、疾病防治服务体系、健康生活方式与健康风险评价体系,达到改善健康状况、防治常见和慢性疾病的发生和发展、提高生命质量、…

docker笔记1-安装与基础命令

docker的用途&#xff1a; 可以把应用程序代码及运行依赖环境打包成镜像&#xff0c;作为交付介质&#xff0c;在各种环境部署。可以将镜像&#xff08;image&#xff09;启动成容器&#xff08;container&#xff09;&#xff0c;并提供多容器的生命周期进行管理&#xff08;…

Netty-2-数据编解码

解析编解码支持的原理 以编码为例&#xff0c;要将对象序列化成字节流&#xff0c;你可以使用MessageToByteEncoder或MessageToMessageEncoder类。 这两个类都继承自ChannelOutboundHandlerAdapter适配器类&#xff0c;用于进行数据的转换。 其中&#xff0c;对于MessageToMe…

数据结构-如何巧妙实现一个栈?逐步解析与代码示例

文章目录 引言1.栈的基本概念2.选择数组还是链表&#xff1f;3. 定义栈结构4.初始化栈5.压栈操作6.弹栈操作7.查看栈顶和判断栈空9.销毁栈操作10.测试并且打印栈内容栈的实际应用结论 引言 栈是一种基本但强大的数据结构&#xff0c;它在许多算法和系统功能中扮演着关键角色。…

智能优化算法应用:基于天鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于天鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于天鹰算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.天鹰算法4.实验参数设定5.算法结果6.参考文献7.MA…

oracle恢复分片和非分片备份?

分片备份命令参考&#xff1a;适合大数据库并行备份提高备份速度 对于超大数据库&#xff0c;混合有小文件和大文件表空间&#xff0c;section size 表示分片&#xff0c;大小一般大于32G&#xff0c;可结合通道数量设置最佳值。 run { allocate channel t1 type disk; alloc…

PostGreSQL:货币类型

货币类型&#xff1a;money money类型存储固定小数精度的货币数字&#xff0c;小数的精度由数据库的lc_monetary设置决定。windows系统下&#xff0c;该配置项位于/data/postgresql.conf文件中&#xff0c;默认配置如下&#xff0c; lc_monetary Chinese (Simplified)_Chi…

redis基本用法学习(C#调用CSRedisCore操作redis)

除了NRedisStack包&#xff0c;csredis也是常用的redis操作模块&#xff08;从EasyCaching提供的常用redis操作包来看&#xff0c;CSRedis、freeredis、StackExchange.Redis应该都属于常用redis操作模块&#xff09;&#xff0c;本文学习使用C#调用CSRedis包操作redis的基本方式…

【Spring Security】打造安全无忧的Web应用--使用篇

&#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 接下来看看由辉辉所写的关于Spring Security的相关操作吧 目录 &#x1f973;&#x1f973;Welcome Huihuis Code World ! !&#x1f973;&#x1f973; 一.Spring Security中的授权是…

阿贝云云服务器

最近&#xff0c;我有幸获得了阿贝云提供的免费云服务器&#xff0c;阿贝云_免费云服务器、高防服务器、虚拟主机、免费空间、免费vps主机服务商!并在使用过程中有了一些深刻的体验和感受。在这篇博客中&#xff0c;我将分享我对阿贝云免费云服务器的使用感受和评价。 首先&am…

【iOS】UICollectionView

文章目录 前言一、实现简单九宫格布局二、UICollectionView中的常用方法和属性1.UICollectionViewFlowLayout相关属性2.UICollectionView相关属性 三、协议和代理方法&#xff1a;四、九宫格式的布局进行升级五、实现瀑布流布局实现思路实现原理代码调用顺序实现步骤实现效果 总…

需求分析工程师岗位的职责描述(合集)

需求分析工程师岗位的职责描述1 职责&#xff1a; 1&#xff0c;负责需求调研&#xff0c;对需求进行分析&#xff0c;编写解决方案、需求规格说明书等 2&#xff0c;根据需求制作原型&#xff0c;并负责原型展示以及客户沟通等工作 3&#xff0c;负责向技术团队精确地传达业务…

排序算法——桶排序

把数据放进若干个桶&#xff0c;然后在桶里用其他排序&#xff0c;近乎分治思想。从数值的低位到高位依次排序&#xff0c;有几位就排序几次。例如二位数就排两次&#xff0c;三位数就排三次&#xff0c;依次按照个十百...的顺序来排序。 第一次排序&#xff1a;50 12 …

Unity手机移动设备重力感应

Unity手机移动设备重力感应 一、引入二、介绍三、测试成果X Y轴Z轴横屏的手机&#xff0c;如下图竖屏的手机&#xff0c;如下图 一、引入 大家对重力感应应该都不陌生&#xff0c;之前玩过的王者荣耀的资源更新界面就是使用了重力感应的概念&#xff0c;根据手机的晃动来给实体…

EPROM 作为存储器的 8 位单片机

一、基本概述 TX-P01I83 是以 EPROM 作为存储器的 8 位单片机&#xff0c;专为多 IO 产品的应用而设计&#xff0c;例如遥控器、风扇/灯光控制或是 玩具周边等等。采用 CMOS 制程并同时提供客户低成本、高性能等显着优势。TX-P01I83 核心建立在 RISC 精简指 令集架构可以很容易…

SQL优化-深入了解SQL处理流程原理(Server层与存储引擎交互、数据管理结构)

做SQL优化的前提就必须要清楚当一个SQL被发送到Mysql时&#xff0c;它的处理流程。下面通过一个SQL优化分析过程来详细了解Mysql对SQL执行流程原理。 1、Mysql架构 在上篇文章中已经做了简单架构介绍&#xff0c;Mysql架构分为两个大的组件&#xff1a;Server层、存储层 Mysq…

vue3项目 - Eslint 配置代码风格

Eslint 自定义配置 总结&#xff1a; Prettier &#xff08;代码规范的插件&#xff0c;格式化 &#xff09;---> 美观 Eslint &#xff08;规范、纠错、检验错误 &#xff09;-----> 纠错 首先&#xff0c;禁用 Prettier 插件&#xff0c;安装 ESLint 插件&#x…

【量化金融】证券投资学

韭菜的自我修养 第一章&#xff1a; 基本框架和概念1.1 大盘底部形成的技术条件1.2 牛市与熊市1.3 交易系统1.3.1 树懒型交易系统1.3.2 止损止损的4个技术 第二章&#xff1a;证券家族4兄弟2.1 债券&#xff08;1&#xff09;债券&#xff0c;是伟大的创新&#xff08;2&#x…

案例147:基于微信小程序的酒店管理系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

重构云计算,打造 AI 原生时代的云计算产品与技术体系,实现 AI 零距离

概述 自 ChatGPT 大模型横空出世以来&#xff0c;文心一言、通义千问等诸多大模型接踵而来&#xff0c;感觉这个世界每天都在发生着翻天覆地的变化。 今年很有幸&#xff0c;参与了云栖的盛宴&#xff0c;当时被震惊到瞠目结舌&#xff0c;12 月 20 日百度云智能云智算大会&a…