使用本地AOSP镜像快速获取Android代码

2024-03-04 12:18

本文主要是介绍使用本地AOSP镜像快速获取Android代码,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

说明

一次次的从AOSP mirror站点获取代码特别慢, 尤其是如果使用的还是google的AOSP Mirror而不是国内的. 因此如果在开发中需要经常性的切换Android branch/Tag, 对不同的Android版本进行开发验证与编译的话, 最好在本地建立一个次级的AOSP Mirror. 这样所有的Android版本都有了, 即节省了流量也节省了时间.


建立本地AOSP镜像

建立本地次级AOSP Mirror直接使用google提供的命令即可, 在repo init的命令后面加上--mirror即可, 例如下面是从TsingHua University的AOSP mirror获取本地一个Mirror.

repo init -u https://aosp.tuna.tsinghua.edu.cn/mirror/manifest --mirror

然后再直接repo sync即可.

如果需要更新本地的Mirror,那么定期repo sync即可.

下面我们假设我们的本地mirror放在了:

/ExtDisk/android/aosp_mirror/


如何使用

假设我们根据某个build wiki知道我们要使用某个manifest.xml来repo init, 那么在执行完这条repo init之后, 就有一个.repo文件夹:

repo init -u https://github.com/bluez-android/aosp_platform_manifest.git -b kitkat
$ ls .repo/
manifests  manifests.git  manifest.xml  repo

更改config文件

然后我们就需要更改fetch地址来使用我们的本地mirror了

打开.repo/manifests.git/config文件, 内容如下:

[core]repositoryformatversion = 0filemode = true
[filter "lfs"]smudge = git-lfs smudge --skip -- %f
[remote "origin"]url = https://github.com/bluez-android/aosp_platform_manifest.gitfetch = +refs/heads/*:refs/remotes/origin/*
[branch "default"]remote = originmerge = refs/heads/kitkat

将里面的url地址更改为我们本地的mirror地址:

url = /ExtDisk/android/aosp_mirror/platform/manifest.git

更改manifest.xml文件

将.repo/manifest.xml前面的

           fetch="https://android.googlesource.com/" />


更改成下面的.., 即:

<?xml version="1.0" encoding="UTF-8"?>
<manifest><remote  name="aosp"fetch=".." />

然后再进行repo sync即可. 例如:

repo sync --no-tags --no-clone-bundle


错误解决

如果没有正确更改,那么会出现找不到的提示:

Fetching project platform/external/valgrind
Fetching project platform/hardware/invensense
Fetching project platform/system/security
Fetching project platform/external/esd
fatal: repository 'https://github.com/platform/external/esd/' not found
fatal: repository 'https://github.com/platform/hardware/invensense/' not found
fatal: repository 'https://github.com/platform/system/security/' not found
fatal: repository 'https://github.com/platform/external/valgrind/' not found
此时可以确定更改, 然后再重新repo sync即可.

如果正确的话, 那么就在log中有类似下面的输出:

$ repo sync --no-tags --no-clone-bundle
Fetching project platform/external/valgrind
Fetching project platform/hardware/invensense
Fetching project platform/system/security
Fetching project platform/external/esd
remote: Counting objects: 25, done.
remote: Compressing objects: 100% (22/22), done.
remote: Total 25 (delta 0), reused 25 (delta 0)
From /ExtDisk/android/aosp_mirror/platform/external/esd* [new branch]      donut-release -> aosp/donut-release

注意里面的From XXX

同时也可以在repo sync的过程中, 进入到.repo中的project目录下, 去查看是否从本地Mirror中获取:

$ cd .repo/projects/bootable/diskinstaller.git
$ git remote -v
aosp	/ExtDisk/android/aosp_mirror/platform/bootable/diskinstaller (fetch)
aosp	/ExtDisk/android/aosp_mirror/platform/bootable/diskinstaller (push)


如果没有对应的Tag,那么会提示:

