Android源码阅读准备篇
本篇⽂章是本系列⽂章的导读⽂章,强烈建议第⼀次阅读本系列本章的同学先看⼀下导读的内容,它会告诉你⽂章中都⽤到了哪些⼯具,以及牵扯到哪些理论知识这些内 容会帮助你更快更好地去理解⽂章内容。
在线源码 Android 官⽅源码仓库 Android 官⽅源码搜索⼯具
一 基础篇
在阅读 AOSP(Android Open Source Projec)之前你需要掌握的以下理论知识。
-
Java:AOSP的主要语⾔,当然是应该掌握的。
-
Linux:Android是基于Linux内核开发的,如何你需要涉及到内核或者驱动的开 发,你需要掌握Linux相关技术。
-
Make:AOSP是⽤Make来编译的,因此 要了解常⽤的Make语法。
-
Git:程序员必备技能。
-
C++:AOSP⼀些性能敏感的模块底层都是由C++完成的,当然如果你如果不需要关注底层实现,也可以跳过这⼀段,可以更多的去关注框架层。
-
设计模式:AOSP⾥⼤量的框架都是⽤了设计模式,⽐⽅说观察者模式、⼯⼚模式、复合模式等,如果对设计模式不够了解的会看的云⾥雾⾥。
-
熟练的 Android App 开发技能。
⼆ ⼯具篇
本系列的⽂章基于的环境是 MacOS,但是所使⽤的⼯具软件多数都是跨平台的,所以对其他平台的⼩伙伴也没有影响。
2.1 代码阅读 如果在 Windows 下直接上 SourceInsight 就可以了,Mac下可以⽤Understand,功能 和SourceInsight⼀样强⼤。

⽇常临时查源码也可以使⽤ Android 官⽅源码搜索⼯具,提供了不同版本的源码搜索和跳转功能,也⼗分好⽤。 2.2 演⽰⽂稿 演⽰⽂稿是⽤ Keynote 来做的。
Keynote

2.3 ⽂章写作
⽂章都是⽤ Markdown 来写的,⼯具⽤的是语雀,⼀款很强⼤的 Markdown & 富⽂本混编⽂档编辑平台。

👉 注:Markdown语法请参⻅ Markdown维基 百科。
2.4 图例绘制 流程图、类图、时序图、系统架构图等各种图例采⽤ draw.io,⼀款开源的绘图软件,⼗分好⽤。

2.5 图⽚处理 Gif图的制作⽤的是VideoGIF。

VideoGIF
2.7 图⽚阅览
本系列的⽂字会涉及各种时序图、UML图、系统结构图等,这些图⽚有时候会很⼤,为了读者能更加清晰的阅览,笔者不仅提供了png格式的图⽚,还提供了压缩更好的 svg(可缩放⽮量图形)格式,该种格式⽤ xml语⾔来描述图⽚信息,在 Mac 下可⽤Gapplin 打开。

Gapplin
三 书籍篇
站在前辈的肩膀上,我们能看的更远,进步的 更快。以下是学习框架与源码⼀些不错的书籍。
Android 源码设计模式解析与实战:何红辉,关爱⺠ 著

Android系统源代码情景分析:罗升阳 著

Android开发艺术探索:任⽟刚 著

好了,以上就是全部的基础、⼯具与书籍,如 果你还没有下载Android源码,现在我们就去载吧。
四 源码篇
有了基础知识的准备,我们就开始下载和调试 Android 的源码了。 相关⽂档
相关镜像 清华⼤学开源软件镜像站
1 ⾸先,你要确认⾃⼰的电脑满⾜ Android要求的硬件环境和软件环境。
注:从 2021.6.22 起,Android 不再⽀持在Windows 和 MacOS 上进⾏构建,也就是说你如果想构建 Android 系统,需要准备⼀个 Linux 系统,例如 Ubuntu,具体 参⻅搭建构建环境。如果只是阅读源码进⾏学习,则不受影响。
2 接着,你就可以根据官⽅⽂档的指引,准备下载、构建和测试 Android 的系统源码。
注:本系列⽂章会跟着最新的 Android 源码版本进⾏分析,当前版本是android12.0.0_r1。
3 最后,我们可以把源码导⼊到 Android Studio,当然你也可以使⽤我上⾯推荐 Understand 来导⼊阅读源码,它是⼀种类似于 Windows 平台上的SourceInsight 的⼯具。但是我们如果希望能够调试源码,则就需要将源码导⼊到 Android Studio 中。
① 进⼊源码⽬录,运⾏命令。
$ source build/envsetup.sh② 运⾏命令,⽣成android.ipr⽂件。
$ make idegen && development/tools/③ 导⼊Android Studio。 接下来我们就要导⼊源码,但是源码的体积很⼤,如果全部导⼊会⽐较卡,我们可以排除⼀些代码。例如我只想研究framework⾥的代 码,我们 可以在android.iml了添加以下内容。
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_
<excludeFolder url="file://$MODULE_这样⼏分钟就导⼊成功了。

好了,以上便是我们开始分析Android源码所需的全部准备⼯作,让我们正式开始我们的BeesAndroid 源码分析之旅吧。
以上便是我们在阅读 Android 源码之前需要做的准备⼯作,Android 官⽅也为我们提供了丰富的社区资源,善⽤这些资源也能让我们更好的学习 Android 系统的实现。