《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制
本节书摘来异步社区《OpenGL ES 3.x游戏开发(上卷)》一书中的第1章,第1.5节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区“异步社区”公众号查看。
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和手机厂商来完成,如驱动的更新或者新驱动的编写等。
《OpenGL ES 3.x游戏开发(上卷)》一1.5 Android应用程序运行的机制相关推荐
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一6.6 本章小结
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.6节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》——6.5节光照的每顶点计算与每片元计算...
本节书摘来自异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.5节光照的每顶点计算与每片元计算,作者 吴亚峰,更多章节内容可以访问云栖社区&q ...
- 《OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例》一第6章 让场景更逼真——光照效果...
本节书摘来异步社区<OpenGL ES 2.0游戏开发(上卷):基础技术和典型案例>一书中的第6章,第6.1节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社 ...
- 《OpenGL ES 3.x游戏开发(上卷)》一2.4 文件I/O
本节书摘来异步社区<OpenGL ES 3.x游戏开发(上卷)>一书中的第2章,第2.4节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《OpenGL ES 3.x游戏开发(下卷)》一1.2 顶点数组对象
本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第1章,第1.2节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- 《OpenGL ES 3.x游戏开发(下卷)》一2.4 展翅飞翔的雄鹰
本节书摘来异步社区<OpenGL ES 3.x游戏开发(下卷)>一书中的第2章,第2.4节,作者: 吴亚峰 责编: 张涛,更多章节内容可以访问云栖社区"异步社区"公众号 ...
- Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应问题
转载:http://blog.csdn.net/iamlazybone/article/details/17191539 懒骨头(http://blog.csdn.net/iamlazybone Q ...
- Cocos2dx游戏开发系列笔记9:android手机上运行《战神传说》,并解决横竖屏即分辨率自适应...
2019独角兽企业重金招聘Python工程师标准>>> 上节说到cygwin下成功编译出so文件,下面我们要把游戏运行在android上. 开始干活! 其实步骤可以参考 Cocos2 ...
- Android OpenGL ES 学习(六) – 使用 VBO、VAO 和 EBO/IBO 优化程序
OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...
最新文章
- Xtrabackup bug记录
- [Python Study Notes] Python的安装
- 基于SP4062电路IO接口八通道保护板
- C++ 后台程序实时性能监控
- Collections工具类 java
- IE下table的innerHTML无效的处理方法
- 用户态处理arp、ndisc neighbour solication 报文
- ArrayList的retainAll()方法使用
- 秒杀系统企业级实战应用之真实工业界案例视频
- 激光雷达类型分类,知名激光雷达公司介绍,三角测距激光雷达与TOF激光雷达原理
- 安卓苹果下载地址合并 苹果安卓专用二维码是如何生成的
- 计算机u盘驱动坏了如何的修复,u盘损坏怎么修复 u盘损坏再次使用
- word2CHM,做软件产品必备的说明书工具
- 如何将微信服务号改成订阅号?
- 计算机二级 公共基础知识
- Oracle Demo库默认用户/密码为什么叫Scott/Tigger
- Android简单集成友盟统计
- GPS从入门到放弃(一)、GPS 定位原理
- ubuntu火狐浏览器安装flash_player插件
- 轨道不平顺-振动响应-信号分析方法(持续整理中...)