Android的学习之路 一一初识Android四层架构

                                    Android的系统架构


由于工作需要决定学习移动端开发然后在IOS和Android这两个里面选择了Android做为学习对象。同时也决定以写博客的方式来记录这个学习的过程,一方面可以让自己养成一个写博客的习惯,一方面可以通过博客来记录知识点以及学习中所遇到的问题。同时也打算将学习过程中的一些Demo放到github上。

                                                                                                                                                                            小菜鸟


 

1-1. Android的系统架构

为了了解Android系统是如何工作的,我们非常有必要的看它的系统架构。它的架构分为4层:Linux内核层、系统运行库层、应用框架层和应用层。附上一张架构图。

L

Linux  Kernel(Linux内核层):

因为Android系统是基于Linux2.6的,所以从上面图中我们可以看到这一层为Android设备的各个硬件提供底层的驱动,安全服务、内存管理、进程管理和网络管理也是由这层提供的。Linux内核层是软件和硬件之间的一个抽象层,它使硬件的细节得以隐藏然后为上层服务提供统一的服务。

和OSI/RM七层模型一样,使用下层提供的服务去为上层提供统一的服务,这样就可以屏蔽掉本层和下层的差异,使得本层及下层发生变化时不影响上层。一句话概括就是高内聚低耦合啦。

Android Libraries(系统运行库层):

在这一层中通过一些C/C++库来为Android提供主要的特性支持,而这些特性将通过android的运用层框架(Application Framework)提供给开发者。

核心库:

libc(系统C库):标准C系统库的BSD衍生,是系统中最底层的一个库,调整为基于嵌入式Linux设备。

SGL: 底层的2D图像引擎。

SSL (SecureSocket Layer):位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。

SQLite:个通用的嵌入式本地数据库

FreeType: 位图和矢量字体渲染

WebKit :网络浏览器的的核心,WebView的内核

OpenGL|ES:基于OpenGL|ES 1.0 APIs的一个实现;这个库使用硬件的3D加速,或者使用内置的高度优化的3D软件光栅

Surface Manager ( 界面管理):负责管理显示与存取操作时间的互动,另外也负责将2D绘图与3D绘图进行显示上的合成。

Media Framework (多媒体框架):这部分是Android多媒体的核心部分,基于PacketVideo的OpenCORE,这个库一部分是音频和视频的回放,一部分是音频和视频的记录。同时这个库也支持静态的图片文件,包括JPG、PNG、MP3、MPEG等。

Android Runtime(同属于系统运行库层) : 

Core libraries: 这是一个Android的核心库的集合,提供了大部分在Java编程语言核心类库中可用的功能。

Dalvik Virtual Machine(Dalvik虚拟机):每一个Android运用程序都是Dalvik虚拟机中的实例,运行在他们自己的进程中。而Dalvik虚拟机则被设计成可以在一个设备高效的运行多个虚拟机。Dalvik虚拟机的可执行文件格式为.dex,这是为Dalvik专门设计的一种压缩格式,适合内存和处理器速度有限的系统。

画重点:Dalvik虚拟机依赖于Linux内核提供的基本功能,如线程和底层的内存管理。还有就是Dalvik虚拟机是基于寄存器的,而大多数虚拟机包括JVM在内是基于栈的。基于寄存器机器需要的机器指令大于基于栈需要的机器指令。一个dex文件通常会有多个.class。

 

Application Framework(运用框架层):

这一层呢主要是提供了构建应用程序时需要用到的各种 API,Android自带的一些核心应用就是通过API来完成的,我们开发也是通过使用这些API来构建自己的应用程序了。

Activity Manager(活动管理器):管理应用程序的生命周期,提供通用的导航回退功能,为系统中所有运行着的Acticity提供交互接口。

Window Manager(窗口管理器):管理系统中的所有窗口。

Content Providers(内容提供器):使应用程序能共享自己和访问其他应用软件的数据。

View System(试图系统):测量各个UI元素的尺寸;确定各个UI的位置;当内容发生变化时进行重绘;接收和分配事件;处理来自window manager的很多和窗口状态有关的回调。

Notification Manager(通知管理器):可以使得所有应用程序能在状态栏显示自定义的通知。

Package Manager(程序包管理器):管理应用程序包,也可通过该管理器获取应用程序的信息。

Telephony Manager(电话管理器):提供Telephony相关信息的查询/修改功能以及Phone状态监听功能。

Resource Manager(资源管理器):可以使应用程序访问非代码资源,如本地化字符串、布局文件等。

Location Manager(位置管理器):可以使应用周期性的获取当前经纬坐标。

XMPP Manager(即时通信管理器):为应用程序提供即时通讯服务。

Applications(应用层):

所有安装在Android系统上的应用程序都属于这一层。所有应用程序都由Java编写。


这节的笔记内容里主要是记得Android的四层架构,对Android的整体也有了一个新的了解,也温故了一些计算机网络和JVM.

                                                                   路漫漫其修远兮!加油!

 

 

 

 

 

 

 

 

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/c1728494009/article/details/82346595