Android系统架构介绍
16lz
2021-12-04
前言
学习Android前前后后也有一段时间了,怎么说呢,笔者是在13年开始自学Android的。不过之后由于找工作、实习等原因,有很长一段真空期没有再去学习Android了。加之笔者暂时从事的也并非Android方向的工作,学习研究也就一度落下了。不过作为一个Android爱好者,现在笔者也会利用业余时间进行一些在学习了。 以前的学习总是拘泥于实现漂亮好看的界面,对于系统架构的一些理论性东西了解甚微。在今后的学习中也会注意到这些,既然打定注意以一个新的方式学习,先来系统的了解一下Android整个系统架构。What is Android
所谓的What is的解释可谓仁者见仁,智者见智。 普通用户的角度,他可以片面的认为它是一部“手机”,深入一点的话会知道Android是手机上搭载的"操作系统“。 商人的角度他可能并不简单的认为Android是一个手机或操作系统,他可能看到是基由Android所带来影响,对整个移动互联网的冲击和商机。 开发者的角度,他会知道Android是基于 Linux平台 ,由 操作系统 、 中间件 、 用户界面 和 应用软件 组成,开放、完整的移动软件,利用系统提供的一些列和重用的组件集成,可以实现各类有趣实用的apps。 But what is? 这是个开放的问题。 如若非要下一个定义,笔者也只好引用Android负责人 Dan Morrill解释的: ”Android并不是传统的Linux风格的一个规范或分发版本,也不是一些列可重用的组件集成,Android是一个用于连接设备的软件块。“ What is AndroidAndroid架构详解
从上面那张图我们就可以简单的看出Android系统架构的组成部分以及其简单的运作方式,下面给出Android系统架构的详细架构图(来源于网络):显而易见的,根据上图自底向上我们知道Android系统架构包含5大部分:Linux Kernel 、Libraries、Android Runtime、Application framework、application。 下面将依次了解这5部分
Linux Kernel
android是基于linux2.6 提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux kernel也作为硬件和软件之间的抽象层,隐藏底层硬件细节为上层提供统一服务。对于做Android应用开发的开发者来说,这部分无需深入了解。Android Runtime
Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。每一个Android app就是Dalvik虚拟机中的实力,运行在他们自己的进程中。一个设备可以高效的运行多个虚拟机。Dalvik虚拟机可执行文件格式为.dex(专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统)。 与大多虚拟机(jvm)不同的是,Dalvik是基于寄存器的,而不是基于栈的。这使得Dalvik支持的机器指令更大(基于栈的需要更多指令)。dx是一套工具,可以将.class文件转化为.dex,通常为多对一关系。由于dex进行最佳化,文件大小增加1-4倍,以ODEX结尾。需要提出的是Dalvik虚拟机依赖于Linux内核提供基本功能(线程、底层内存管理)。Libraries(运行库)
Android系统会通过一些C/C++库来支持我们使用的各个组件,使其更好的为我们服务。这些功能通过Android的应用程序框架暴漏给开发者。 Bionic 系统C库: C语言标准库,系统最底层的库,C库基由Linux系统来调用。 MediaFramework: Android系统多媒体库,基于PackerVideo的OpenCORE,支持各种音频、视频格式的录制和播放,包括静态图片文件。 LibVebCore: web浏览器引擎,驱动Android浏览器和内嵌的web视图 SGL: 基本的2D图形引擎 3D: 基于OpenGL ES的实现。 SQLite: 应用程序使用的强大、轻量的关系数据库引擎。Application Framework
Application Framework也许是大部分开发者接触的最多的部分了,因为Android应用的开发都是通过框架与Android底层进行交互来实现的。 应用开发层是Android提供给开发者一个框架开发平台,开发者在遵循框架原则的基础上,对框架进行扩展从而开发出各式各样的app应用。 应用程序的体系结构简化了组件的重用,使得开发者开发也更加的灵活。- 视图(View)——丰富的、可扩展的视图集合,可用于构建一个应用程序。包括包括列表、网格、文本框、按 钮,甚至是内嵌的网页浏览器。
- 内容提供者(Content Providers)——使应 用程序能访问其他应用程序(如通讯录)的数据,或共享自己的数据。
- 资源管理器(Resource Manager)——提供访问非代码资源,如本地化字符串、图形和布局文件。
- 通知管理器(NotificationManager)——使所有的应用程序能够在状态栏显示自 定义警告。
- 活动管理器(ActivityManager)——管理应用程序生命周期,提供通用的导 航回退功能。
-
Applications
由Google我iAndroid系统装配的核心app集合,包括电子邮件客户端、SMS、日期、地图、浏览器等。Android是开源的,开源力量的强大使得能够运行在Android系统上的app层出不穷。
小结
Android采取的是分层的架构,各层清晰分工明确,其本身就是一套软件堆叠(Software stack:软件叠层架构),主要分为三层:操作系统、中间件、应用程序。更多相关文章
- Android(安卓)系统及framework 概述
- 精通android体系架构、mvc、常见的设计模式、控制反转(ioc)
- Android应用程序与SurfaceFlinger服务的关系概述和学习计划
- 10款最佳Android快速应用程序切换
- Android开发者e周报 第6期
- Android应用程序的快速启动
- 02.Android应用程序组成
- Android应用程序快速启动的秘诀
- Android系统