Android系统 10.0 AOSP源码编译(二):AOSP源码下载

本文详细介绍了如何下载和编译Android 10.0 AOSP源码,包括使用repo工具,从中科大镜像站下载,以及处理常见错误的方法。此外,还提及了Android版本的更新和内核源码的获取。源码下载过程可能较长,建议使用中科大镜像以提高速度和稳定性。
摘要由CSDN通过智能技术生成

配套系列教学视频链接:

Android 10.0 AOSP源码编译:https://edu.csdn.net/course/detail/35479

Android 10.0 根文件系统和编译系统:https://edu.csdn.net/course/detail/35480 


说明

系统:AOSP Android10.0

设备:Android模拟器

前言

本章节重点介绍如何下载谷歌官方的AOSP源码。


一, 版本说明

谷歌发布新版本源码之后, 芯片原厂会根据自己的芯片特性进行适配,因为原厂适配Android系统更专业和稳定, 所以在实际开发中,我们都是从原厂或者方案公司那里获取到针对某个特定芯片的特定版本源码,当然了, 芯片原厂适配的周期也会长一些,  作为个人而言,如果想更早的获取到Android 源码, 并且想体现和了解最新版本源码和技术, 那么就可以直接自己去下载谷歌官方的源码。

Android版本说明:

Build

标记

版本

支持的设备

安全补丁程序级别

RP1A.201105.002

android-11.0.0_r17

Android11

Pixel 3、Pixel 3a、Pixel 3a XL、Pixel 3 XL、Pixel 4、Pixel 4a、Pixel 4 XL

2020-11-05

RD1A.201105.003.C1

android-11.0.0_r15

Android11

Pixel 4a (5G)、Pixel 5

2020-11-05

RD1A.201105.003.B1

android-11.0.0_r14

Android11

Pixel 4a (5G)、Pixel 5

2020-11-05

RD1A.201105.003.A1

android-11.0.0_r13

Android11

Pixel 4a (5G)、Pixel 5

2020-11-05

以上表格只摘取部分,详细的可以参考如下谷歌网站:

https://source.android.google.cn/setup/start/build-numbers?hl=zh-cn 

Android O(8.0)之后的版本, 相比之前的版本,设计了新的系统框架, 名为Treble项目,将框架和厂商实现部分严格隔离出来,如HIDL和VNDK技术, selinux权限管控,  并新增加了很多功能技术, 如System-as-root,强制A/B设备, 动态分区,APEX模块化升级等。

二, repo工具下载和安装

Android源码中集中了非常多的git子仓库, 为了方便有效的管理多git仓库, 谷歌利用repo对所有git仓库进行管理,并且让用户通过repo工具批量下载Android源码, 所以我们下载Android源码之前必须先安装repo工具, 同时需要注意的是, 因为国内网络的问题, 无法直接访问谷歌安卓源码服务器, 所以国内都是通过清华大学开源软件镜像站或者中科大AOSP镜像网站下载,个人强烈推荐中科大, 速度快,也比较稳定。直接在百度搜索AOSP中科大即可, 链接如下:

https://lug.ustc.edu.cn/wiki/mirrors/help/aosp/ (中科大)

Android源码下载官方指引:

https://source.android.google.cn/setup/build/downloading?hl=zh-cn

下载repo 方法:

mkdir ~/bin

PATH=~/bin:$PATH

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

## 如果上述 URL 不可访问,可以用下面的:

## curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo

chmod a+x ~/bin/repo

三, 源码下载

选定android-10.0.0_r45版本进行下载

##指定repo仓库服务器

export REPO_URL='https://mirrors.ustc.edu.cn/aosp/git-repo.git/'

##下载repo仓库,并指定android版本

repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-10.0.0_r45

##下载android源码, 建议用低于4个线程下载

repo sync  -j2

四, 出错处理

下载的过程中如果出错或者警告,可参考如下方法进行解决:

repo版本过低问题:

这是因为repo版本过低, 按照提示更新一下即可:

cp /mnt/extend_disk/android_src/android9.0/.repo/repo/repo /mnt/extend_disk/bin/repo

python版本过低问题:

下载源码需要python3.6,  Ubuntu16.04安装python3.6需做如下操作:

sudo add-apt-repository ppa:deadsnakes/ppa

sudo apt-get update

sudo apt-get install python3.6

 五, 内核源码下载(可选)

如果大家对下载android内核源码也敢兴趣, 可自行根据以下方法进行下载

git clone git://mirrors.ustc.edu.cn/aosp/kernel/goldfish.git

六, repo工作原理介绍

歌其实是建立了一个manifests仓库来维护Android源码, 而mainfests仓库保存这一个default.xml文件, 该文件就记录了Android源码中的各个子仓库的地址, 以及下载到本地哪个地方, 然后repo是用python编写的一个脚本, repo脚本就会根据default.xml中配置进行批量下载:

manifest的仓库地址如下所示, 也可以单独下载:

git clone git://mirrors.ustc.edu.cn/aosp/platform/manifest

 .repo/manifests/default.xml 部分内容语法介绍:
 

<?xml version="1.0" encoding="UTF-8"?>
<manifest>
   <!—remote标签指定远程仓库名字, 
        fetch是所有git url真正路径的前缀,所有git的project name加上这个前缀,就是git url的真正路径
        -->
  <remote  name="aosp"
           fetch="."
            /> 
  <!—default标签设定所有projects的默认属性值,如果在project元素里没有指定一个属性,
     则使用default元素的属性值 -->
  <default revision="master"
           remote="aosp"
           sync-j="4" />
    <!—project标签
    name :git 的名称,用于生成git url。URL格式是:${remote fetch}/${project name}.git 其中的 fetch就是上面提到的remote 中的fetch元素,
            name 就是此处的name
    path :clone到本地的git的工作目录,如果没有配置的话,跟name一样
    remote :定义remote name,如果没有定义的话就用default中定义的remote name
    revision :指定需要获取的git提交点,可以定义成固定的branch,或者是明确的commit 哈希值
    groups :列出project所属的组,以空格或者逗号分隔多个组名。所有的project都自动属于"all"组。每一个project自动属于-->
  <project path="build/make" name="platform/build" groups="pdk" >
    <copyfile src="core/root.mk" dest="Makefile" />
    <linkfile src="CleanSpec.mk" dest="build/CleanSpec.mk" />
    <linkfile src="buildspec.mk.default" dest="build/buildspec.mk.default" />
    <linkfile src="core" dest="build/core" />
    <linkfile src="envsetup.sh" dest="build/envsetup.sh" />
<linkfile src="target" dest="build/target" />
<!--   src表示在build/make/tools目录, dest表示本地路径build/tools软件链接文件链接到src-->
    <linkfile src="tools" dest="build/tools" />
  </project>
  <project path="build/blueprint" name="platform/build/blueprint" groups="pdk,tradefed" />
  <project path="build/kati" name="platform/build/kati" groups="pdk,tradefed" />
  <project path="build/soong" name="platform/build/soong" groups="pdk,tradefed" >
</manifest>

总结

Android源码下载尽量使用中科大的镜像, 下载需要时间比较长, 耐心等待即可。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

旗浩QH

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

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

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

打赏作者

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

抵扣说明:

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

余额充值