Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

如何下载Android源码 #1

Open
foxleezh opened this issue Oct 9, 2017 · 21 comments
Open

如何下载Android源码 #1

foxleezh opened this issue Oct 9, 2017 · 21 comments

Comments

@foxleezh
Copy link
Owner

foxleezh commented Oct 9, 2017

前言

源码下载是我们分析源码的开始,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

@may7be
Copy link

may7be commented Oct 16, 2017

很专业

@foxleezh
Copy link
Owner Author

希望有更多的人加入讨论

@guobosheng
Copy link

`$ 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 ?

@LinYaoTian
Copy link

LinYaoTian commented Jul 14, 2018

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

@pythoncat1024
Copy link

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

@pythoncat1024
Copy link

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

@kuro523
Copy link

kuro523 commented Sep 14, 2018

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

@MmingY
Copy link

MmingY commented Aug 15, 2019

哇哦,好厉害

@johnYin2015
Copy link

请问是哪一个版本?

@AITUncle
Copy link

AITUncle commented Nov 8, 2019

点赞

@wymann01
Copy link

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

@Joyounger
Copy link

mark

@soolaugust
Copy link

👍

@748592567
Copy link

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

@huchen1233
Copy link

huchen1233 commented Jul 2, 2022 via email

@601553812
Copy link

不错

@huchen1233
Copy link

huchen1233 commented Aug 30, 2022 via email

@mrlay
Copy link

mrlay commented Sep 20, 2022

so pretty

@huchen1233
Copy link

huchen1233 commented Sep 20, 2022 via email

@zou-zhi-ting
Copy link

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

@huchen1233
Copy link

huchen1233 commented Oct 16, 2022 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests