1.1.2 Android的系统框架

Android框架概述:

Android的架构是分层的,非常清晰,分工很明确。Android本身是一套软件堆叠(Software Stack),或称为"软件叠层架构",叠层主要分成三层:操作系统、中间件、应用程序

Android 软件栈

1、Applications(应用程序)

Android平台不仅仅是操作系统,也包含了许多应用程序,诸如SMS短信客户端程序、电话拨号程序、图片浏览器、Web浏览器等应用程序等等。

这些平台随附的应用与用户可以选择安装的应用一样,没有特殊状态,因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。

但是毫无疑问的是:所有应用程序都是用Java语言编写的,并且这些应用程序都是可以被开发人员开发的其他应用程序所替换的,这点不同于传统手机操作系统固化在系统内部的系统软件,Android应用程序更加灵活和个性化。

2、Java APIFramework(应用程序框架)

应用程序框架层是我们从事Android开发的基础,很多核心应用程序是通过这一层来实现其核心功能的,开发人员也可以完全访问核心应用程序所使用的API框架。

该层简化了组件的重用,任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性),这使得开发人员可以直接使用其提供的组件来进行快速的应用程序开发,也可以通过继承而实现个性化的拓展。

下面对各个模块进行解释:

  • 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据。
  • 视图管理系统(View System):可以用来构建应用程序的基本组件,包括列表Lists、文本框Text boxes、按钮Buttons等等。
  • 活动管理器(Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能。
  • 位置管理器(Location Manager):提供位置服务。
  • 包管理器(Package Manager) :用来管理 Android系统内的程序。
  • 通知管理器(Notification Manager):使得应用程序可以在状态栏中显示自定义的提示信息。
  • 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串、图形和布局文件。
  • 电话管理器(Telephony Manager):提供电话相关功能服务。
  • 窗口管理器(Window Manager):用来管理所有的窗口程序。
  • XMPP服务(XMPP Service):提供Google Talk服务。

这些服务的解释在初学者看来可能会非常晦涩难懂,而且也不知道我在说些什么当然也记不住我所说的,这再正常不过了,现在有个印象就好,等我们开发用到相关功能时就会豁然开朗啦~

3、Libraries(系统运行库)

与PC一样,每个Android应用程序都有自己的进程,每个Android应用程序都运行在Dalvik虚拟机之上,Dalvik虚拟机只执行.dex的可执行文件。

当Android应用程序通过编译,最后还需要通过SDK中的dx工具转化成.dex格式才能正常在虚拟机上执行。所以说当我们使用上面的Android应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其能更好地为我们服务。

当然了,这里面还分为两个部分:

  • 系统库
    系统库是应用程序框架的支撑,是连接应用程序框架层与Linux内核层的重要纽带。
    • WebKit:一套网页浏览器的软件引擎。
    • OpenMAX AL:一套嵌入式的多媒体应用标准
    • Libc:从BSD继承来的标准C系统函数库,专门为基于embedded linux的设备定制。
    • Media Framework: 多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。
    • OpenGL|ES:根据OpenGL ES 1.0API标准实现的3D绘图函数库。
    • Surface Manager:执行多个应用程序时候,负责管理显示与存取操作间的互动,另外也负责2D绘图与3D绘图进行显示合成。
    • SQLite:小型的关系型数据库引擎。(我们以后会经常和它打交道,无论哪种类型APP的开发。)
    • FreeType:提供点阵字与向量字的描绘与显示。
    • SGL:底层的2D图形渲染引擎。
    • SSL:在Andorid上通信过程中实现握手。
  • Android运行时
    Android应用程序时采用Java语言编写,程序在Android运行时中执行,其运行时分为核心库和ART虚拟机两部分。
    • ART虚拟机:正如上文所说,每个Android应用程序都有一个专有的进程,并且不是多个程序运行在一个虚拟机中,而是每个Android程序都有一个ART虚拟机的实例,并在该实例中执行。
      相比于以前采用的Dalvik虚拟机(一种基于寄存器的Java虚拟机,而不是传统的基于栈的虚拟机,并进行了内存资源使用的优化,这使得它在运行速度上占有很大优势),ART是安装的时候就将应用程序编译好了,所以在执行的时候直接就可以运行的,这就使得应用的安装虽然慢一些,但开启和运行应用的速度要快很多。
    • 核心库:核心库提供了Java语言API中的大多数功能,同时也包含了Android的一些核心API,如:android.os、android.net、android.media等等。

4、HAL(硬件抽象层)

硬件抽象层提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。

HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

5、Linux Kernel(Linux内核)

Android是基于Linux内核提供核心系统服务的,例如:安全、内存管理、进程管理、网络堆栈、驱动模型等。

Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。

如果你学过计算机网络的话就会知道分层的好处:使用下层提供的服务而为上层提供统一的服务,屏蔽本层及以下层的差异,当本层及以下层发生了变化不会影响到上层。

也就是说各层各司其职,各层提供固定的功能服务,专业点可以说是高内聚、低耦合。

当然了,如果只是做应用开发,就不需要深入了解Linux Kernel层。

感谢优秀的你跋山涉水看到了这里,不如关注下让我们永远在一起!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容

  • 前言: 身为一个测试,还需要知道底层框架么?答案是肯定的,这样我们才能更加深入了解实现过程,并准确定位问题。 An...
    小喜_ww阅读 1,816评论 0 4
  • 1、应用程序. Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序...
    juneway阅读 491评论 0 0
  • 概述 Android基于Linux Kernel,但不是Linux,是Linux的一个变种; Android系统框...
    CodeMagic阅读 383评论 0 0
  • Android系统架构 android系统架构从上到下分为五层:应用层、应用框架层、系统运行库层、硬件抽象层、Li...
    isLJli阅读 5,507评论 0 9
  • 什么是安卓系统 安卓系统框架 安卓系统结构 应用组件 安卓系统历史版本 补充说明 什么是安卓系统 Android是...
    TensorFlow开发者阅读 3,047评论 0 4