Android系统结构

Android系统结构

Android架构分为3部分:应用部分(Android设备上运行的程序)、核心部分(Android系统的核心实现:应用框架、核心类库)、底层部分(Linux系统及相关驱动)。

从实际的架构模型分:

应用层、框架层、运行时、核心类库、硬件抽象层、Linux内核

 

Android开发中,开发者使用C/C++开发底层服务,并添加JNI接口与上层Java实现交互。利用Android的交互编译工具生成类库、添加到应用中。

让了让开发者绕过框架层,Android提供NDKNative Development kit,C/C++接口构成。

 

框架层服务有:组件管理、窗口管理、地理信息服务、电源管理、通话管理……所有服务寄宿在系统核心进程,在运行时,每个服务单独占用一个线程。通过进程通信机制IPC发送消息和传输数据。

 

Android的运行时由Java核心类库和java虚拟机DalvikDalvik负责动态执行应用,分配空间,管理对象生命周期。

Dalvik没有使用传统的二进制码,而是使用新的二进制.dex:先生成.class,在生成.dex。在转换过程中,会对部分.class文件进行指令转义,利用DalvikOpCodes指令集替换,提高执行效率(代码混淆)。

因此.dex.class文件小。

 

Android界面框架中最有特色的是资源和布局,通过控件库和接口设计,开发者可以快速搭建界面。

每个交互界面都有控件树构成。控件都派生自View。非子节点控件派生自ViewGroup

最有特色的控件:布局控件。

 

Android数据存储的最大特点是数据的私有化,数据共享通过数据源组件Content Provider实现。数据放入SD卡则可以被所有应用使用。

 

开发者通过Http或者Socket与网络通讯。支持点到端的连接及点到点的蓝牙连接(借助开源项目BlueZ)。内嵌了浏览器组件WebKit

 

地理位置信息不但可以给予GPS定位,还可以根据基站信息定位。基站信息定位比GPS定位准确度低,但灵活适应能力强,低碳环保。

 

Android支持主流的音视频,主要借助于开源项目OpenCORE。基于C/C++实现的音视频库,放于Android的核心类库中。图像处理基于开源项目Skia

 

Android特色功能模块有:统一的账号管理系统、全局的时间通知机制Notification(当应用需要将消息即时推送给用户时,可以使用android.app.NotificationManager对象,将消息发送到系统的状态栏中,并利用声音、震动、图标等方式提醒用户)。

 

Android的架构特征和设计思想:不同于塞班的提升性能角度出发,Android基于当前环境,考虑了设备的兼容性,增强了应用间的功能复用,优化了网络服务,简化了开发难度。

 

平台开放性:最大的挑战是兼容,兼容不同的硬件设备、屏幕大小、外设、语言环境等。Android底层架设在Linux上,Linux可移植性强,保证了Android在不同硬件上运行。在上层,Android为应用提供了增强兼容的机制。

 

基于组件的设计:组件通过配置文件描述,在Android中有明确的组件边界,弱化了进程边界和应用边界。

 

基于网络服务的平台:无缝支持各类移动网络,内嵌浏览器组件。

 

猜你喜欢

转载自aoyouzi.iteye.com/blog/1978305