Android系统架构概况
Android的架构图如下,图中按照功能结构及面向人群进行划分,可以看出Android分成三个部分:
应用部分:包含在Android设备上运行的所有应用,它们是Android系统中直接面向用户的部分。
核心部分: Android系统中核心的功能实现,包括应用框架、核心类库等,每个Android应用的开发者,都是在此基础上进行应用开发的。
底层部分:主要指Android寄宿的Linux操作系统及相关驱动。通常来说,只有硬件厂商和从事Android移植的开发者,才会基于此来进行开发。
除了上述划分方式以外,从系统实际的架构模型来看,Android则可以分成以下几个层次:
应用层
框架层
运行时
核心类库
硬件抽象层
Linux内核
本文的后续内容将针对以上各层逐一进行分析。
1.1.1 应用层
对于普通的用户而言,只能通过具体的应用来判断移动平台的优劣。即便一个移动平台具有华丽的技术,但是如果不能给用户提供得心应手的应用,顶多也只能赢得无冕的名头,而无法抓住用户的心,赢得市场的认可。
Android应用层由运行在Android设备上的所有应用共同构成,它不仅包括通话、短信、联系人等系统应用(随Android系统一起预装在移动设备上),还包括其他后续安装到设备中的第三方应用。
第三方应用都是基于Android提供的SDK(Software Development Kit)进行开发的,并受到SDK接口的约束。而预装在设备中的系统应用,则可以调用整个框架层的接口和模块,其中的很多接口在SDK中是隐藏的,因此,系统应用具有比第三方应用更多的权利。
Android的应用都是基于Java语言来开发的,但在很多应用(尤其是游戏)中,需要进行大规模的运算和图形处理,以及使用开源C/C++类库。通过Java来实现,可能会有执行效率过低和移植成本过高等问题。因此在Android开发中,开发者可以使用C/C++来实现底层模块,并添加JNI(Java Native Interface)接口与上层Java实现进行交互,然后利用Android提供的交叉编译工具生成类库并添加到应用中。
为了让应用开发者能够绕过框架层,直接使用Android系统的特定类库,Android还提供了NDK(Native Development Kit),它由C/C++的一些接口构成,开发者可以通过它更高效地调用特定的系统功能。
但在Android上,开发者通常只能使用C/C++编写功能类库,而不是整个应用。这是因为,诸如界面绘制、进程调度等核心机制是部署在框架层并通过Java来实现的,应用只有按照它们规定的模式去编写特定的Java模块和配置信息,才能够被识别、加载和执行。
小贴士 从Android 2.3(API 9)开始,新增了android.app.NativeActivity类,它是通过调用预定义的JNI接口来实现的。开发者可以基于NDK,通过C/C++语言来实现具体功能。这意味着,开发者仅通过C/C++语言能实现整个应用。这对于游戏开发者而言是一大喜讯,但由于控件在Android中并没有Native的实现,普通的应用开发者通常还是需要通过Java来实现上层界面。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341