欢迎来到天天文库
浏览记录
ID:6858190
大小:89.65 KB
页数:5页
时间:2018-01-28
《android系统架构概述》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android的架构图如下,图中按照功能结构及面向人群进行划分,可以看出Android分成三个部分: 应用部分:包含在Android设备上运行的所有应用,它们是Android系统中直接面向用户的部分。 核心部分:Android系统中核心的功能实现,包括应用框架、核心类库等,每个Android应用的开发者,都是在此基础上进行应用开发的。 底层部分:主要指Android寄宿的Linux操作系统及相关驱动。通常来说,只有硬件厂商和从事Android移植的开发者,才会基于此来进行开发。 除了上述划分方式以外,从系统实际的架构模型来
2、看,Android则可以分成以下几个层次: 应用层 框架层 运行时 核心类库 硬件抽象层 Linux内核 本文的后续内容将针对以上各层逐一进行分析。 1.1.1 应用层 对于普通的用户而言,只能通过具体的应用来判断移动平台的优劣。即便一个移动平台具有最华丽的技术,但是如果不能给用户提供最得心应手的应用,顶多也只能赢得无冕之王的名头,而无法抓住用户的心,赢得市场的认可。 Android应用层由运行在Android设备上的所有应用共同构成,它不仅包括通话、短信、联系人等系统应用(随Android系统一起预装在移动设
3、备上),还包括其他后续安装到设备中的第三方应用。 第三方应用都是基于Android提供的SDK(SoftwareDevelopmentKit)进行开发的,并受到SDK接口的约束。而预装在设备中的系统应用,则可以调用整个框架层的接口和模块,其中的很多接口在SDK中是隐藏的,因此,系统应用具有比第三方应用更多的权利。 Android的应用都是基于Java语言来开发的,但在很多应用(尤其是游戏)中,需要进行大规模的运算和图形处理,以及使用开源C/C++类库。通过Java来实现,可能会有执行效率过低和移植成本过高等问题。因此在Andr
4、oid开发中,开发者可以使用C/C++来实现底层模块,并添加JNI(JavaNativeInterface)接口与上层Java实现进行交互,然后利用Android提供的交叉编译工具生成类库并添加到应用中。 为了让应用开发者能够绕过框架层,直接使用Android系统的特定类库,Android还提供了NDK(NativeDevelopmentKit),它由C/C++的一些接口构成,开发者可以通过它更高效地调用特定的系统功能。 但在Android上,开发者通常只能使用C/C++编写功能类库,而不是整个应用。这是因为,诸如界面绘制、进
5、程调度等核心机制是部署在框架层并通过Java来实现的,应用只有按照它们规定的模式去编写特定的Java模块和配置信息,才能够被识别、加载和执行。 小贴士 从Android2.3(API9)开始,新增了android.app.NativeActivity类,它是通过调用预定义的JNI接口来实现的。开发者可以基于NDK,通过C/C++语言来实现具体功能。这就意味着,开发者仅通过C/C++语言就能实现整个应用。这对于游戏开发者而言是一大喜讯,但由于控件在Android中并没有Native的实现,普通的应用开发者通常还是需要通过Java来
6、实现上层界面。 1.1.2 框架层 框架层是Android系统中最核心的部分,它集中体现了Android系统的设计思想。在Android之前,有很多基于Linux内核打造的移动平台。作为超越前辈的成功范例,框架层的设计正是Android脱颖而出的关键所在。 框架层由多个系统服务(SystemService)共同组成,包括组件管理服务、窗口管理服务、地理信息服务、电源管理服务、通话管理服务,等等。所有服务都寄宿在系统核心进程(SystemCoreProcess)中,在运行时,每个服务都占据一个独立的线程,彼此通过进程间的通信机
7、制(Inter-ProcessCommunication,IPC)发送消息和传输数据。 应用层中的应用,时刻都在与这些系统服务打交道。每一次构造窗口、处理用户交互事件、绘制界面、获得当前地理信息、了解设备信息等操作,都是在各个系统服务的支持下实现的。 而对于开发者而言,框架层最直观的体现就是SDK,它通过一系列的Java功能模块,来实现应用所需的功能。SDK的设计决定了上层应用的开发模式、开发效率及能够实现的功能范畴。因此,对于开发者而言,关注SDK的变迁是一件很有必要的事情,SDK每个新版本的诞生,都意味着一些老的接口会被调
8、整或抛弃,另一些新的接口和功能火热出炉。开发者不但要查看和关注那些被修改的接口,来检查应用的兼容性,并采取相应的策略去适应这些变化,更重要的是,开发者还要追踪新提供的接口,寻找改进应用的机会,甚至是寻求开发新应用的可能。 从系统设计的角度来看,A
此文档下载收益归作者所有