`
isiqi
  • 浏览: 16027103 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

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的v4l(Video for )驱动。
音频驱动(Audio Driver):常用基于ALSA(Advanced 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) SGL:2D图像引擎。
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体系结构图。
clip_image002[4]

接下来就是我们要怎样利用我们现在有的资源去完成一个合适我们系统的平台。我们需要做些什么?达到什么目的?工作任务怎么划分?

根据最近对Android系统结构和代码分析,OS平台小组的目标就是在最短的时间能完成整个Android的软件在我们上的运行,且能够实现一些简单应用程序。通过对上的运行表现和测试,进一步评估Android中各个模块上运行的资源情况。实现该Android的运行需要以下资源同步配合:

1)

YMC:

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、

YMC:

传统的嵌入式思想把系统分为三层:应用程序、OS、硬件。但在Android中,应该要有新的思维,把嵌入式系统分为五层:应用程序、应用程序框架、C/C++组件、OS、硬件。只要我们不改变应用程序框架,则其上的应用程序可拿来即用,而C/C++组件是可更换的,我们可将Android里面的组件替换成我们需要的、适合我们的,也可以添加新的组件(这可能就要给应用程序框架添加新接口)。Android的应用程序开发可以不用担心,一方面是障碍较少;另一方面是网上会有越来越多的应用程序,而只要我们不改应用程序框架,就可直接拿来使用。Android上大部分工作应该是花在组件的替换、以及实现新组件,那么有哪些组件是需要替换的?还需要实现哪些新组件?如何实现新组件及如何替换旧组件?

HSF:

1) 各种库的增加与移植修改。

在多媒体方面,文件格式的处理和编解码(Codec)是很基础的两个方面的内容。多媒体应用的两个方面是媒体的播放(PlayBack)和媒体的记录(Recording)。
在媒体的播放过程中,通常情况是从对媒体文件的播放,必要的两个步骤为文件的解析和媒体流的解码。例如对于一个mp4的文件,其中可能包括AMR和AAC的音频流,H263、MPEG4以及AVC(H264)的视频流,这些流被封装在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、如何增加算法功能模块,并调试编译。

===========================

YMC:

对于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限定的应用程序框架下,进行组件的替换、修改、添加。

只要我们遵循应用程序框架,则应用程序小组与组件小组的工作是可以并行的。

分享到:
评论

相关推荐

    关于android 系统多任务操作稳定性问题

    关于android 系统多任务操作稳定性问题

    Android实现定时任务及闹钟

    android中定时有很多种是实现,常见的Handler 与Thread的结合,handler.postDelayed ,以及要使用的AlarmManger 等都可以实现定时任务的执行,但是使用场景却大不相同,这里主要是怎么用AlarmManager实现定时任务。...

    Android-x86桌面操作系统OPENTHOS.zip

    OPENTHOS项目是由清华大学、同方股份有限公司、一铭软件股份有限公司联合开发的Android-x86桌面操作系统项目,为用户提供基于Android系统的桌面操作环境,适用于个人电脑和平板电脑。作为国内第一个开源的Android-...

    Android操作系统所存在的问题

    Android操作系统所存在的问题 关于Android的八大亟待解决的关键问题  1、平台分化 2、升级流程不畅 3、没有自带文件管理器和任务管理器。

    Android任务驱动式教程.pdf

    《Android任务驱动式教程》通过一个手机文件管理器的案例设计全面介绍Android平台开发的基础知识,循序渐进地介绍使用 Android开发手机应用程序的实战技术,使读者不仅能够学习到Android操作系统的架构和基本原理,...

    Android手机上的苹果操作系统Android Mac

    Android Mac是一款运行在以Android 1.6以上操作系统的智能手机(包括Ophone和乐风)或者平板电脑上面的手机桌面插件,完美模拟了Mac的界面风格和操作习惯,集成了资源管理器、任务管理器、控制面板、网页浏览器、...

    android 任务管理器

    1. 任务管理 对后台运行的进程进行管理,可对某个进程进行查看程序详情、杀死进程、打开程序操作 2. 应用管理 对手机全部应用进行管理 3. 系统资源监控 可以实时查看手机运行时的CPU利用率、内存利用率、已使用内存...

    基于Android平台的在线学习社区的设计与实现

    本论文详细的介绍了基于Android平台的在线学习社区的开发流程,对系统的开发背景和开发意义以及系统设计采用的开发技术等都进行了详细的介绍,并介绍了系统的整体框架结构和具体功能实现的设计,最后对系统进行了...

    android开发期末大作业.zip

    操作系统:Win7/Win10或其他; 4、设计成果: 材料上交:电子文档(大作业任务书+大作业报告+源代码,电子稿请刻在光盘上)、打印稿(大作业任务书+大作业报告)。 四、成绩评定: 考核标准包括: 1、选题的工作量,...

    Android课程设计---基于Android系统的音乐播放器设计与实现.doc

    Android操作系统最初由A ndy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改 良,逐渐扩展到平板电脑及其他领域上。 Android平台五大优势特色: 1、开放性 2、挣脱运营商的束缚 3...

    Android实训报告基于Android游戏开发.docx

    Android操作系统最初由AndyRubin开发,主要支持手机。2005年8月由Google收购注资。2007年11月,Google与84家硬件制造商、软件开发商及电信营运商组建开放手机联盟共同研发改良Android系统。随后Google以Apache开源...

    《Android应用开发》开放实验项目总结报告-模板.doc

    开放实验项目的目的 " " " "Android目前已经成为最流行的移动操作系统,Android应用商店中App的数量巨" "大,涉及了多种不同的目标用户和应用领域。此次开放实验的目的是使学生初 " "步了解Android应用开发的基础...

    基于ALSA的Android音频系统设计与实现

    ALSA(Advanced Linux Sound Architecture,高级Linux声音架构)在Linux操作系统上提供了音频和MIDI(Musical Instrument Digital Interface,音乐设备数字化接口)的支持。它的主要特性包括:高效地支持从消费类...

    操作系统笔记.pdf

    操作系统是管理计算机硬件资源,控制...目前流行的现代操作系统主要有Android、BSD、iOS、Linux、Mac OS X、Windows、Windows Phone和z/OS等,除了Windows和z/OS等少数操作系统,大部分操作系统都为类Unix操作系统。

    Android基于eclipse的学生信息管理系统

    操作系统:Windows 10操作系统; 开发工具: Eclipse 应用软件开发工具 本设计是在学习Android平台软件开发的课程的基础上进行的一次综合实践。 该系统的具体任务就是设计一个学生管理系统,由计算机来代替人工执行...

    Android系统库和第三方功能实现库

    Android系统库是指Android操作系统内部提供的一些基本功能或服务的类库,可以帮助应用程序实现常见的任务和操作,如UI设计、数据库管理、网络通信等。常用的Android系统库包括: 1. SDK(Software Development Kit...

    Android多点触摸遥控系统的研究与实现

     本文介绍了智能电视操作系统和其人机交互的发展现状,针对现有操作系统和交互方式提出了以Android OS和触摸板为核心的系统解决方案,介绍了软硬件平台的搭建过程,将整个系统分为硬件层、数据接入层、驱动层、框架层...

    Android 小例子:获取系统信息 文件浏览器.rar

    Android 小例子:获取系统信息 文件浏览器,可以实现以下功能:文件系统,文件浏览器,操作系统版本,读取/proc/version信息,系统信息,手机设备的系统信息,运营商信息,手机网络的运营商信息、正在运行的后台服务...

    Android的校园报修平系统的设计与开发

    本系统设计一个基于Android的校园报修系统平台,包括普通用户和管理员用户。普通用户可以报修校园故障,对处理后的结果进行评价;管理员用户可以查看普通用户的报修校园故障,对校园故障进行处理修改处理状态,查看...

    Tasker-Android 系统增强 -4.6

    Tasker可用于根据一定的条件(应用程序、时间、日期、位置、时间、语音命令、手势、快捷方式、小工具按下/计时器过期)执行任务(一系列基本操作组成的集合) Tasker绝对称得上是Android系统的神器之一,与Auto ...

Global site tag (gtag.js) - Google Analytics