Android源码:2、阅读详解

版权声明:本文为博主原创文章,不得随意转载,转载请注明出处!!! https://blog.csdn.net/YuDBL/article/details/86294957

文章目录

一、源码下载

二、阅读源码

1、Android系统架构图分析

2、阅读哪些源码

3、Android源码阅读工具


一、源码下载

有些人可能还不知道如何下载Android源码开源项目AOSP(Android Open Source Project)。Android源码可以全部下载,也可以单个下载。我用的全部下载,详情可参考上篇文章Android源码:1、下载详解(支持移动硬盘、mac)—亲测成功

1、全部下载

(1)查看官网只要按照上面一步步做就可以了,但是由于需要翻墙,国内无法直接访问,而整个Android项目源码巨大,即便是翻墙后下载也很慢,所以还是使用国内镜像比较好。

(2)网上推荐比较多的是:中科大的镜像 或者 清华大学的镜像 ,你一定要备一个比较大的磁盘至少60个G吧,还不算后期编译的,我预存了220G。详细可参考我上篇文章:Android源码:1、下载详解(支持移动硬盘、mac)—亲测成功  我们分析源码其实是不需要全部代码的,因为AOSP不仅包括系统源码,还有些工具代码,如aapt,adb等,这些我们根本不需要,而且即便是系统源码,也不是所有我们都需要看,如果真的全部看,你这辈子都看不完,所以你也可以单个下载阅读。

2、单个下载

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

镜像地址,比如我们要下载platform/frameworks/base/目录,就用git clone https://aosp.tuna.tsinghua.edu.cn/platform/frameworks/base,如果你带宽够的话,一般几分钟就可以下载好你想要的单个源码了。如果你想下载单个文件,或者搜索文件名及代码,可以访问 http://androidxref.com/,这里有部分Android的源码

二、阅读源码

有些人虽然下载下来了,但是面对庞大的Android源码项目又望而却步,不知道从哪儿下手源码,那么下载Android源码仅仅是我们阅读分析源码的开始。。。

1、Android系统架构图分析

首先,我们来看一下我们刚开始学习Android就需要了解的一张图,Android系统架构图

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

第一层:应用程序层(applications)对应根目录下 platform/packages/apps

【git clone https://aosp.tuna.tsinghua.edu.cn/platform/packages/apps

第二层:应用程序框架层(application framework)对应根目录下的 platform/frameworks

第三层:运行库层包括运行库(libraries)和android运行时环境(android runtime)

libraries对应目录很多,其中libc库对应的是 platform/bionic

android运行时环境,Core Libraries 对应根目录下的 platform/libcore

Dalvik Virtual Machine 对应根目录下的 platform/dalvik,不过现在已经是ART了,所以目录是 platform/art

第四层:Linux内核层对应根目录下的 kernel,每一个目录对应了一个kernel的版本,因为Android要兼容各种芯片,

下面罗列一下:

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

2、阅读哪些源码

因为不同的人从事着不同的工作,有的人从事应用开发,可能对Java层东西感兴趣;有的人从事Framework开发,可能对Framework层感兴趣;有的从事硬件开发,可能对底层实现感兴趣。

对于我而言,我是从事应用层开发的,我主要会了解以下几个方面的源码:

  • Android系统启动流程,应用启动流程,四大组件启动流程,这将列入系统启动篇
  • 系统常用服务ActivityManagerService,WindowManagerService等,这将列入系统服务篇
  • 通信机制,主要是Binder和Handler,这将列入通信篇
  • 进程和线程的创建,运行,销毁,这将列入进程篇
  • View的绘制和显示流程,事件分发机制,这将列入图形绘制篇
  • Android虚拟机ART运行机制,类加载机制,Java注解,Java反射,这将列入虚拟机篇
  • Android对于Java集合的优化算法,这将列入Java基础篇

不能盲目地毫无目的地看源码,因为这样的话最终你会淹没在AOSP的大海里,看了一年半截啥都看了,却又感觉都没看透,别人问你源码的东西,都能说个一二,但是一往深了说,就不知所以了。

所以对于AOSP源码,不在于多,而在于精,你不要试图把所有的源码都看懂,你只要对自己感兴趣的那部分深入研究就可以,因为即便是Google工程师也不可能把AOSP全部读完。

3、Android源码阅读工具

(1)Source Insight

Android 源码阅读神器当然是Source Insight(windows)

Source Insight的好处:

  • 支持方法跳转,类跳转,并且对C++支持很好
  • 支持文件搜索,java,c++,xml都支持,并且支持内容搜索
  • 支持一键导入,随时配置路径
  • 而且最重要的,导入文件数多的时候不卡

(2)Understand

在此推荐一款Mac下的SourceInsight替代品, 代码分析阅读工具Understand

虽然说界面很不Mac, 看起来比较low, 但是功能还是很强大的, 而且用来看源码刚刚好

可参考:https://www.jianshu.com/p/06f25d9131de

下载链接:http://mac.orsoon.com/Mac/150631.html【收费】


 

猜你喜欢

转载自blog.csdn.net/YuDBL/article/details/86294957