初识android系统,五层系统架构详解

有时间了,就整理一下这几年下来android的基础知识,希望可以帮到需要的人和影响到一些开发者,然后也希望自己也能从中有一个更深的理解,android的一个很好的理念就是开源,但好像最新几年开发者不像前几年在网上开源自己,整个氛围感觉不太好,一个很大的感觉就是以前开发的问题都能再网上找到解决方案,现在很难找到了,或许是大家都没有时间,或许是知识付费的体系问题。如果有说的不对的地方,请评论上指正。

Android 是一套基于linux内核开源系统,主要应用于移动端,在移动互联网时代,应运而生。要详细了解它的起源历史历程的情况可以点击查看百度百科  Android 百度百科。下面主要介绍一下整个Android 的5层系统架构,如图自上而下(高层到底层,上层调用下层代码)分别是:

初识android系统,五层系统架构详解_第1张图片

1.System Apps:系统应用层,也就是应用层,不只是系统自带的应用(Dialer:拨号器,Email:邮件,Camera:相机,Calendar:日历等),还有广大的android应用层开发者开发的第三方应用:比如支付宝,微信,qq等。

开发者使用android studio 就很容易创建一个android应用出来。

2.JavaAPIFramework:应用架构层,招聘上写的Android  framework工程师,就是主要在这一层工作的,

  1. ActivityManagerService(Ams):负责管理所有应用程序中的Activity,它掌握所有Activity的情况,具有所有调度Activity生命周期的能力,简单来说,ActivityManagerService是管理和掌控所有的Activity.

  2. WindowManagerService(Wms):控制窗口的显示、隐藏以及窗口的层序,简单来说,它就是管理窗口的,大多数和View有关系的都要和它打交道。

  3. 内容提供器(Content Providers):可以让一个应用访问"另一个应用"的数据(比如联系人数据库),或者共享他们的数据

  4. 视图系统(View System):丰富且可拓展,包括:列表(lists),网络(grids),文本框(text boxes),按钮(buttons)等等.

  5. 通知管理器(Notification Manager):可以在"状态栏中"显示自定义的提示信息

  6. 包管理器(Package Manger):对Android系统内的程序管理

  7. Telephony Manager主要提供了一系列用于访问与手机通讯相关的状态和信息的方法,查询电信网络状态信息,sim卡的信息等。

  8. Resource Manager提供非代码资源的访问,如本地字符串,图形,和布局文件(Layout files )。

  9. Location Manager提供设备的地址位置的获取方式。很显然,GPS导航肯定能用到位置服务。

  10. XMPP可扩展通讯和表示协议。前身为Jabber,提供即时通信服务。例如推送功能,Google Talk。

Android 4大组件,6大布局,view等系统定义的原生组件都在这层。

3.系统运行库层:

Native C/C++ Libraries:C/C++程序库,许多核心 Android 系统组件和服务(例如 ART 和 HAL)构建自原生代码,需要以 C 和 C++ 编写的原生库。Android 平台提供 Java 框架 API 以向应用显示其中部分原生库的功能。例如,您可以通过 Android 框架的 Java OpenGL API 访问 OpenGL ES,以支持在应用中绘制和操作 2D 和 3D 图形。

如果开发的是需要 C 或 C++ 代码的应用,可以使用 Android NDK 直接从原生代码访问某些原生平台库。也可以利用一些.a静态库和.so动态库,NdK和Jni的开发,C和C++平台的代码移植等都需要动这层代码,编译。

Android Runtime:运行时库 ,  Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为.dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。(dx 是一套工具,可以将 Java .class 转换成 .dex 格式. 一个dex档通常会有多个.class。由于dex有时必须进行最佳化,会使档案大小增加1-4倍,以ODEX结尾。)然而Dalvik VM 效率并不是最高的。从 Android 4.4 开始,Google 开发者引进了新的 Android 运行环境 ART(意思就是 Android Runtime。Android 官方页面的介绍中,也将其称作新的虚拟机),以替代旧的 Dalvik VM。Android 5.0之后就彻底的代替了。ART 的机制与 Dalvik 不同。在Dalvik下,应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率,而在ART 环境中,应用在第一次安装的时候,字节码就会预先编译成机器码,使其成为真正的本地应用。这个过程叫做预编译(AOT,Ahead-Of-Time)。这样的话,应用的启动(首次)和执行都会变得更加快速。代价就是安装会慢。里面有 预先 (AOT) 和即时 (JIT) 编译,优化的垃圾回收 (GC),更好的调试支持,包括专用采样分析器、详细的诊断异常和崩溃报告,并且能够设置监视点以监控特定字段,Android Runtime Excepiton  就出自这里。

 

4.Hardware Abstraction Layer:硬件抽象层(HAL) 硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如:Audio音频模块,BlueTooth:蓝牙模块,Camera:相机模块,Sensors:传感器。系统内置对传感器的支持达13种,他们分别是:加速度传感器(accelerometer)、磁力传感器(magnetic field)、方向传感器(orientation)、陀螺仪(gyroscope)、环境光照传感器(light)、压力传感器(pressure)、温度传感器(temperature)和距离传感器(proximity)等。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。厂商会在这层定义自己的HAL接口。

5.Linux Kernel:Linux内核层

Android依赖于Linux2.6内核提高的高核心系统服务,例如安全,内存管理,进程管理,网络斎等等方面内容。内核作为一个抽象层,存在与硬件层和软件层之间。android对Linux下面内容做了增强。 有下面这些驱动

        1.音频(Audio)

   2.android IPC机制(Binder机制)跨进程通讯。一般来说,Android中为一个应用程序开启一个进程进行执行,一个应用里面可以多个线程。

        3.显示 (Display)主要是屏幕显示。

        4.按键(Keypad) 处理按键的分发等

        5.蓝牙(BlueTooth)

        6.相机(Camera)

        7.内存分配与共享(Shared Memory)

   8.USB

        9.WIFI

最后是  电源管理(power management)

 

 

 

你可能感兴趣的:(Android,基础知识整理,android)