您当前的位置:首页 > 计算机 > 编程开发 > 安卓(android)开发

Android的系统架构

时间:10-16来源:作者:点击数:

Android 的系统构架分为四层,而这四层又是由五部分组成的,请见下图:


图1:Android 系统架构示意图

从上图中可以看出,Android系统架构从下层到上层分别是:Linux内核层系统运行库层应用程序框架层应用程序层

Linux内核层

处于最底层的Linux内核层提供了基本的系统功能,例如流程管理、内存管理、设备管理、电源管理等。它还提供许多驱动,例如显示驱动、摄像头驱动、键盘驱动、wifi驱动、内存驱动等。

如果你想从事Android驱动开发,那就应该研究Android的Linux内核。

系统运行库层

这一层大部分都是用C/C++写的。这一层为上层提供它们所需的Java类库和运行环境。如果你是从事Android系统开发的,那就应该研究Android的系统库和Android运行时。

从图中可以看出,系统运行库层可以分成两部分,分别是系统库和Android运行时。

1) 系统库

它是连接应用程序框架层与Linux内核层的重要纽带。Android包含一些 C/C++库,这些库能被 Android 系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。

以下是一些核心库:

  • WebKit:Android浏览器内核,用来渲染网页。
  • SQLite:轻量级的关系型数据库,便于存储和共享应用程序数据。
  • SSL库:负责互联网安全。
  • 多媒体库:支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM等。
  • FreeType: 提供字体的描绘与显示服务。
  • SGL:底层的2D图形引擎。
  • Libc:从标准C系统函数库,专门为基于embedded linux的设备定制。
2) Android运行时

Android应用程序都在Android运行时中执行,其运行时分为核心库和Dalvik虚拟机两部分。

核心库提供了Java API中的大多数功能,同时也包含了Android的一些核心API。

Dalvik虚拟机是Google公司自己开发的用于Android平台的Java虚拟机,它适合内存和处理器速度有限的系统。不同于JDK运行 .class 文件,Dalvik虚拟机运行 .Dex 文件(由 .class 转换而来)。

在Android中可以同时运行多个Dalvik实例,并且每个Dalvik应用都是一个独立的Linux进程。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。

很长时间以来,Dalvik虚拟机一直被用户指责为拖慢Android运行速度、不如IOS的根源。不过Google在2014年的I/O大会上推出了Android L,删除了Dalvik,由传闻已久的ART代替,表现更佳。

应用程序框架层

这一部分用Java编写,开发人员可以直接使用其提供的组件来进行快速的应用程序开发。若是从事Android应用程序开发,那应该研究Android的应用框架层和应用程序层。

框架层由多个系统服务组成,应用层的程序时刻都在与这些系统服务打交道。每一次构造窗口、处理用户交互事件、绘制界面、获得当前地理信息,都是在各个系统服务支持下实现的。该层是Android应用开发的基础,开发人员大部分情况是在和它打交道。

应用程序框架层包括:

  • Activity Manager(活动管理器):管理各个应用程序生命周期。
  • Window Manager(窗口管理器):管理所有的窗口程序。
  • Content Provider(内容提供器):使得不同应用程序之间存取或者分享数据。
  • View System(视图系统): 构建应用程序的基本组件。
  • Package Manager(包管理器) :Android系统内的程序管理。
  • Resource Manager(资源管理器):提供应用程序使用的各种非代码资源,如本地化字符串、图片、布局文件、颜色文件等。
  • Location Manager(位置管理器):提供位置服务。

应用程序框架层提供了许多高级服务的Java类的形式。应用程序开发人员可以通过实例化这些类来调用这些服务。

应用程序层

Android应用层由运行在Android设备上的所有应用程序(APP)共同构成,它不仅包括通话、短信、联系人等系统应用,还包括其他后续安装到设备中的第三方应用。
 
 最后说一下Dalvik和ART的不同。

由于Dalvik被指责为拖慢应用程序运行速度的罪魁祸首,Google 花了两年的时间来开发执行效率更高更省电的ART(Android Runtime),用以代替Dalvik。

ART执行程序的方式与Dalvik完全不同:

  • Dalvik 在程序运行时依靠一个即时编译器(Just-In-Time,简称JIT)将字节码翻译成机器码,因为多了一个环节,并不是非常高效。
  • ART 在应用程序安装时就会把字节码转换成机器码,这种机制叫做Ahead-Of-Time,简称 AOT。因为程序运行时没有了解释字节码这一环节,因而启动更快,执行效率更高,触控更加灵敏,体验更加流程。

不过,ART需要更大的内存空间占用,可能会增加10%-20%,而且程序安装速度比Dalvik慢。

还好现在的智能手机ROM都比较大了,不少旗舰级的ROM都到了3G,低端机也有1G了,512M的很少了,ART 以“空间换时间”的做法看似是比较明智的。

Google已经不是第一次使用“空间换时间”的把戏了,例如,大家都知道Chrome浏览器很快很流畅,可是内存占用也多。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门