【Android源码 栏目提醒】:网学会员--在 Android源码 编辑为广大网友搜集整理了:Android 操作系统平台任务 - 综合课件绩等信息,祝愿广大网友取得需要的信息,参考学习。
Android 操作系统平台 2008-11-OS小组评估 近期我们OS小组一直在关注整个
Android操作系统的平台目前整体上对他有个比较清楚的认识。
我们公司也买了几台G1手机作为样机大家也都把玩了一下。
目前
Android系统平台的第三方软件较为稀缺限制了Google手机的可玩性。
但作为一个完全开源的系统平台第三方软件的出现仅仅只是时间问题。
Android作为一个移动设备的平台其软件层次结构包括了一个操作系统OS中间件MiddleWare和应用程序Application。
根据
Android的软件框图其软件层次结构自下而上分为以下几个层次 第一、操作系统层OS 第二、各种库Libraries和
Android 运行环境RunTime 第三、应用程序框架Application Framewo 第四、应用程序Application 以下分别介绍Andoid各个层次的软件的重点及其相关技术 ● 操作系统层OS
Android使用Linux2.6作为操作系统Linux2.6是一种标准的技术Linux也是一个开放的操作系统。
Android对操作系统的使用包括核心和驱动程序两部分
Android的Linux核心为标准的Linux2.6内核
Android更多的是需要一些与移动设备相关的驱动程序。
主要的驱动如下所示 显示驱动Display Driver常用基于Linux的帧缓冲Frame Buffer驱动。
Flash内存驱动Flash Memory Driver 照相机驱动Camera Driver常用基于Linux的v4lVideo for 驱动。
音频驱动Audio Driver常用基于ALSAAdvanced Linux Sound Architecture高级Linux声音体系驱动。
WiFi驱动Camera Driver基于IEEE 802.11标准的驱动程序 键盘驱动KeyBoard Driver 蓝牙驱动Bluetooth Driver Binder IPC驱动
Android一个特殊的驱动程序具有单独的设备节点提供进程间通讯的功能。
Power Management能源管理 ● 各种库Libraries和
Android 运行环境RunTime 本层次对应一般嵌入式系统相当于中间件层次。
Android的本层次分成两个部分一个是各种库另一个是
Android 运行环境。
本层的内容大多是使用C实现的。
在其中各种库包括 1 C库 C语言的标准库这也是系统中一个最为底层的库C库是通过Linux的系统调用来实现。
2多媒体框架MediaFrameword这部分内容是
Android多媒体的核心部分基于PacketVideo即PV的OpenCORE从功能上本库一共分为两大部分一个部分是音频、视频的回放PlayBack另一部分是则是音视频的纪录Recorder。
3 SGL2D图像引擎。
4 SSL即Secure Socket Layer位于TCP/IP协议与各种应用层协议之间为数据通讯提供安全支持。
5 OpenGL ES 1.0 本部分提供了对3D的支持。
6 界面管理工具Surface Management本部分提供了对管理显示子系统等功能。
7 SQLite一个通用的嵌入式数据库 8 WebKit网络浏览器的核心 9 FreeType位图和矢量字体的功能。
Android 的各种库一般是以系统中间件的形式提供的它们均有的一个显著特点就是与移动设备的平台的应用密切相关。
Android 运行环境主要指的虚拟机技术——Dalvik。
Dalvik虚拟机和一般JAVA虚拟机Java VM不同它执行的不是JAVA标准的字节码bytecode 而是Dalvik可执行格式.dex中执行文件。
在执行的过程中每一个应用程序即一个进程Linux的一个Process。
二者最大的区别在于Java VM是以基于栈的虚拟机Stack-based而Dalvik是基于寄存器的虚拟机Register-based。
显然后者最大的好处在于可以根据硬件实现更大的优化这更适合移动设备的特点。
● 应用程序框架Application Framewo
Android的应用程序框架为应用程序层的开发者提供APIs它实际上是一个应用程序的框架。
由于上层的应用程序是以JAVA构建的因此本层次提供的首先包含了UI程序中所需要的各种控件 例如 Views 视图组件包括 lists列表 grids栅格 text boxes文本框 buttons按钮等。
甚至一个嵌入式的Web浏览器。
一个Andoid的应用程序可以利用应用程序框架中的以下几个部分 Activity 活动 Broadcast Intent Receiver 广播意图接收者 Service 服务 Content Provider 内容提供者 ● 应用程序Application
Android的应用程序主要是用户界面User Interface方面的通常以JAVA程序编写其中还可以包含各种资源文件放置在res目录中JAVA程序及相关资源经过编译后将生成一个APK包。
Android本身提供了主屏幕Home联系人Contact电话Phone浏览器Browers等众多的核心应用。
同时应用程序的开发者还可以使用应用程序框架层的API实现自己的程序。
这也是
Android开源的巨大潜力的体现。
附加google提供的Andoid体系结构图。
接下来就是我们要怎样利用我们现在有的资源去完成一个合适我们系统的平台。
我们需要做些什么达到什么目的工作任务怎么划分 根据最近对
Android系统结构和代码分析OS平台小组的目标就是在最短的时间能完成整个
Android的软件在我们上的运行且能够实现一些简单应用程序。
通过对上的运行表现和测试进一步评估
Android中各个模块上运行的资源情况。
实现该
Android的运行需要以下资源同步配合 1 :
Android是建立在Linux操作系统之上的一种应用框架。
我们可以将工作分为Linux OS的开发及
Android应用框架的开发 Linux OS的开发应该做的事情从下往上看分别是 1、BootLoader的实现 2、驱动程序编写需熟悉Linux驱动架构 重点。
包括驱动的模块单独调试驱动组和在Linux上整合两部分 3、Linux内核的移植需要知道的知识常用命令、Makefile语法、Linux内核的配置、编译出错的处理等重点。
我补充这几点 4、Linux内核源代码的掌握OS组应基本掌握linux内核主要
源码为将来的应用开发提供支持 5、Linux各种工具包括调试工具平台性工具的掌握为后续开发提供支持。
6、Linux各种功能协议的裁减和移植linux支持很多功能和协议要掌握如何进行添加裁减模块如蓝牙WIFI等 7、在芯片Linux系统上运行一些中间件和库的性能情况简单测试为后续功能的可行性评估提供参考如是否能跑3D引擎能跑到多大屏等。
8、将
Android系统原封不动地移植到Linux平台上运行 9、进行JAVA虚拟机应用程序对Linux系统底层C语言实现的功能的调用分析测试。
Android应用框架的开发应该做的事情从上往下看 1、 面向用户的应用程序开发。
该层主要的工作是实现用户界面及事件处理流程等不涉及具体的实现。
使用JAVA语言开发。
需要熟悉Java及XML的开发人员。
2、 应用程序框架。
对上层的应用程序它提供了接口供上层程序调用用Java实现这一层尽量不改变或者只加不减则基于该框架开发的程序都可直接拿来用这一层可由上层人员来实现对下层的组件它提出了要求下层组件实现的接口用C/C实现Java代码通过JNI/AIDL来调用C/C代码这一层可由下层组件开发人员来实现。
3、 组件开发和替换。
组件做具体的实现并向上层的应用程序框架提供接口。
使用C/C语言进行开发。
需要熟悉C的开发人员。
重点。
4、
Android上作为demo开发出一套自己设计的UI界面。
5、
Android上嵌入芯片的视音频解码器增强
Android的多媒体功能。
6、 : 传统的嵌入式思想把系统分为三层应用程序、OS、硬件。
但在
Android中应该要有新的思维把嵌入式系统分为五层应用程序、应用程序框架、C/C组件、OS、硬件。
只要我们不改变应用程序框架则其上的应用程序可拿来即用而C/C组件是可更换的我们可将
Android里面的组件替换成我们需要的、适合我们的也可以添加新的组件这可能就要给应用程序框架添加新接口。
Android的应用程序开发可以不用担心一方面是障碍较少另一方面是网上会有越来越多的应用程序而只要我们不改应用程序框架就可直接拿来使用。
Android上大部分工作应该是花在组件的替换、以及实现新组件那么有哪些组件是需要替换的还需要实现哪些新组件如何实现新组件及如何替换旧组件 1 各种库的增加与移植修改。
在多媒体方面文件格式的处理和编解码Codec是很基础的两个方面的内容。
多媒体应用的两个方面是媒体的播放PlayBack和媒体的记录Recording。
在媒体的播放过程中通常情况是从对媒体文件的播放必要的两个步骤为文件的解析和媒体流的解码。
例如对于一个mp4的文件其中可能包括AMR和AAC的音频流H263、MPEG4以及AVCH264的视频流这些流被封装在3GP的包当中媒体播放器要做的就是从文件中将这些流解析出来然后对媒体流进行解码解码后的数据才可以播放。
在媒体的记录过程中通过涉及到视频、音频、图像的捕获功能。
对于将视频加音频录制成文件功能其过程与播放刚好相反首先从硬件设备得到视频和音频的媒体流然后对其进行编码编码号的流还需要被分层次写入到文件之中最终得到组成好的文件。
OpenCore有关文件格式处理和编解码部分两部分的内容分别在目录fileformats和codecs_v2当中。
这两部分都属于基础性的功能不涉及具体的逻辑因此它们被别的模块调用来使用例如构建各种Node。
目前
Android 上提供的多媒体的库比较少且效率不高。
我们需要专门需要去按照目前OPENMAX的接口去增加和修改。
如果要做好多媒体这一块算法处理只是其中一个很小很单一的工作而最大的工作量在于怎么样去适应整个
Android系统。
怎样增加模块调用下层接口编写MAKEFILE等。
事实上OpenCore中包含的内容非常多从播放的角度PVPlayer的输入的Source是文件或者网络媒体流输出Sink是音频视频的输出设备其基本功能包含了媒体流控制、文件解析、音频视频流的解码Decode等方面的内容。
除了从文件中播放媒体文件之外还包含了与网络相关的RTSP流Real Time Stream Protocol实时流协议。
在媒体流记录的方面PVAuthor的输入的Source是照相机、麦克风等设备输出Sink是各种文件包含了流的同步、音频视频流的编码Encode以及文件的写入等功能。
在使用OpenCore的SDK的时候有可能需要在应用程序层实现一个适配器Adaptor然后在适配器之上实现具体的功能对于PVMF的NODE也可以基于通用的接口在上层实现以插件的形式使用。
分为几个阶段 1、必须从整体上熟悉并了解整个
Android的多媒体框架OpenCore。
2、熟悉Player和Author的功能。
3、OpenCore和
Android其他部分的集成关系。
4、哪写模块需要移植使用CEVA进行处理。
5、如何增加算法功能模块并调试编译。
: 对于Java应用程序开发人员需要掌握如下的知识 1、 Java语言 2、 XML语言 3、 利用Eclipse工具开发可在
Android上运行的Java程序 4、 要了解
Android应用程序框架层提供了哪些调用接口 5、 了解JNI如何实现才能提出新的接口需求 对于C/C组件开发人员需要掌握如下的知识 1、 C语言要明白继承、多态、模板私有、公有、虚拟、纯虚、重载等面向对象的概念否则很难阅读
Android中提供的组件Libraries。
2、 要理解
Android的应用框架知道如何提供接口、编译程序是如何运作。
3、 要了解组件如何实现。
只能通过阅读代码来了解组件。
有了上面这些基础你才能写新组件或对组件进行修改、或替换已有的组件。
OS小组的工作 1、先实现Bootloader才能加载Linux。
2、实现启动Linux所需的基本驱动如RTC、串口等才可运行Linux。
3、实现最小Linux的移植只包含基本驱动 在实现上述步骤的同时可进行驱动程序的开发但还无法测试驱动程序。
4、将写好的驱动以模块形式在Linux中进行测试 在Linux2.6版本中驱动可以模块的形式存在在系统跑起来后通过insmod命令加载指定的驱动模块。
5、将测试OK的驱动添加到内核中。
驱动程序的开发与Linux的移植是可以并行的当Linux移植成功后就可以对驱动程序进行测试测试通过的驱动就可以集成到Linux内核中。
所以在一定的程序上OS小组与驱动小组的工作是可以并行的。
应用程序小组的工作 1、先了解要开发的应用程序要先了解网络上已有的应用程序。
2、学习
Android上应用程序开发所需具备的知识。
3、在
Android提供的应用程序框架上进行新的应用程序的开发。
组件小组的工作 1、 学习
Android上组件开发所需具备的知识。
2、 分析哪些组件应保留、替换、修改、添加。
3、 在
Android限定的应用程序框架下进行组件的替换、修改、添加。
只要我们遵循应用程序框架则应用程序小组与组件小组的工作是可以并行的。