fatal: Couldn't find remote ref refs/heads/kitkat
fatal: The remote end hung up unexpectedly
fatal: Couldn't find remote ref refs/heads/kitkat
fatal: The remote end hung up unexpectedly


本地AOSP镜像的分享

本地repo其实属于一个文件夹, 因此问题就成了如何共享这个问题夹. 自然我们可以像google一样在本地设立一个gitweb, 然后让其他同事或者开发者将code.google.com类似的地址换成我们的本地服务器的IP地址即可, 当然也可以不用这么麻烦, 如果仅仅是局域网内, 那么可以选择使用nfs来共享, 将权限设置为ReadOnly即可.

那么其他开发者在mount了这个nfs directory之后就可以像使用本地Mirrors一样了. 


参考

清华大学的AOSP Mirror帮助页面

这篇关于使用本地AOSP镜像快速获取Android代码的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/773145

相关文章

中文分词jieba库的使用与实景应用(一)

知识星球:https://articles.zsxq.com/id_fxvgc803qmr2.html 目录 一.定义: 精确模式(默认模式): 全模式: 搜索引擎模式: paddle 模式(基于深度学习的分词模式): 二 自定义词典 三.文本解析   调整词出现的频率 四. 关键词提取 A. 基于TF-IDF算法的关键词提取 B. 基于TextRank算法的关键词提取

使用SecondaryNameNode恢复NameNode的数据

1)需求: NameNode进程挂了并且存储的数据也丢失了,如何恢复NameNode 此种方式恢复的数据可能存在小部分数据的丢失。 2)故障模拟 (1)kill -9 NameNode进程 [lytfly@hadoop102 current]$ kill -9 19886 (2)删除NameNode存储的数据(/opt/module/hadoop-3.1.4/data/tmp/dfs/na

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

Makefile简明使用教程

文章目录 规则makefile文件的基本语法:加在命令前的特殊符号:.PHONY伪目标: Makefilev1 直观写法v2 加上中间过程v3 伪目标v4 变量 make 选项-f-n-C Make 是一种流行的构建工具,常用于将源代码转换成可执行文件或者其他形式的输出文件(如库文件、文档等)。Make 可以自动化地执行编译、链接等一系列操作。 规则 makefile文件

使用opencv优化图片(画面变清晰)

文章目录 需求影响照片清晰度的因素 实现降噪测试代码 锐化空间锐化Unsharp Masking频率域锐化对比测试 对比度增强常用算法对比测试 需求 对图像进行优化,使其看起来更清晰,同时保持尺寸不变,通常涉及到图像处理技术如锐化、降噪、对比度增强等 影响照片清晰度的因素 影响照片清晰度的因素有很多,主要可以从以下几个方面来分析 1. 拍摄设备 相机传感器:相机传

电脑桌面文件删除了怎么找回来?别急,快速恢复攻略在此

在日常使用电脑的过程中,我们经常会遇到这样的情况:一不小心,桌面上的某个重要文件被删除了。这时,大多数人可能会感到惊慌失措,不知所措。 其实,不必过于担心,因为有很多方法可以帮助我们找回被删除的桌面文件。下面,就让我们一起来了解一下这些恢复桌面文件的方法吧。 一、使用撤销操作 如果我们刚刚删除了桌面上的文件,并且还没有进行其他操作,那么可以尝试使用撤销操作来恢复文件。在键盘上同时按下“C

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

Android实现任意版本设置默认的锁屏壁纸和桌面壁纸(两张壁纸可不一致)

客户有些需求需要设置默认壁纸和锁屏壁纸  在默认情况下 这两个壁纸是相同的  如果需要默认的锁屏壁纸和桌面壁纸不一样 需要额外修改 Android13实现 替换默认桌面壁纸: 将图片文件替换frameworks/base/core/res/res/drawable-nodpi/default_wallpaper.*  (注意不能是bmp格式) 替换默认锁屏壁纸: 将图片资源放入vendo

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]