Android体系结构

1.Linux Kernel---Linux内核

Android的核心系统服务依赖于Linux内核,如安全性内存管理,进程管理,网络协议栈和驱动模型。Linux内核也同时作为硬件和软件栈之间的抽象层。Linux内核层为各种硬件提供了驱动程序,如显示驱动、相机驱动、蓝牙驱动、电池管理等等。

2.Libraries库

Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。它们通过Android应用程序框架为开发者提供服务。以下是一些核心库:

(1)外观管理器(SurfaceManager):对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。

(2)媒体库(Media Framework):基于PacketVideoopencore,该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4,H.264,MP3,AAC,AMR,JPG,PNG。

(3)SQLite:一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。

(4)OpenGL|ES:基于OpenGL ES API的实现。该库使用了硬件3D加速或高度优化的3D软件光栅。

(5)FreeType:位图(bitmap)和矢量(vector)字体显示。

(6)WebKit:Webkit是一个开源的浏览器排版和渲染引擎,包含WebCore和JavascriptCore。Android平台的WebKit上层由Java语言封装,并且作为API提供给Android应用开发者,而底层使用WebKit核心库(WebCore)进行网页排版。WebKit模块分为两个部分: Java层和C层(webkit库)。Java层和C层通过JNI相互调用

(7)SGL:底层的2D图形引擎

(8)SSL(证书验证):

(9)系统C库(libc):一个从BSD继承来的标准C系统函数库,它是专门为基于embeddedlinux的设备定制的。

3.Android Runtime
Android包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能,每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。 

Dalvik虚拟机:

Dalvik是Google公司自己设计的用于Android平台的虚拟机,它可以简单地完成进程隔离和线程管理,并且提高内存的使用效率。每一个Android应用程序在底层都会对应一个独立的Dalvik虚拟机实例。

Dalvik 虚拟机是基于寄存器结构(寄存器是CPU上的一块缓存,寄存器的存取速度比内存中存取的速度快很多,这样就可以根据硬件最大限度地优化设备)。Dalvik 虚拟机运行的其专有的.dex文件,Android程序会在编译成.class字节码文件后,通过工具将所有的.class文件转换成一个.dex文件,然后Dalvik虚拟机会从其中读取指令和数据,最后的.odex文件是为了在运行过程中进一步提高性能而对.dex文件进行的进一步优化,加快软件的加载速度和开启速度。

Java 虚拟机:

Java虚拟机是基于栈的结构(栈是一个连续的内存空间,取出和存入的速度比较慢)。Java虚拟机运行的是.class字节码文件,Java程序中的Java类会被编译成一个或多个字节码文件(.class)然后打包到.jar文件,之后Java虚拟机会从相应的.class和.jar文件中获取相应的字节码。

Android运行时,其中包括了ART虚拟机(Android 5.0之前是Dalvik虚拟机,ART模式与Dalvik模式最大的不同在于,在启用ART模式后,系统在安装应用的时候会进行一次预编译,在安装应用程序时会先将代码转换为机器语言存储在本地,这样在运行程序时就不会每次都进行一次编译了,执行效率也大大提升。如果您的应用在 ART 上运行效果很好,那么它应该也可在 Dalvik 上运行,但反过来不一定。),每个Java程序都运行在ART虚拟机上,该虚拟机专门针对移动设备进行了定制,每个应用都有其自己的 Android Runtime (ART) 实例。此外,Android运行时还包含一套核心运行时库,可提供 Java API 框架使用的 Java 编程语言大部分功能,包括一些 Java 8 语言功能。
4.Application Framework---应用程序框架

开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统,其中包括; 
(1)活动管理器(ActivityManager):用来管理应用程序生命周期并提供常用的导航回退功能。

(2)窗口管理器(WindowManager):WindowManager继承自ViewManager。WindowManager主要用来管理窗口的一些状态、属性、view增加、删除、更新、窗口顺序、消息收集和处理等。

(3)内容提供器(ContentProviders):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或者共享它们自己的数据

(4)视图系统(ViewSystem),可以用来构建应用程序,它包括列表(lists),网格(grids),文本框(textBoxes),按钮(buttons),甚至可嵌入的web浏览器。

(5)通知管理器(NotificationManager):使得应用程序可以在状态栏中显示自定义的提示信息。

(6)电话管理类(TelephonyManager):用于管理手机通话状态,获取电话信息(设备信息、sim卡信息以及 网络信息),侦听电话状态(呼叫状态服务状态、信号强度状态等)以及可以调用电话拨号器拨打电话

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

(8)定位管理器(LocationManager):获取经纬度等地理信息

5.Applications---应用程序

应用层是一个核心应用程序的集合,所有安装在手机上的应用程序都属于这一层,例如短信,浏览器,通讯录等,或者下载的微信、QQ、支付宝等

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值