Android 基础知识(一)体系架构

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhou_xinyu/article/details/81986507

初学Android不久,总结一下杂七杂八的东西,难免说错或者说的不清楚有歧义,希望路过的大佬、中佬、小佬以及和我一样的小白能多多提点。

体系架构(略有了解即可)

旧版
新版
这是两张网络上的有关Android体系架构的图片,上面那张看起来就很老的图片是2014年以前的一个架构显示,下面那个看起来就很棒棒的图片是我从一个博客(Android系统架构与系统源码目录)里面找到的,以下有关体系架构的部分内容也摘自其中。

这两张图片的大部分内容都是一致的,变得最大的就是Android Runtime这个部分。2014那一年的谷歌IO大会发生了很多事情,比如说发布了UI设计上的Material Design风格,比如说可穿戴设备Android Wear,还有就是对运行时虚拟机的更改。Dalvik是KitKat(Android 4.4)之前的虚拟机,因为最开始的时候手机设备比较辣鸡,啥特么都不行,电池不行、内存不行、处理器不行,Dalvik就是为此设计的。而在2014年谷歌IO大会上“悄悄地”( • ̀ω•́ )✧改了虚拟机,新虚拟机叫ART虚拟机。

ART模式的原理,是在用户安装应用时就进行预编译操作,将原本在程序运行中的编译动作提前到应用安装时,所以无疑会加快程序在运行中的响应速度。与几乎所有的提升速度所带来的代价差不多,空间开销大了,不过后来的手机无论从哪个方面都完爆之前的手机(单说内存就是几十倍的差距),于是乎为了获得之前两倍的速度(两倍是官方给出的说法)….Dalvik扑街了….在Android 4.4里将ART设置为开发者选项,在Android 5.0里面ART成为默认,Dalvik退出历史舞台。下面就是分层讲述每个层都干嘛的,请将重点放在应用框架层和系统运行库层,其他几层不是不重要…而是现在看了也白搭,说的扎心点就是你刚开始根本看不懂。


应用层

系统内置的应用程序以及非系统级的应用程序都是属于应用层。负责与用户进行直接交互,通常都是用Java进行开发的。

应用框架层(Java Framework)

应用框架层为开发人员提供了可以开发应用程序所需要的API,我们平常开发应用程序都是调用的这一层所提供的API,当然也包括系统的应用。这一层的是由Java代码编写的,可以称为Java Framework。下面来看这一层所提供的主要的组件

  • Activity Manager(活动管理器) 管理各个应用程序生命周期以及通常的导航回退功能
  • Location Manager(位置管理器) 提供地理位置以及定位功能服务
  • Package Manager(包管理器) 管理所有安装在Android系统中的应用程序
  • Notification Manager(通知管理器) 使得应用程序可以在状态栏中显示自定义的提示信息
  • Resource Manager(资源管理器) 提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等
  • Telephony Manager(电话管理器) 管理所有的移动设备功能
  • Window Manager(窗口管理器) 管理所有开启的窗口程序
  • Content Providers(内容提供器) 使得不同应用程序之间可以共享数据
  • View System(视图系统) 构建应用程序的基本组件

系统运行库层(Native)

系统运行库层分为两部分,分别是C/C++程序库和Android运行时库。下面分别来介绍它们。

1.C/C++程序库

C/C++程序库能被Android系统中的不同组件所使用,并通过应用程序框架为开发者提供服务,主要的C/C++程序库如下:

  • OpenGL ES 3D绘图函数库
  • Libc 从BSD继承来的标准C系统函数库,专门为基于嵌入式Linux的设备定制
  • Media Framework 多媒体库,支持多种常用的音频、视频格式录制和回放。
  • SQLite 轻型的关系型数据库引擎
  • SGL 底层的2D图形渲染引擎
  • SSL 安全套接层,是为网络通信提供安全及数据完整性的一种安全协议
  • FreeType 可移植的字体引擎,它提供统一的接口来访问多种字体格式文件

2.Android运行时库

运行时库又分为核心库和ART(5.0系统之后,Dalvik虚拟机被ART取代)。核心库提供了Java语言核心库的大多数功能,这样开发者可以使用Java语言来编写Android应用。相较于JVM,Dalvik虚拟机是专门为移动设备定制的,允许在有限的内存中同时运行多个虚拟机的实例,并且每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。而替代Dalvik虚拟机的ART 的机制与Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。

硬件抽象层(HAL)

硬件抽象层是位于操作系统内核与硬件电路之间的接口层,其目的在于将硬件抽象化,为了保护硬件厂商的知识产权,它隐藏了特定平台的硬件接口细节,为操作系统提供虚拟硬件平台,使其具有硬件无关性,可在多种平台上进行移植。 从软硬件测试的角度来看,软硬件的测试工作都可分别基于硬件抽象层来完成,使得软硬件测试工作的并行进行成为可能。通俗来讲,就是将控制硬件的动作放在硬件抽象层中。

Linux内核层

Android 的核心系统服务基于Linux 内核,在此基础上添加了部分Android专用的驱动。系统的安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖于该内核。

猜你喜欢

转载自blog.csdn.net/zhou_xinyu/article/details/81986507