Android系统架构简介

时间:2020-08-13 19:57:32 系统架构师 我要投稿

Android系统架构简介

  目前Android的Linux kernel控制包括安全、存储器管理、进程管理、网络堆叠、驱动程序模型等。下载Android源码之前,先要安装其构建工具Repo来初始化源码。Repo是Android用来辅助Git工作的一个工具。

  应用程序

  Android系统是基于Linux内核开发,使用Java作编程语言,使界面到功能,都有层出不穷的变化,其中Activity等同于J2ME的MIDlet,一个Activity类别负责创建视窗,一个活动中的Activity就是在foreground(前景)模式,背景执行的程序叫做Service。两者之间透过由ServiceConnection和AIDL连结,达到复数程序同时执行的效果。如果执行中的Activity全部画面被其他Activity取代时,该Activity便被停止,甚至被系统清除。

  View等同于J2ME的Displayable,程序人员可以透过View类别与“XML layout”档将UI放置在视窗上,并可以利用View打造出所谓的Widgets,其实Widget只是View的.一种,所以可以使用xml来设计layout。至于ViewGroup是各种layout的基础抽象类别,ViewGroup之内还可以有ViewGroup。View的构造函数不需要在Activity中调用,但是Displayable的是必须的,在Activity中,要通过findViewById()来从XML中获取View,Android的View类的显示很大程度上是从XML中读取的。View与事件息息相关,两者之间透过Listener结合在一起,每一个View都可以注册event listener,例如:当View要处理用户触碰的事件时,就要向Android框架注册View.OnClickListener。另外还有Image等同于J2ME的BitMap。

  中介软件

  操作系统与应用程序的沟通桥梁,并用分为两层:函数层和虚拟机器。 Bionic是Android改良libc的版本。Android包含了Chrome浏览器引擎。Surface flinger是就2D或3D的内容显示到萤幕上。Android使用工具链为Google自制的Bionic Libc。

  Android采用OpenCORE作为基础多媒体框架。OpenCORE可分7大块:PVPlayer、PVAuthor、Codec、PacketVideo Multimedia Framework(PVMF)、Operating System Compatibility Library(OSCL)、Common、OpenMAX。

  Android使用Skia为核心图形引擎,搭配OpenGL/ES。Skia与Linux Cairo功能相当,但相较于Linux Cairo,Skia功能还只是阳春型的。2005年Skia公司被Google收购,2007年初,Skia GL源码被公开,目前Skia也是Google Chrome的图形引擎。

  Android的多媒体资料库采用SQLite资料库系统。资料库又分为共用资料库及私用资料库。用户可透过ContentProvider类别获取共用资料库。

  Android的中间层多以Java实现,4.4版之前使用特殊的Dalvik虚拟机器。Dalvik虚拟机器是一种“暂存器型态”的Java虚拟机器,变数皆存放于暂存器中,虚拟机器的指令相对减少。5.0版起改用Android Runtime(ART)。

  Dalvik虚拟机器可以有多个实例,每个Android应用程序都用一个自属的Dalvik虚拟机器来执行,让系统在执行程序时可达到最优化。Dalvik虚拟机器并非执行Java字节码,而是执行一种称为.dex格式的档案。

  硬件抽像层(HAL)

  Android的硬件抽像层是能以封闭源码形式提供硬件驱动模块。HAL的目的是为了把Android framework与Linux kernel隔开,让Android不至过度依赖Linux kernel,以达成“内核独立”(kernel independent)的概念,也让Android framework的开发能在不考量驱动程序实现的前提下进行发展,以达到垄断GPU市场的目的。

  HAL stub是一种代理人的概念,stub是以*.so档的形式存在。Stub向HAL“提供”操作函数,并由Android runtime向HAL获取stub的操作,再回调这些操作函数。HAL里包含了许多的stub(代理人)。Runtime只要说明“类型”,即module ID,就可以获取操作函数。

  编程语言

  Android是执行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux里支持的功能,Android大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以bionic取代Glibc、以Skia取代Cairo、再以opencore取代FFmpeg等等。Android为了达到商业应用,必须移除被GNU GPL授权证所约束的部分,Android并没有用户层驱动(user space driver)这种东西。所有的驱动还是在内核空间中,并以HAL隔开版权问题。bionic/libc/kernel/ 并非标准的内核头文件(kernel header files)。Android的内核头文件是利用工具由Linux内核的头文件所产生的,这样做是为了保留常数、资料结构与宏。

  Android的核心基于Linux,除了核心之外,则是中介层、数据库元和用C/C++编写的API以及应用程序框架。Android的应用程序通常以Java数据库元为基础编写,运行程序时,应用程序的代码会被即时转变为Dalvik dex-code(Dalvik Executable),然后Android操作系统通过使用即时编译的Dalvik虚拟机来将其运行。

【Android系统架构简介】相关文章:

秒杀系统架构分析08-27

智慧健康系统架构08-19

软件架构是什么-什么是系统架构05-16

什么是系统架构师-如何成为系统架构师05-16

如何搭建系统CSS架构08-27

SAP系统架构是什么10-17

系统架构师概述10-03

关于分布式系统架构08-25

分布式系统架构实践05-31