《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制

1.5 Android应用程序运行的机制

前面介绍了如何搭建Android开发环境、如何开发Hello Android应用程序以及Android应用程序的调试,接下来在本节中将简要地介绍Android应用程序的运行机制。

1.5.1 应用程序的系统架构

Android平台由应用程序、应用程序框架、Android运行时、系统库以及底层Linux内核构成,详细结构如图1-68所示。

说明

应用程序层里面包含的就是需要读者去发挥创意开发的、各种各样丰富多彩的应用程序,这也是一般Android应用开发人员工作的层次。

1.5.2 应用程序框架

Android应用程序框架是开发Android应用的基础,开发者在开发时有大部分的时间用在调用这一层。Android应用程序框架包含活动管理器、窗口管理器、内容提供者、视图系统、包管理器、电话管理器、位置管理器、资源管理器以及通知管理器等,如图1-69所示。

应用程序框架层各部分的具体功能如下所列。

  • 活动管理器(Activity Manager):管理所有应用程序的生命周期并提供相应的应用程序导航返回栈。
  • 窗口管理器(Window Manager):管理所有的应用程序窗口。
  • 内容提供者(Content Providers):用来在应用程序之间互相读取或者分享数据。
  • 视图系统(View System):主要包含用来构建应用程序界面的基本控件,- 包含普通按钮、列表、文本框和单选按钮、复选框等。
  • 包管理器(Package Manager):用来进行Android系统内的程序管理。
  • 电话管理器(Telephony Manager):用来管理所有与移动电话相关的功能。
  • 位置管理器(Location Manager):提供位置服务。
  • 资源管理器(Resource Manager):为应用程序提供各种资源,如图片、布局文件以及本地化字符串等。
  • 通知管理器(Notification Manager):用于管理显示在状态栏的应用程序中的通知信息。状态栏通常在手机的顶部,如短信、语音邮件提示以及剩余电量等全部会在这里显示。

1.5.3 Android运行时

Android运行时包括核心库(Core Libraires)以及Dalvik虚拟机(Dalvik Virtual Machine)两部分,如图1-70所示。

  • 核心库(Core Libraires)主要包括两部分,一部分是来自于JavaSE中的核心Java部分,如集合框架、多线程等。另一部分由Android核心库,如an- droid.os以及android.media等组成。
  • Dalvik虚拟机(Dalvik Virtual Machine)是一种基于寄存器的Java虚拟机,主要依靠转换工具dx将Java字节码转换为dex格式(.dex)。基于寄存器的Java虚拟机的优点是所需资源相对较少,同时使用硬件实现虚拟机也会比较容易。

说明

与传统的JavaME不同的是,每个Android应用程序都有一个自己特有的进程,每个应用程序都是使用一个自己持有的Dalvik虚拟机来执行的,而不像在大部分JavaME实现中,多个JavaME应用程序共享一个Java虚拟机进程。

1.5.4 系统库

应用程序框架是最接近于应用程序的软件组件服务,而更底层则是Android的系统函数库(Libraries),这部分是应用程序框架的支撑,其基本架构如图1-71所示。

  • Surface Manager管理对显示子系统的访问,并且负责将不同应用程序2D及3D绘制的结果进行显示合成。
  • Media Framework(媒体函数库)是基于Packet Video公司的OpenCORE发展而成的,使用该函数库可以方便地播放以及录制多种常见格式的影音。这些格式主要包括:MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等。
    SQLite是内嵌到Android系统中的一套轻量级的关系数据库引擎,支持关系数据库的各项功能。
    OpenGL ES:Android是根据OpenGL ES1.0、1.1、2.0、3.0或3.1的 API标准来实现其3D绘图函数库的,该函数库可以以硬件加速方式执行,也可以用软件模拟方式执行(仅限OpenGL ES 1.0与1.1),不过在没有硬件加速的情况下性能会有明显差距。
  • FreeType负责点阵字体以及向量字体的绘图显示。
  • WebKit本身是一个开源项目,许多浏览器也都是用WebKit引擎所开发的,Android下原生自带的浏览器就是基于其实现的。Android将其引入到系统库,大大方便了开发人员HTTP相关功能的开发。
  • SGL库为Android在2D绘图方面提供绘图引擎。
  • SSL位于TCP/IP与各种应用层协议之间,为数据通信提供支持。
  • Libc提供了一套针对于移动设备优化后的C标准库。

1.5.5 底层Linux内核

Android平台开放性的基础是因为其采用了Linux内核,如图1-72所示。Android平台中的操作系统采用了Linux 2.6版的内核,其包括显示驱动、摄像头驱动、Flash内存驱动、Binder(IPC)驱动、键盘驱动、WIFI驱动、视频驱动及电源驱动等。

-Linux内核层是软件层与硬件层之间的桥梁,软件开发人员不必关心底层Linux内核的实现细节,只需将全部精力投入到上层的软件开发中。而实现底层Linux内核的工作是由Google和手机厂商来完成,如驱动的更新或者新驱动的编写等。

时间: 2024-09-11 13:24:03

《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制的相关文章

《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.4节点法向量和面法向量

6.4 点法向量和面法向量 OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例 本章前面几节的案例都是基于球面开发的,球面属于连续.平滑的曲面,因此面上的每个顶点都有确定的法向量.但现实世界中的物体表面并不都是连续.平滑的,此时对于面上的某些点的法向量计算就不那么直观了,图6-18说明了这个问题. 从图6-18中可以看出,顶点A位于长方体左.上.前3个面的交界处,此处是不光滑的.这种情况下顶点A的法向量有两种处理策略,具体如下所列. 在顶点A的位置放置3个不同的顶点,每个顶点看作是仅

