我为什么要学习安卓开发?
因为没有仔细看《培养方案》……以为安卓开发是移动方向才有的课,谁知道我们突然开了这一门课~ 我当时的内心想法是:哦耶~~~~~~废话少说!开始学习!

Android系统架构是基于Linux内核的软件平台和操作系统。采用了软件堆层的架构,总共分为五层,如下图所示:

图片来自Android官网
如图所示,Android系统架构分为五层,从下到上他们分别是:


Linux Kernel(Linux内核)

Linux Kernel:即Linux内核,提供由操作系统内核管理底层基础功能。

它包括:安全性、内存管理、进程管理、网络协议栈、电源管理、驱动模型等等等等。

同时Linux内核也是硬件和软件栈之间的抽象层,安卓更多的是需要一些与移动设备相关的驱动程序,比如照相机、蓝牙和USB接口驱动等。


HAL(硬件抽象层)

HAL:即硬件抽象层,向下屏蔽硬件驱动模块的实现细节,向上提供硬件访问服务。

HAL包含多个库模块,其中每个模块都为特定类型的组件实现一个界面,例如相机蓝牙模块。

框架API要求访问设备硬件时,Android将为该硬件组件加载库模块。


中间层次

Android Runtime(安卓运行时)

Android Runtime即安卓运行时,它分为两个部分:

第一个部分:Android Runtime(ART)API 21之前叫做Dalvik虚拟机,它主要负责运行程序,效率高、占用内存少。

第二个部分:Core Libraries,即核心库,它提供了Java语言核心库中的大部分功能。

Native C/C++ Libraries(原生C/C++库)

开发人员可以通过应用程序框架调用这些库函数,具体的内容……以后学到再说


Java API Freamwork(Java API 框架)

可以通过Java编写的API使用Android OS的整个功能集,这些API形成创建安卓应用所需的构建块,它们可以简化核心模块化系统组件和服务的重复使用,主要包括以下组件和服务:

  • Activity Manager:活动管理器,用来管理应用程序的生命周期,并提供常用的导航返回功能
  • Window Manager:窗口管理器,用来管理所有的窗口程序
  • Content Providers:内容提供器,它可以让另一个应用访问另一个应用的数据,或共享他自己的数据
  • View System:视图管理器,用来构建应用程序,比如列表、表格、文本框及按钮等
  • Notification Manager:通知管理器,用来设置在状态栏中显示的提示信息
  • Telephony Manager:电话管理器,用来对联系人及通话记录进行管理
  • Resource Manager:资源管理器,用来提供非代码资源的访问,比如本地字符串、图形及布局文件等等
  • Location Manager:位置管理器,用来提供使用者当前位置等信息,如GPS定位等

System Apps(系统应用)

Android 随附一套用于电子邮件、短信、日历、互联网浏览和联系人等的核心应用。平台随附的应用与用户可以选择安装的应用一样,没有特殊状态。因此第三方应用可成为用户的默认网络浏览器、短信 Messenger 甚至默认键盘(有一些例外,例如系统的“设置”应用)。

系统应用可用作用户的应用,以及提供开发者可从其自己的应用访问的主要功能。例如,如果您的应用要发短信,您无需自己构建该功能,可以改为调用已安装的短信应用向您指定的接收者发送消息。

Logo

开源、云原生的融合云平台

更多推荐