Android 系统架构学习

Android 系统架构学习

作为Android开发者,掌握Android架构是一项必要的技能。这篇文章我们就来聊一聊关于Android架构的那些事。
最近想深入学习下Android系统架构,发现现在网上有两种说法。一种是Google官网的Android四层架构模型,另一种是网上的五种架构模型。我把我学习的收获分享给你。

一、Google官网的Android四层架构模型

这里写图片描述
如上图,Android官方文档的提供的架构图。接下来我会详细介绍下这张图。

Android 大致可以分为四层架构(从底层向上):Linux 内核层、系统运行库层、应用框架层和 应用层。如果细分的话,系统运行库层可以分为两个区域:系统库( 原生C/C++库)和Android运行时,因此网上也有人将架构划分为五块区域,即Linux 内核层、系统库、Android运行时、应用框架层和 应用层。这两种说法本质上是相同的。

Linux 内核层
Android 系统是基于Linux2.6内核的,Linux内核层提供了安全性、进程管理、内存管理、网络协议栈、电源管理以及核心驱动等核心系统服务。同时Linux内核也是系统硬件和软件叠层的之间的抽象层。

我的个人观点:所谓的Linux 内核层就是Android系统的硬件支持,便于Android系统与硬件交互。最优秀的软件系统,不可能凭空操作,需要硬件设施去支持。我的观点你同意吗?

系统运行库层
上面说过这一层包括两块区域:系统库( 原生C/C++库)和Android运行时。

系统库:
系统库通过一些原生的C/C++库来为Android系统提供了主要的技术支持.如SQLite库提供了数据库的支持,OpenGL库提供了3D绘图的支持,Webkit库提供了浏览器内核的支持等.因此有人称为原生C/C++库。

Android运行时:
Android运行时包含Core Libraries 和 Dalvik虚拟机(5.0之后改为ART)两部分。

Core Libraries 提供了Java语言核心库(Java SE API)的大部分功能,并提供Android的核心API,如android.os、android.net、android.util、android.meida等。

Dalvik虚拟机是基于Apache的Java虚拟机,被改进以适应低内存、低处理速度的移动设备环境,负责运行Android应用程序,提供实现进程隔离与线程调试管理、安全和异常管理、垃圾回收等重要功能。 每个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。

我的个人观点:系统运行库层包含Java SE API、Android核心API和Android虚拟机,前者便于开发者进行底层编程比如JNI,后者为Android软件的运行提供支持。这个的观点你同意吗?

应用框架层
这一层主要提供了构建应用程序时可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用这些API来构建自己的应用程序.

其具体的模块内容及功能如下:

(1)Activity Manager(活动管理器):管理各个应用程序活动窗口并为窗口提供交互的接口;

(2)Window Manager(窗口管理器):管理所有开启的窗口程序;

(3)Content Provider(内容提供者):提供应用内或应用程序间数据共享功能;

(4)View System:创建应用程序基本视图组件,如ListView、TextView、WebView等控件;

(5)Notification Manager(通知管理器):用户可以自定义状态栏中的提示信息;

(6)Package Manager(包管理器):应用程序安装进手机后,以包名作为文件夹名进行存储,此API提供诸如应用程序的安装与卸载功能以及提示相关的权限信息;

(7)Resource Manager(资源管理器):提供图片、音视频等非代码资源;

(8)Location Manager(位置管理器):提供位置信息服务;

(9)Telephony Manager(电话管理器):管理所有移动设备功能;

(10)XMPP服务:Google提供的后台推送服务;

我的个人观点:应用框架层就是提供开发者编程的API。这个的观点你同意吗?

应用层
所有安装在手机上的应用程序上都是属于这一层的,比如系统自带的联系人、短信、日历、通话、短信、浏览器等程序,或者是你从google paly(google应用商店,在国内不同的手机品牌有不同的应用商店)上下载的应用,当然还包括你自己开发的程序.

我的个人观点:应用层就是Android设备上的各种各样的软件和系统内置的软件。这个的观点你同意吗?

二、网上的五种架构模型

这里写图片描述
先看图,给你直观的感受。我大概查询了下,这种说法是近几年才开始的。其实你认真观察,就可以发现与官网的说法区别在于Linux 内核层的划分,

拷贝网上的的一些解释:

Linux 内核

Android 平台的基础是 Linux 内核。例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低层内存管理。

使用 Linux 内核可让 Android 利用主要安全功能,并且允许设备制造商为著名的内核开发硬件驱动程序。

硬件抽象层 (HAL)

硬件抽象层 (HAL) 提供标准界面,向更高级别的 Java API 框架显示设备硬件功能。HAL 包含多个库模块,其中每个模块都为特定类型的硬件组件实现一个界面,例如相机或蓝牙模块。当框架 API 要求访问设备硬件时,Android 系统将为该硬件组件加载库模块。

我个人的观点是这种说法把Linux 内核层分为两块:Linux 内核和硬件抽象层 (HAL)。如果细心的朋友会发现我在四层结构模型中Linux 内核层的解释中有这样一句话“同时Linux内核也是系统硬件和软件叠层的之间的抽象层”。所以我认为这种说法有一定的道理。不过我建议你还是以官网的说法为主。

总结:

Android系统架构的介绍到此就结束了。如果此篇博客有助于您的学习,那是我的荣幸!如果此篇博客有任何瑕疵,请多多指教! 在此,感谢您的学习和指教!

参考博客:
Android系统架构5层

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值