<查漏补缺_Android基础系列>体系架构

96
玉圣
2019.04.05 17:54* 字数 1999

本文主要总结的内容如下:

  • 一、框架简介
    1、框架
    2、Dalvik虚拟机与ART虚拟机
    3、Android应用程序框架(APPLICATION FRAMEWORK)
    4、简述下Android 数字签名

一、框架简介

1、框架

  • 总结:
    Android系统架构包含四层:Linux内核层,库和运行时、Framework层、应用层。Android的体系架构鼓励系统组件重用,共享组件间的数据,并定义组件间的访问控制权限。这些层次结构既相互独立,又互相关联。

  • 说明:
    1、每个Android应用程序都运行在它自己的Dalvik 实例的一个进程中。
    2、DalvikAndroid运行时位于一个Linux 内核之上。
    3、Android软件栈 是通过一个应用程序框架提供一个Linux 内核和一个C/C++库集合,而该应用程序框架为运行时和应用程序提供服务,并对它们进行管理。

    Android体系架构(Android软件栈)

  • Android软件栈(体系架构)
    1、Linux内核(Linux KERNEL)
    Linux提供了核心服务(硬件驱动程序、进程和内存管理、安全、网络和电源管理),而且内核还在硬件和软件栈的其他部分之间提供了一个抽象层。

    2、库(LIBRARIES)
    包含各种C/C++ 核心库(如libc和SSL),以及:

    • 用来回放音频和视频媒体的媒体库
    • 用来管理显示的外观管理器
    • 包含用于2D3D图形的SGLOpenGL 的图形库
    • 用于本地数据库支持的SQLite
    • 用于集成Web浏览器和Internet 安全的SSLWebkit

    3、Android运行时(ANDROID RUNTIME)
    它是向应用程序提供动力的引擎,它和 一起形成了应用程序框架的基础。

    • 核心库(Core Libraries):提供了Java核心库以及Android特定库可用的大部分功能
    • Dalvike虚拟机(Dalvik Virtual Machine):Dalvik是一个基于寄存器的虚拟机,它已经被优化从而确保一个设备可以高效地运行多个实例。它依赖Linux内核进行线程和底层内存管理。

    4、应用程序框架(APPLICATION FRAMEWOR)
    应用程序框架提供了用来创建Android应用程序的类。它还对硬件访问提供了一般抽象,并管理用户界面和应用程序资源。

    5、应用层(APPLICATIONS)
    所有的应用程序,包括原生的和第三方的,都在应用层上使用相同的库进行构建。
    应用层运行在Android运行时 内,并使用了应用程序框架中可用的类和服务。

相关链接:android平台原理机制

2、Dalvik虚拟机与ART虚拟机

  • Dalvik虚拟机
    1、使用设备底层Linux内核来处理基本的功能,包括安全、线程以及进程和内存管理。
    2、可以编写直接运行在底层Linux OS 上的C/C++ 应用程序,但大部分没必要。
    3、Dalvik虚拟机的特点是在运行时才进行编译。
    4、每次运行时,字节码都需要通过即时编译器(JIT, just in time),转换为机器码。这会使得应用程序的效率降低。

  • ART虚拟机(Android Runtime)
    1、从Android5.0开始,默认采用ART虚拟机。
    2、在ART中,系统在安装应用时会进行一次预编译(AOT,ahead of time),将字节码预先编译成机器码并存储在本地,这样应用每次运行时就不需要执行编译了,运行效率也大大提升。

3、Android应用程序框架(APPLICATION FRAMEWORK)

下面的应用程序服务是所有Android应用程序的框架基础,它们提供了常用软件都会使用到的框架:

  • Activity Manager 和Fragment Manager
    分别控制ActivityFragment 的生命周期,包括对Activity 栈的管理。
  • 视图(View)
    用来为ActivityFragment 构建用户界面。
  • Notification Manager(通知管理器)
    提供了一种一致的和非打断性的机制来通知用户。
  • Content Provider(内容提供者)
    让应用程序可以共享数据。
  • Resource Manager(资源管理器)
    支持像字符串和图形这样的非代码资源的具体化。
  • Intent
    提供了一种在应用程序及其组件之间传递数据的机制。

等等

4、简述下Android 数字签名

  • 总结:
    在Android系统中,所有安装到系统的应用程序都必有一个数字证书,此数字证书用于标识应用程序的作者和在应用程序之间建立信任关系。

  • 1、详细说明:
    Android系统要求每一个安装进系统的应用程序都是经过数字证书签名的,数字证书的私钥则保存在程序开发者的手中。Android将数字证书用来标识应用程序的作者和在应用程序之间建立信任关系,不是用来决定最终用户可以安装哪些应用程序。

    这个数字证书并不需要权威的数字证书签名机构认证(CA),它只是用来让应用程序包自我认证的。

  • 2、数字证书的好处:
    同一个开发者的多个程序尽可能使用同一个数字证书,这可以带来以下好处。

    • 有利于程序升级,当新版程序和旧版程序的数字证书相同时,Android系统才会认为这两个程序是同一个程序的不同版本。如果新版程序和旧版程序的数字证书不相同,则Android系统认为他们是不同的程序,并产生冲突,会要求新程序更改包名。

    • 有利于程序的模块化设计和开发。Android系统允许拥有同一个数字签名的程序运行在一个进程中,Android程序会将他们视为同一个程序。所以开发者可以将自己的程序分模块开发,而用户只需要在需要的时候下载适当的模块。

  • 3、在签名时,需要考虑数字证书的有效期:

    • 数字证书的有效期要包含程序的预计生命周期,一旦数字证书失效,持有改数字证书的程序将不能正常升级。
    • 如果多个程序使用同一个数字证书,则该数字证书的有效期要包含所有程序的预计生命周期。
    • Android Market强制要求所有应用程序数字证书的有效期要持续到2033年10月22日以后。
  • 4、Android数字证书包含以下几个要点:

    • 所有的应用程序都必须有数字证书,Android系统不会安装一个没有数字证书的应用程序
    • Android程序包使用的数字证书可以是自签名的,不需要一个权威的数字证书机构签名认证
    • 如果要正式发布一个Android ,必须使用一个合适的私钥生成的数字证书来给程序签名,而不能使用adt插件或者ant工具生成的调试证书来发布。
    • 数字证书都是有有效期的,Android只是在应用程序安装的时候才会检查证书的有效期。如果程序已经安装在系统中,即使证书过期也不会影响程序的正常功能。
Android学习总结
Gupao