Android 源码笔记 #2 - 源码及 Framework 结构

源码结构

框架图

图片来自 Android Source Overview

包说明

下述说明引用自 Cloud Chou’s Tech Blog

着重关心的

如果不是像小米这样的有自己硬件的厂商,其实一般关心的层面在 Android FrameworkApplications。映射到具体包就是 frameworkspackages。应用程序没啥好看的,每个版本也不尽相同,主要看看 frameworks,下面内容摘自 Git_Android 的 Android核心服务解析篇(二)——Android源码结构分析

应用程序框架是Android系统中的核心部分,也就是SDK部分,它会提供接口给应用程序使用,同时应用程序框架又会与系统服务,系统程序库,硬件抽象层的关联,所以其作用十分重大,应用程序框架的实现代码大部分都在/frameworks/base和/frameworks/av目录下。

frameworks/base的目录结构如下所示: frameworks/base

Android应用程序框架层的大部分实现代码被保存在/frameworks/base目录下,其实在这个目录中还有一个名为service的目录,里面的代码用于实现Android系统服务,其目录结构如下所示:

frameworks/base/services

其中java和jni两个目录分别是一些其他的服务的Java层和JNI层实现,java目录下的目录结构以及其他Android系统服务的相关说明如下所示:

frameworks/base/services/core/java/com/android/server

\——wm

\——BackupManagerService.java//备份服务

从上面的文件夹和文件可以看出,Android中涉及的服务种类有:界面,网络,电话等核心模块,这些专属服务是系统级别的服务,这些系统服务一般都会在Android系统启动的时候加载,在系统关闭的时候结束,受到系统的管理,应用程序并没有权力去打开或者关闭,它们会随着系统的运行一直在后台运行,供应用程序和其他组件来使用。

另外,在framework/av/目录下面有一个services目录,在此目录中存放的是音频和照相机的服务的实现代码,此目录的具体结构如下所示:

frameworks/av/services

av/services目录主要用来支持Android系统中的音频和照相机服务。

媒体库:Android中的媒体库在2.3版之前是由OpenCore实现的,2.3版之后Stragefright被替换了,OpenCore成为新的多媒体的实现库。同时Android自带了一些音视频的管理库,用于管理多媒体的录制,播放,编码和解码等功能。

Android的多媒体程序库的实现代码主要在/frameworks/av/media目录中,其目录结构如下:

frameworks/av/media/

图层显示库:Android中的图层显示库主要负责对显示子系统的管理,负责图层的渲染,叠加,绘制等功能,提供了2D和3D图层的无缝融合,是整个Android系统显示的“大脑中枢”,其代码在/frameworks/native/services/surfaceflinger/目录下,其目录结构如下所示:

frameworks/native/services/surfaceflinger/

3D图形库:Android中的3D图形渲染是采用OpenGL来实现的,OpenGl是开源的第三方图形渲染库,使用该库可以实现Android中的3D图形硬件加速或者3D图形软件加速功能,是一个非常重要的功能库。从Android 4.3开始,支持最新,最强大的OpenGL ES3.0.其实现代码在/frameworks/native/opengl中,其目录结构如下所示:

frameworks/native/opengl/

SQLite:SQLite是Android系统自带的一个轻量级关系数据库,其实现源代码已经在网上开源。SQLite的优点是操作方便,运行速度较快,占用资源较少等,比较适合在嵌入式设备上面使用。SQLite是Android系统自带的实现数据库功能的核心库,其代码实现分为Java和C两个部分,Java部分的代码位于/frameworks/base/core/java/android/database,主要是实现SQLite的框架和接口的实现,使用户开发应用程序时能很简单地操作数据库,并且捕获数据库异常。目录结构如下所示:

frameworks/base/core/java/android/database/

· Android, Framework, 源码, zh-CN