• android体系结构介绍


    Android分为4层,从高到低分别是应用层、应用框架层、系统运行层和Linux内核层。下面将对这4层进行简单的分析和介绍。

    应用层

    应用层是指用Java语言编写的运行在虚拟机的程序,如图1—1中最上层部分所示。其实,Google最开始就在Android系统中捆绑了一些核心应用,比如E-mail客户端、SMS短消息程序、日历、地图、浏览器、联系人管理程序等。

    应用框架层

    这一层是编写Google发布的核心应用是所使用的API框架,开发人员同样可以使用这些框架来开发自己的应用,在使用时必须遵守其框架的规则。

    从图1—1中可以看出,Android提供了如下一些组件。

    View(可扩展的视图):可以用来构建应用程序,它包括List、Grid、Text Box、Button,以及可以嵌入的Web浏览器。

    Content Providers(内容提供器):它可以让一个应用访问另一个应用的数据或共享它们自己的数据库。

    Resource Manager(资源管理器):提供非代码资源的访问,如本地字符串、图形和布局文件。

    Notification Manager(通知管理器):应用可以在状态栏中显示自定义的提示信息。

    Activity Manager(活动管理器):用来管理应用程序生命周期并提示常用的导航退回功能。

    Window Manager(窗口管理器):管理所有的窗口程序。

    Package Manager(包管理器):Android系统内的程序管制。

    系统运行库(C/C++库以及Android运行库)层

    当使用Android应用框架时,Android系统会通过一些C/C++库来支持我们使用的各个组件,使其更好的为我们服务。

    Bionic系统C库:C语言标注库,系统最底层的库,C库通过Linux来调用。

    Media Framework(多媒体库):Android系统多媒体库,基于PacketVideo OpenCORE,该库支持多种常见格式的音频、视频的回放和录制,以及图片。

    SGL:2D图形引擎库。

    SSL:位于TCP/IP协议与各种应用层协议之间,为数据通信提供支持。

    OpenGL:3D效果的支持。

    SQLite:关系数据库。

    Webkit:Web浏览器引擎。

    FreeType:位图和矢量图。

    每个Java程序都运行在Dalvik虚拟机上。每一个Android程序都有自己的进程,Dalvik虚拟机只执行.dex的可执行文件。当Java程序通过编译,最后还需要通过SDK中的dx工具转化成.dex格式才能正常在虚拟机上运行。

    Linux内核层

    Android的核心系统服务于Linux2.6内核,如安全性、内存管理、进程管理、网络协议栈和驱动模型等都依赖与该内核。Linux内核同时也作为硬件和软件之间的轴向层。

    Android更多的是需要一些与移动设备相关的驱动程序,主要的驱动如下所示。

    Display Driver(显示驱动):基于Linux的Frame Buffer(帧缓冲)驱动。

    KeyBoard Driver(键盘驱动):作为输入设备的键盘驱动。

    Flash Memory Driver(Flash内存驱动):基于MTD的Flash驱动程序。

    Camera Driver(照相机驱动):常用的基于Linux的v412(Video for Linux)驱动。

    Audio Driver(音频驱动):常用的基于ALSA(Advanced Linux Sound Architecture)的高级Linux声音体系驱动。

    Bluetooth Driver(蓝牙驱动):基于IEEE802.15.1标准的无线传输技术。

    Binder IPC驱动:Android的一个特殊驱动,具有单独的设备节点,提供进程间通信的功能。

    Power Management(电源管理):电池电量等。

    Android提供给应用开发者的本身就是一个框架,所有应用开发都必须遵守这个框架的原则。开发应用时就是在这个框架上进行扩展,下面介绍Android的这个框架提供了哪些功能。

    android.app:提供高层的程序模型和基本运行环境。

    android.content:包含对各种设备上的数据进行访问和发布。

    android.databses:通过内容提供者浏览和操作数据库。

    android.graphics:底层的图形库,包含画布、颜色过滤、点、矩形、,可以将它们直接绘制到屏幕上。

    android.location:定位和相关服务的类。

    android.media:提供一些类管理多种音频、视频的媒体接口。

    android.net:提供帮助网络访问的类,超过常用的java.net.*接口。

    android.os:提供了系统服务、消息传输和IPC机制。

    android.opengl:提供OpenGL工具。

    android.provider:提供访问Android内容提供者的类。

    android.telephony:提供与拨打电话相关的API操作。

    android.view:提供基础的用户界面接口框架。

    android.util:涉及工具性的方法,例如时间日期的操作。

    android.webkit:默认浏览器操作接口。

    android.widget:包含各种UI元素在应用程序的布局中。

  • 相关阅读:
    String StringBuffer StringBuild的区别
    String比较涉及知识点 实例
    maven build失败 (Failure to find io.renren:renren-security:pom:3.2.0 in http://maven.aliyun.com/nexus/content/groups/public/ was cached in the local repository...)
    mysql压缩包安装相关过程命令
    FastDFS搭建单机图片服务器(二)
    FastDFS搭建单机图片服务器(一)
    JDK8 parallelStream性能测试
    idea 获取resources资源目录下文件
    idea / eclipse 批量 替换 空白行
    阻塞队列 BlockingQueue 常用方法详解
  • 原文地址:https://www.cnblogs.com/shanzei/p/2413631.html
Copyright © 2020-2023  润新知