AOSP icon indicating copy to clipboard operation
AOSP copied to clipboard

如何下载Android源码

Open foxleezh opened this issue 7 years ago • 21 comments

前言

源码下载是我们分析源码的开始,Android源码可以全量下载,也可以单个下载,我们先介绍全量下载

全量下载

官方文档 https://source.android.com/source/downloading ,只要按照上面一步步做就可以了,但是由于需要翻墙,国内无法直接访问,而整个Android项目源码巨大,即便是翻墙后下载也很慢,所以还是使用国内镜像比较好。

我推荐清华大学开源镜像,地址 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/ ,这上面也是有完整的教程,我就不复制粘贴了,但是有一点要注意,你一定要备一个比较大的磁盘,至少60个G吧,还不算后期编译的。

我们分析源码其实是不需要全部代码的,因为AOSP不仅包括系统源码,还有些工具代码,如aapt,adb等,这些我们根本不需要,而且即便是系统源码,也不是所有我们都需要看,如果真的全部看,你这辈子都看不完,所以我还是推荐大家单个下载。

单个下载

官方地址 https://android.googlesource.com/ ,比如我们要下载platform/frameworks/base/目录下的代码,我们可以git clone https://android.googlesource.com/platform/frameworks/base ,不过这个还是会遇到翻墙的问题,当然我们也可以用镜像。

镜像地址 https://aosp.tuna.tsinghua.edu.cn/ ,比如我们要下载platform/frameworks/base/目录,就用git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base ,如果你带宽够的话,一般几分钟就可以下载好你想要的单个源码了。

如果你想下载单个文件,或者搜索文件名及代码,可以访问 http://androidxref.com/ ,这里有部分Android的源码

目录结构

先上一张图,整个Android项目的架构图

我们都知道Android系统从上到下大致分为这四层,所以我们以这四层为基础,讲解下AOSP的目录结构:

  • 第一层:应用程序层(applications)对应根目录下platform/packages/apps
  • 第二层:应用程序框架层(application framework)对应根目录下的platform/frameworks
  • 第三层:运行库层包括运行库(libraries)和android运行时环境(android runtime)
  • 第四层:Linux内核层对应根目录下的kernel,每一个目录对应了一个kernel的版本,因为Android要兼容各种芯片,我们主要看的有两个,一是goldfish,这是模拟器用的内核,一是msm,这个是高通的内核,下面罗列一下:
    • goldfish 项目包含适用于所模拟的平台的内核源代码。
    • msm 项目包含适用于 ADP1、ADP2、Nexus One、Nexus 4、Nexus 5、Nexus 6、Nexus 5X、Nexus 6P、Nexus 7 (2013)、Pixel 和 Pixel XL 的源代码,可用作使用 Qualcomm MSM 芯片组的起点。
    • omap 项目用于 PandaBoard 和 Galaxy Nexus,可用作使用 TI OMAP 芯片组的起点。
    • samsung 项目用于 Nexus S,可用作使用 Samsung Hummingbird 芯片组的起点。
    • tegra 项目用于 Xoom、Nexus 7 (2012)、Nexus 9,可用作使用 NVIDIA Tegra 芯片组的起点。
    • exynos 项目包含适用于 Nexus 10 的内核源代码,可用作使用 Samsung Exynos 芯片组的起点。
    • x86_64 项目包含适用于 Nexus Player 的内核源代码,可用作使用 Intel x86_64 芯片组的起点。
    • hikey-linaro 项目用于 HiKey 参考板,可用作使用 HiSilicon 620 芯片组的起点。
  • 三、四层中间还有个硬件抽象层(HAL)对应根目录下的platform/hardware

目前我下载的目录如下:

git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps/Launcher2
git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base
git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/native
git clone https://aosp.tuna.tsinghua.edu.cn/platform/system/core
git clone https://aosp.tuna.tsinghua.edu.cn/platform/bionic
git clone https://aosp.tuna.tsinghua.edu.cn/platform/libcore
git clone https://aosp.tuna.tsinghua.edu.cn/platform/art
git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm

foxleezh avatar Oct 09 '17 06:10 foxleezh

很专业

may7be avatar Oct 16 '17 14:10 may7be

希望有更多的人加入讨论

foxleezh avatar Oct 16 '17 16:10 foxleezh

`$ git clone https://aosp.tuna.tsinghua.edu.cn/kernel/msm Cloning into 'msm'… remote: Counting objects: 6177166, done. remote: Total 6177166 (delta 0), reused 0 (delta 0) Receiving objects: 100% (6177166/6177166), 1.31 GiB | 14.33 MiB/s, done. Resolving deltas: 100% (5197326/5197326), done. Checking connectivity… done.

$ ls -a msm . .. .git ` 为什么 clone 的 msm 目录只有一个 .git ?

guobosheng avatar Apr 25 '18 07:04 guobosheng

为什么按照 git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base 下载的源码中找不到 WindowManagerService、ActivityStack 这些类? @foxleezh

LinYaoTian avatar Jul 14 '18 08:07 LinYaoTian

@guobosheng git branch -a 看一下,也许master 分支没有放内容。 @LinYaoTian 我找了一下 ,有 你说的这两个类都有。

pythoncat1024 avatar Jul 27 '18 13:07 pythoncat1024

最后,我选择了 aosp 清华镜像...

pythoncat1024 avatar Jul 27 '18 14:07 pythoncat1024

能不能发个你用的.ipr文件。。

kuro523 avatar Sep 14 '18 15:09 kuro523

哇哦,好厉害

MmingY avatar Aug 15 '19 01:08 MmingY

请问是哪一个版本?

johnYin2015 avatar Oct 05 '19 04:10 johnYin2015

点赞

AITUncle avatar Nov 08 '19 05:11 AITUncle

点赞,已经开始下载单个源码了。感谢楼主分享

wymann01 avatar Sep 15 '20 01:09 wymann01

mark

Joyounger avatar Apr 09 '21 06:04 Joyounger

👍

soolaugust avatar Sep 08 '21 08:09 soolaugust

能给个4.0.1的源码嘛?我这里实在下不带,外界移动SSD,虚拟机直接出错

748592567 avatar Jul 02 '22 13:07 748592567

这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。

huchen1233 avatar Jul 02 '22 13:07 huchen1233

不错

601553812 avatar Aug 30 '22 04:08 601553812

这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。

huchen1233 avatar Aug 30 '22 04:08 huchen1233

so pretty

mrlay avatar Sep 20 '22 08:09 mrlay

这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。

huchen1233 avatar Sep 20 '22 08:09 huchen1233

单仓下载确实方便,解决了清华镜像cannot fetch 问题。

zou-zhi-ting avatar Oct 16 '22 05:10 zou-zhi-ting

这是来自QQ邮箱的假期自动回复邮件。你好,我最近正在休假中,无法亲自回复你的邮件。我将在假期结束后,尽快给你回复。

huchen1233 avatar Oct 16 '22 05:10 huchen1233