美文网首页
Android 平台架构

Android 平台架构

作者: 记得柒叁贰 | 来源:发表于2018-04-25 23:37 被阅读0次

    Android是一个基于Linux内核的、开源的软件栈,为各种类型的设备而创建。
    下图给出了Android平台的大致组成结构:

    The Android software stack

    Linux 内核

    Android平台的基石就是Linux内核。比如,Android运行时(ART)的一些基本功能如线程管理、低内存管理都依赖于Linux内核。
    Android利用Linux内核提供的关键安全特性,允许设备制造商为一个著名的内核开发硬件驱动。

    硬件抽象层(HAL)

    硬件抽象层提供标准接口,并暴露设备的硬件功能给高一级的Java API框架。硬件抽象层由多个库模块组成,每一个都为特定类型的硬件组件实现了一个接口,比如相机或者蓝牙模块。当框架层的api调用设备硬件时,Android系统会加载那个硬件组件的库模块。

    Android运行时

    运行着Android5.0及以上的设备,每一个应用运行在它自己的进程中,拥有它自己的运行时实例。运行时是为了在低内存设备上通过执行DEX文件运行多个虚拟机。DEX文件是为Android特殊设计的一种字节代码格式,为最小内存占用进行了优化。构建工具链如Jack,将Java文件编译为DEX字节代码,可以在Android平台运行。
    ART的主要特性如下:

    • AOTJIT编译
    • 优化垃圾回收
    • 支持更好地调试,包括一个专门的采样分析器、详细的异常诊断和崩溃报告,而且可以设置断点监视指定域

    Android5.0之前,Android运行时是Dalvik。如果你的应用可以在ART上运行良好,那么在Dalvik上也会很好的运行,反过来则不一定。
    Android也包括一些核心的运行时库,提供了Java API框架层使用的Java语言编程的大部分功能,包括Java8的特性。

    原生C/C++库

    很多核心的Android系统组件和服务,如ARTHAL,都是用原生代码编写的,要求用CC++编写原生库。Android平台提供了Java框架的API,可以为应用提供这些原生库中的一些功能。比如,你可以通过Android框架的Java OpenGL API调用OpenGL ES在你的应用中添加对2D3D图形的绘画操作的支持。

    Java API 框架

    通过使用Java语言编写的API,你可以使用Android系统所有的特性。这些API构成了你创建Android应用所需的基础,简化了核心模块化的系统组件和服务的复用,包括如下:

    • 丰富的、可扩展的View系统,你可以用来创建应用的UI,包括list、grid、text boxes、buttons,甚至是嵌入的web浏览器。
    • 资源管理器,提供了对非代码资源的调用,如,本地化字符串,图像资源以及布局文件等
    • 通知管理器,使所有的应用都可以在状态栏显示定制的alerts
    • Activity管理器,管理应用的声明周期,并提供一个公共导航回退栈
    • Content Provide,使应用获取其他应用的数据,如联系人,或者分享他们自己的数据

    开发者和系统应用拥有完全一样的框架API

    系统应用

    Android自带一些核心应用,如邮件、信息、日历、网络浏览器和联系人等。平台提供的应用和用户选择安装的应用有相同的状态。因此,一个安装的第三方应用可以作为用户默认的浏览器、默认信息程序以及默认输入法。
    系统应用程序既可以作为用户的应用程序,也可以提供开发人员从自己的应用程序访问的关键功能。比如,如果你的应用想发送一条短信,你不必自己编写这个功能而是调用任何一个已经安装的SMS应用给你指定的收件人发送短信

    相关文章

      网友评论

          本文标题:Android 平台架构

          本文链接:https://www.haomeiwen.com/subject/bzmulftx.html