《OpenGL ES 3.x游戏开发(上卷)》一第1章 Android概述

第1章 Android概述 OpenGL ES 3.x游戏开发(上卷)随着移动互联网时代的到来,智能手机逐渐走进了人们的生活, Google公司于2007年11月5日发布了基于Linux平台的开源手机操作系统--Android.由于Android系统的开源性以及其他各个方面的因素,其受到了广大手机厂商的青睐,因此需要大量的Android开发人员来满足日益增长的海量软件开发需求. 提示 有些读者可能会有一点奇怪,不是介绍OpenGL ES 3.0的知识吗,怎么一开始就介绍Android呢?这是因为

《OpenGL ES 3.x游戏开发(上卷)》一第2章 游戏开发相关的 Android基础知识

第2章 游戏开发相关的 Android基础知识 OpenGL ES 3.x游戏开发(上卷)虽然本书主要是介绍OpenGL ES 3.0 3D应用及游戏开发的,但由于很多3D游戏应用中还需要用到目标平台的一些其他应用开发方面的知识,而本书3D基础知识部分主要是借助于Android平台来介绍OpenGL ES 3.0 3D应用及游戏开发的.故本章将向读者简要介绍一些在Android游戏开发中必备的一些基础知识,如音效.文件的读取.游戏信息的存储.Socket网络.蓝牙网络等. 提示 由于介绍Andr

OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.3 定位光与定向光

6.3 定位光与定向光 OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例上一节中介绍的光照效果都是基于定位光光源的,定位光光源类似于现实生活中的白炽灯灯泡,其在某个固定的位置,发出的光向四周发散.定位光照射的一个明显特点就是,在给定光源位置的情况下,对不同位置的物体产生的光照效果不同. 现实世界中并不都是定位光,例如照射到地面上的阳光,光线之间是平行的,这种光称为定向光.定向光照射的明显特点是,在给定光线方向的情况下,场景中不同位置的物体反映出的光照效果完全一致.图6-16中对定位

《OpenGL ES 3.x游戏开发(上卷)》一导读

前 言 为什么要写这样一本书随着智能手机硬件性能的不断提升,如水果忍者.极品飞车.狂野飙车等一批优秀的3D游戏娱乐应用在众多智能机用户间流行开来.与此同时,也带动了手机游戏产业逐渐从2D走向3D.但目前国内专门介绍这方面开发的书籍与资料都非常少,同时3D应用开发的门槛又比较高,使得很多初学者无从下手.根据这种情况,笔者结合多年从事3D游戏应用开发的经验编写了本书. 了解一些3D开发领域的技术人员都知道,移动嵌入式平台上的3D应用开发主要是基于OpenGL ES的3个版本,1.x.2.x和3.x.

《Android 3D游戏开发技术宝典——OpenGL ES 2.0》——1.5节Android应用程序运行的机制

1.5 Android应用程序运行的机制 Android 3D游戏开发技术宝典--OpenGL ES 2.0 上一节介绍了如何搭建Android开发环境.如何开发Hello Android应用程序以及Android应用程序的调试,接下来在本节中将简要地介绍Android应用程序的运行机制. 1.5.1 应用程序的系统架构 Android平台由应用程序.应用程序框架.Android运行时.系统库以及底层Linux内核构成,详细结构如图1-54所示. 说明 应用程序层里面包含的就是需要读者去发挥创意

《OpenGL ES 3.x游戏开发(下卷)》一导读

前 言 OpenGL ES 3.x游戏开发(下卷) 为什么要写这样一套书 随着智能手机硬件性能的不断提升,如"水果忍者""极品飞车""狂野飙车8:极速凌云"等一批优秀的3D游戏娱乐应用在广大智能机用户间流行开来.与此同时,也带动了手机游戏产业逐渐从2D走向3D.但目前国内专门介绍3D游戏开发的书籍与资料都非常少,同时3D应用开发的门槛又比较高,使得很多初学者无从下手.根据这种情况,笔者结合多年从事3D游戏应用开发的经验编写了这样一套书. 了解一些

《OpenGL ES 3.x游戏开发(上卷)》一1.4 已有Android项目的导入和运行

1.4 已有Android项目的导入和运行 上一节介绍了如何搭建Android开发环境.如何开发Hello Android应用程序以及如何调试Android的应用程序,接下来在本节中将简要介绍已有Android项目的导入和运行. 1.4.1 项目的导入 首先介绍怎样将已有的Android项目导入Eclipse,此处以本书最后部分大案例中的"3D可爱抓娃娃"为例进行讲解,具体步骤如下. (1)启动Eclipse,依次单击"File|Import",系统将弹出导入项目的

《OpenGL ES 3.x游戏开发(上卷)》一2.7 小结

2.7 小结 本章主要对Android平台下游戏开发中可能会用到的Android平台的相关基础知识进行详细介绍,如文件的I/O操作.SQLite数据库的增.删.改.查,游戏中声音特效.蓝牙互连等.只有学好这些基础知识,开发人员才能开发出更好的Android手机游戏.读者一定要在这些基础上下足工夫,今后的开发道路才会一帆风顺. 提示 Android平台的其他相关知识还有很多,由于本书侧重于介绍OpenGL ES 3.0 3D应用程序的开发,故本章只是简单介绍了一些与3D开发不直接相关的,但在游戏开