zoukankan      html  css  js  c++  java
  • 【译】Android系统架构

    让我们来快速预览一下整个android系统的架构。从下面的图中我们可以发现,这个架构分为几个不同的层,底层为上一层提供服务。

     

    Linux Kernel

    android系统建立在一个坚固的基石上:Linux内核。Linus Torvalds于1991年创建了它。Linux内核为android提供了硬件抽象层,使得android可以
    很轻松的安装在各种平台上,而不用关系硬件的差异。
    从本质上来说,Linux为android提供了内存管理,进程管理,网络服务,和其他的一些系级别的服务。Android用户不会知道Linux的存在,开发者的应用程序往往也无需直接调用Linux内核级别的API。作为一个android开发者,你不会直接接触Linux内核层面的东西,但是你最好了解有这么一回事。

                        

    Native Libaraies(本地库)

    Linux 内核的上一层就是Android的本地库了,这些库都是用 C 或者C++写的。他们为特定的硬件构架编译,并被手机供应商预装在手机中。
    一些重要的库:

    • Surface Manager 界面管理器

    android使用了一种组合的窗口管理机制,你的程序绘图指令并不是直接作用在屏幕上,而是先保存到绘图指令列表中,然后和屏幕上的其他窗口绘图指令组合绘制,
    最后显示给用户。这使得系统可以完成一些有趣的窗口变化。

    • 2D 和 3D 绘图

     可以在同一个用户界面中使用2D和3D绘图。硬件将快速的渲染这些指令,提高速递。

    • 音视频解码

        Android可以播放视频,录制视频一些格式的视频,如ACC AVC MP3 MPEG-4

    • SQL数据库

    Android本身包含一个轻量级的数据库:SQLite 。火狐浏览器和苹果手机也是使用的这个数据库。你的程序可以通过数据库将一些数据永久保存到手机中。

    • 浏览器引擎

    为了快速显示HTML描述的内容,Android使用了Chromium库,同样使用这个库的还有谷歌浏览器,苹果的Safari 。

    这些库本身并不是完整的应用程序,他们的作用是为上层的应用程序提供支持。如果你感兴趣,你可以用NDK来编写你自己的本地库。

    Android Runtime 运行时

    在Linux内核上面的还有Android Runtime,它包括运行环境和java核心库。根据Android版本的不同,运行环境可以是Dalvik或者ART。

    Dalvik是Google专门为Android编写的一个虚拟机,你的应用程序在编译后被转换为平台无关的字节码文件,然后,在程序运行时,Dalvik解释并执行这些字节码指令。尽管这个字节码的格式和一般java字节码格式不同,但是Dalvik实质还是一个java虚拟机。只不过它对内存的要求低一些。并且,Android系统可以为多个程序同时运行多个虚拟机,他们之间是隔离的。

    Dalvik与传统的java虚拟机有2个重要的不同之处:

    Dalvik运行的是.dex后缀的文件。在编译期间,传统的.class 文件会被转化为.dex文件,.dex文件比传统的.class文件更加紧凑高效。这样做是考虑到手机等移动设备有限的

    电量和内存。

    Android runtime 层中的java core library 和 传统的 JavaEE  javaME库都不是完全相同的。

    ART是在Andriod5.0中用来取代 Dalvik 的运行环境。当应用程序初次被安装时,ART就将它进行编译,这样通过预编译,以后每次启动应用程序时,就无需再编译了。

    ART的缺点:

    1、安装时间会变长,因为要在安装时预编译。

    2、机器码占用的存储空间更大。

    Application Framework  应用程序框架

    再上一层,就是应用程序框架了。这个层为Android应用程序开发提供了高层次的开发模块。方便你用来开发应用程序。他们被预装到android系统中
    下面手是一些重要的部分


    • Activity Manager:
    它控制着应用程序的生命周期,并维护着一个程序公用的回退栈。

    • Content providers:
    封装着应用程序之间共享的信息。比如联系人等。

     

    • Resource manager:
    资源管理器,管理应用程序的非代码部分。


    • Location manager:
    地区管理器:无论你的Android手机在哪里,它都知道知己的所处地区环境。

    • Notification manager:
    通知管理器:用来通知一些消息事件,比如新的信息,闹钟,等等。

    Application and Widget  应用程序和控件

    Application 应用程序会占据整个屏幕来与用户交互,而Widget  (控件)则只占据一个小的矩形区域。

  • 相关阅读:
    数据库访问性能优化(转)
    Mysql分表和分区的区别、分库分表介绍与区别
    怎样玩转千万级别的数据(表分区)
    关于Blocking IO,non-Blokcing IO,async IO的区别和理解
    spring security四种实现方式
    使用百度网盘+Git,把版本控制托管到云端,附精彩评论
    Linux下C/C++帮助手册安装方法
    GNU自动化工具使用全过程详解,以及在线手册
    autotools工具使用 good
    使用 GNU Libtool 创建库
  • 原文地址:https://www.cnblogs.com/lulipro/p/5467622.html
Copyright © 2011-2022 走看看