已阅读5页,还剩6页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业设计(论文)文献综述院 系:计算机科学与技术年级专业:10级计算机科学与技术(专升本)姓 名:学 号:题目名称:基于android文件管理器的实现指导老师评语:指导教师签名:年 月 日基于android文件管理器的实现基于android文件管理器的实现文献综述一、项目的研究背景及意义1.1 android简介android是google于2007年11月05日宣布的基于linux平台的开源手机操作系统的名称,该平台由操作系统、中间件、用户界面和应用软 件组成。它采用软件堆层(software stack,又名软件叠层)的架构,主要分为三部分。底层以linux内核工作为基础,由c语言开发,只提供基本功能;中间层包括函数库library和 虚拟机virtual machine,由c+开发。最上层是各种应用软件,包括通话程序,短信程序等,应用软件则由各公司自行开发,以java作为编写程序的一部分。不存在任何以往阻碍移动产业创新的专有权障碍,号称是首个为移动终端打造的真正开放和完整的移动软件。为了推广android平台技术,google和几十个手机相关企业建立了开放手机联盟(open handset alliance)。其中联盟成员主要包括motorola、htc、samsung、lg、asus、hp、skype、kupa map 以及中国移动在内的34家技术和无线应用的领军企业,都将基于该平台开发手机的新型业务,应用之间的通用性和互联性将在最大程度上得到保持。34家相关企业的加盟,也将大大降低新型手机设备的研发成本,完全整合的“全移动功能性产品”成为“开放手机联盟”的最终目标。android平台手机具有五大优势:第一,开放性。android开发平台允许任何移动终端厂商加入到android联盟中来。而对于消费者来讲,最大的受益正是丰富的软件资源。消费者将可用更低的价位购买到自己心仪的手机。第二,摆脱运营商的束缚。用户可更加方便地连接网络,运营商的制约减少,手机可随意接入网络。第三,丰富的硬件资源选择。由于android的开放性,使得众多的厂商会推出各种新功能和新特色的软件产品。在功能上的他们存在差异和特色,但不会影响到数据同步性和软件的兼容性。第四,不受任何限制的开发商。android提供给第三方开发商一个十分宽泛、自由的开发环境和不受各种条条框框的约束。第五,无缝结合的google应用。google已走过10年历史,从搜索巨人到全面的互联网渗透,google服务如地图、邮件、搜索等已成为连接用户和互联网的重要纽带,而android平台手机很好的承接了这些优秀的google服务1。1.2 android系统架构android系统架构自下而上有以下4个模块组成:基于linux的内核模块、运行时(android runtime)与android库(libraries)、应用程序框架(application framework)、应用程序(applications)2。如下图-1所示:图-1 android系统架构一是基于linux内核模块。android内核基于linux 2.6来提供核心系统服务,如上图1所示主要包括以下几个驱动:显示器驱动、照相机驱动、蓝牙驱动、flash内核驱动、binder驱动、usb驱动、键盘驱动、无线驱动、音频驱动、电源管理驱动。android内核是介于硬件层和软件组之间的一个抽象层次3。二是运行时(android runtime)与android库(libraries)。运行时(android runtime):android包括一个核心库的集合,她们提供了java编程语言的核心库中的绝大多数功能。每一个android应用都在她自己的进程中运行,该进程也属于某个dalvik虚拟机的实例。dalvik被设计成能让设备高效地运行多个虚拟机。dalvik虚拟机执行的是.dex结尾的dalvik可执行文件格式,该格式被优化为最小内存使用。虚拟机是基于寄存器的,并且运行那些java编程语 言所编译的类,这些类被内置的dx工具转换为.dex格式。dalvik虚拟机依赖linux内核来提供底层的功能,比如线程和低级内存管理4;android库(libraries):android包括了一套c/c+库,这套库被android系统的各个组件使用。通过android的应用框架,这些功能被开放给开发者。其中的一些核心库如下:系统c库(system c library):一个继承自bsd的标准c系统实现(libc),被调整成面向基于linux的嵌入式设备。媒体库(media libraries):基于packet video的的open core;该库支持回放和录制许多流行的音频和视频格式,以及静态图像文件,包括mpeg4,h.264,mp3,aac,amr,jpg和png格式。surface管理器(surface manager):管理显示子系统,并能无缝地组合多个应用的2d和3d图像层。libwebcor:一个流行的web浏览器引擎,它对android浏览器和嵌入式web视图具有良好的支持。sgl:底层的2d图形引擎。freetype:位图和矢量字体渲染。sqlite:所有的应用程序使用并且强大而轻量级的关系型数据库引擎5。三是应用程序框架(application framework)。通过提供一个开放的开发平台,android提供给开发者一个开放的android平台,同时也提供了丰富、创新的应用能力。android开发者自由地享有硬件设备的优势、访问本地信息、运行后台服务、设置警示、向状态栏添加通知等。android开发人员可以使用核心应用程序和api框架6。应用程序架构的设计目的是为了简化组件的重用;任何应用程序都可以发布它的功能,如果其他的应用程序也要利用到这些功能,那么就必须遵守框架提供的安全约束;依靠同样的机制,组件可以被用户所取代;底层的所有的应用程序是一组服务和子系统,主要包括以下几个:一组丰富并且可扩展的view,这组view可以被用来构建一个应用程序,包括列表,表格,文本框,按钮,甚至可嵌入的web浏览器;一组content providers,可以使应用程序访问其它应用程序的数据(比如通讯录),或者共享自己的数据。一个资源管理器(resource manager),提供对非代码资源的访问,比如本地化的字符串,图形和布局文件。而另一个通知管理(notification manager),可以使所有的应用程序在状态栏显示定制的提醒7。其中还包括一个activity管理(activity manager),它管理的应用程序的生命周期,并且提供了一个通用的后台切换栈。四是应用程序(applications)。android配备一系列核心应用程序,主要包括主页、电子邮件客户端,短信程序,日历,地图,浏览器,通讯录等。所有的应用程序都是使用java编程语言。二、国内外研究现状2.1 android现状随着android操作系统在手机市场的迅速发展,智能手机的运行速度和集成功能得到了极大的提升。google主导的开放手机联盟oha(open handset alliance)顺势在2008年推出android移动终端平台。android是一个开放、自由的移动终端平台,它的发布打破了诺基亚symbian操作系统和微软windows mobile操作系统在智能手机平台上的垄断地位,与此同时,其平台化的优势也大大丰富了各种手持设备的软件功能应用8。在今年1月份美国市场上,作为当前最畅销的两大移动操作系统分别是来自谷歌android和苹果ios系统,占据了该移动广告网络流量的91%,其中谷歌android占58.8%居首,而苹果ios 则以32.2%的份额居次席。一月份美国移动广告网络用户平均为9500万,谷歌android系统以58.8%的流量份额位居第一,而苹果ios 则以32.2%的份额列第二。然而,在平板电脑市场上,亚马逊凭借其kindle fire的出色表现,占据了平板电脑市场份额的33%。在过去的三个月时间里,kindle fire产品的流量份额呈现迅速增长势头。2.2 android文件管理器现状各种资源的android文件管理器渐渐成为人们生活中必不可少的一部分。由于android手机存在大量文件、文件夹和apk,因此选择一款合适的android文件管理器,来满足对一般用户的需求。android文件管理器是一款管理文件的软件,帮助用户处理日常工作,管理储存在本地和网络中的文件。现在许多android智能手机上都会提供一个yaffs2文件系统。虽然google对yaffs2提供开源的代码,但是要准确理解yaffs2的行为却并不是一件简单的事情。此外,通过学习磨损平整和垃圾手机等方面来进一步涉及yaffs29。三、项目的目标及课题研究内容3.1 android application components(应用程序组件)android应用程序开发所使用的语言主要是java。appt工具把编译后的java代码连同其它应用程序需要的数据和资源文件一起打包到一个android包文件中,这个文件使用.apk做为扩展名,它是分发应用程序并安装到移动设备的媒介,用户只需下载并安装此文件到android智能手机的sd卡上。在默认情况下,每个android应用程序均运行于它自己的linux进程中。当应用程序中的任意代码开始执行时,android启动一个进程,而当不再需要此进程而其它应用程序又需要系统资源时,则关闭这个进程。每个进程都运行于自己的java虚拟机(vm)中10。所以应用程序代码实际上与其它应用程序的代码是隔绝的。android为每个应用程序均被赋予一个唯一的linux用户id,并加以权限设置,使得应用程序的文件仅对这个用户、应用程序可见。当然,也有其它的方法使得这些文件同样能为别的应用程序所访问。一个应用程序可以使用其它应用程序的元素(如果那个应用程序允许的话)。例如,如果你的应用程序需要调用一个activity,而另一个应用程序已经开发了一个合用的而又允许别人使用的话,你可以直接调用那个activity来完成工作,而不用自己再单独开发一个。你的应用程序并没有链接其它应用程序的代码,只是在有需求的时候才启动其它应用程序调用那个activity11。为达到以上这个目的,系统必须在一个应用程序的一部分被需要时启动这个应用程序,并将那个部分的java对象实例化。与在其它系统上的应用程序不同,android应用程序并没有为特定的应用准备一个单独的程序入口(例如,没有main()函数), 而是依照系统需求实例化基本组件。共有以下四种组件类型:activities、services、broadcast receivers、content providers。3.2 android yaffs2 basics(yaffs2基础知识)yaffs2的全称是yet another flash file system 2。yaffs2是一个专门为nand flash存储器设计的嵌入式文件系统,适用于大容量的存储设备。yaffs2提供磨损平衡和掉电恢复的功能。虽然android推出了ext4(扩展日志式)文件系统,并且要求在android 2.3以上的版本才可以使用,但是据调查还是有大部分的android智能手机用户的操作系统版本低于android 2.3版本。因此我们有必要学习yaffs2。由于android yaffs1仅能存储512个字节,所以为满足客户需求android推出yaffs2(yaffs2是yaff1的升级版)。yaffs2文件是以固定大小的数据块进行存储的能够存储块大小为2048字节或者甚至更多字节。这样子做有个好处就是将一个数据块头和每个数据块关联起来。每个文件(包括目录)都有一个数据块头与之相对应,数据块头中保存了ecc(error correction code)和文件系统的组织信息,用于错误检测和坏块处理12。android充分考虑到nand flash的特点,并把yaffs2数据块文件头存储在flash的备用空间中。当文件系统被挂载时,只须扫描存储器的备用空间就能将文件系统信息读入内存,并且驻留在内存中,不仅加快了文件系统的加载速度,也提高了文件的访问速度,却增加了内存的消耗。3.3 android activity(活动)activity是为用户操作而展示的可视化用户界面。例如,一个activity可以展示一个菜单项列表供用户选择,或者显示一些包含说明的照片。一个短消息应用程序可以包括用于显示一个发送对象联系人列表的activity,可以为一个选定的联系人写短信的activity以及翻阅以前短信和改变设置的activity。尽管它们一起组成了一个内聚的activity用户界面,但其中每个activity都与其它的activity保持独立。每个都是以activity类的实现13。一个应用程序可以只有一个activity或者包含多个activity,但每个activity的作用以及其数目取决于应用程序的设计。一般情况下,总有一个应用程序被标记为用户在应用程序启动的时候第一个看到的。从一个activity转向另一个的方式是靠当前的activity来启动下一个activity。每个activity都被赋予一个默认的窗口以进行绘制。通常情况下,这个窗口是全屏的,但它也可以是一个小的位于其它窗口之上的浮动窗口。一个 activity也可以使用多个窗口例如,在activity运行过程中弹出的一个供用户判断选择的小对话框。窗口的可视内容显示是由一系列视图构成的,而这些视图均继承自view基类。每个视图均控制着窗口中一块特定的矩形空间。父级视图包含并组织其它子视图的布局。叶节点视图(位于视图层次最底端)在它们控制的矩形中进行绘制,并对用户的直接操作做出响应。所以,视图是 activity与用户进行交互的界面。例如,视图可以显示一个小图片,并在用户点击它的时候产生相应的动作14。android有很多既定的视图供用户直接使用,其中包括按钮、文本域、卷轴、菜单项、复选框等。视图层次通过调用activity.setcontentview()方法来将activity放入窗口之中的。3.4 android services(服务)每一个服务都继承自service基类。服务是一个没有可视化的用户界面,而是运行在后台。例如,一个服务可以在用户做其它事情的时候在后台播放音乐、从网络上下载一些数据、计算一些东西并提供给需要这个运算结果的activity使用。你可以绑定一个正在运行的服务(如果该服务没有运行,则启动它)。绑定之后,你也可以通过连接服务接口与服务进行通讯。例如,对于音乐播放器来说,这个接口可以允许用户暂停、回退、停止、快进、倒退以及重新开始播放。3.5 android broadcast receivers(广播接收器)广播接收器是一个专门用于接收通知消息并做出相应处理的组件。很多广播是源自于系统代码的。例如,通知时区更改、电池电量过低、改变语言选项、蓝牙是否开启或关闭等操作。应用程序也可以进行广播。例如,通知其它应用程序提示数据下载完毕并处于可用状态,根据用户的操作来做出下一个动作。应用程序可以拥有多个广播接收器。所有的接收器均继承自broadcast receiver基类。广播接收器没有用户界面。然而,它们可以通过启动一个activity来响应它们收到的信息,或者用notification manager来通知用户14。通知可以采用多种方式来吸引用户的注意力。例如,背景闪关灯、震动、播放声音等。总的来说在状态栏上放一个持久的图标,用户可以通过点击它并获取相关消息。3.6 android content providers(内容提供商)内容提供者将一些特定的应用程序数据提供给其它应用程序使用。数据可以存储于文件系统、sqlite数据库或者其它方式。内容提供者继承于content provider基类,为其它应用程序取用和存储数据实现了一套标准的方法。然而,应用程序并不直接调用这些方法,而是使用一个 content resolver对象,通过调用它的方法来作为替代。content resolver可以与任意内容提供商进行会话。3.7 android processes and threads(进程与线程)当一个应用程序开始运行它的第一个组件时,android会为它启动一个linux进程,并在其中执行一个单一的线程。默认情况下,应用程序所有的组件均在这个线程中运行。然而,你也可以安排组件在其他进程中运行,而且可以为任意进程衍生出其它线程。所有的组件实例都位于特定进程的主线程内,而对这些组件的系统调用也将由那个线程进行分发。一般不会为每个实例创建线程。因此,某些方法总是运行在进程的主线程内,这些方法包括view.onkeydown(),通过这个事件报告用户的动作。这意味着组件在被系统调用的时候,不应该执行长时间的抑或阻塞的操作(诸如网络相关操作或是循环计算),因为这将阻塞同样位于这个进程的其它组件的运行。所以必须为这些长时间操作在生成一个单独的线程进行处理。组件运行所在的进程由manifest文件所控制14。其中组件元素包括、和,每个元素都有一个 process 属性来指定组件应当运行于哪个进程。这些属性可以设置为使每个组件运行于它自己的进程之内或者一些组件共享一个进程而其余的组件不共享。它们也可以设置为令不同的应用程序组件在一个进程中运行,使应用程序的组成部分共享同一个linux用户id并赋以同样的权限。元素也有一个process属性,主要是用来设定所有组件的默认值。当可用内存不足而又有一个正在为用户进行服务的进程需要更多内存的时候,android有时候可能会关闭一个进程。而在这个进程中内存不足的应用程序也可能因此被销毁。当再次出现需要它们进行处理工作的时候,会重新为这些组件创建进程。在决定结束哪个进程的时候,android会衡量它们对于用户的相对重要性。例如,相对于一个仍然被用户可见的activity的进程,它更有可能去关闭一个其activity已经不在为用户所见的进程。尽管可以把应用程序限制于一个单独的进程中,但是,有时你仍然需要在定义一个线程以处理后台任务。因为用户界面必须非常及时的对用户操作做出响应,所 以,控制管理activity的线程不应用于处理一些诸如网络下载之类的耗时操作。所有不能在瞬间完成的任务都会安排到不同的线程中去。线程在代码中是以标准java thread对象创建的。android提供了很多便于管理线程的类: looper用于在一个线程中运行一个消息循环, handler用于处理消息,handler thread用于处理消息循环的线程、handler event用于处理消息循环事件。3.8 android manifest file permission(文件权限)当android启动一个应用程序组件之前,它必须知道那个组件是存在的。所以,应用程序会在一个manifest文件中声明它的组件,这个文件会被打包到android包中。生产的.apk文件里面包含应用程序的代码、文件以及其它资源。android manifest以xml的形式存在。为声明一个应用程序组件,它还会做很多额外工作,例如添加应用程序所需链接到的库的名称(除了默认的android库之外)以及声明应用程序期望获得的各种权限。android manifest包含manifest. permission的常量和manifest.permission_group的常量14。manifest. permission的常量主要有以下几个:clear_app_cache允许应用清除所有安装在设备上的应用的缓存、delete_cache_files允许应用删除掉缓存文件、delete_packages允许应用删除掉程序包等。manifest.permission_group的常量主要有:hardware_controls被用来提供直接访问硬件设备的权限、storage与sd卡访问相关联的权限组、system_tools与系统api有关联的权限组等。4. 总结通过本次对基于android文件管理器文献综述的编写,更加深入的学习android file system的内部结构,尤其是对android yaffs2的学习,有了一定初步的认识和了解。同时对android系统架构、android应用程序组件、android activity(活动)、android services(服务)、android broadcast receivers(广播接收器)、android content providers(内容提供商)、android processes and threads(进程与线程)、android manifest file permission等内容有了深刻的学习。当然,在学习的过程还是有存在一些知识方面的不足之处,希望通过以后的学习来进一步加强自己的专业知识水平,提高自身能力,为以后步入社会找工作奠定了坚实的基础。10基于android文件管理器的实现四、参考文献1 core dev guide. what is android eb/ol. /guide/basics/what-is-android.html.2 schmitt, s. & spreitzenbarth, m. & zimmermann, c. reverse engineering of the android file system (yaffs2) j. technical report, 2011, 4(3):210.3 manning c. how yaffs works eb/ol. /development/filesystems/yaffs/howyaffsworks.pdf.4 vitas, m. designing mobile ambient applications d.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度城市公共自行车租赁服务合同范本8篇
- 2025年度有机农产品生产加工合作合同范本3篇
- 2025年度面粉产品区域总代理合同样本4篇
- 2025年度航空保险理赔服务合同
- 二零二五年度企业税务顾问聘请协议3篇
- 2025年国际贸易实训报告编写与推广服务合同3篇
- 二零二五年专业植物租赁及养护服务合同2篇
- 二零二五年度环保型木工清工分包合同创新范本3篇
- 2025年度木材加工企业原材料采购合同4篇
- 2025年度国际货运代理合同欺诈风险控制与合同管理2篇
- 2025年上半年江苏连云港灌云县招聘“乡村振兴专干”16人易考易错模拟试题(共500题)试卷后附参考答案
- DB3301T 0382-2022 公共资源交易开评标数字见证服务规范
- 人教版2024-2025学年八年级上学期数学期末压轴题练习
- 【人教版化学】必修1 知识点默写小纸条(答案背诵版)
- 江苏省无锡市2023-2024学年八年级上学期期末数学试题(原卷版)
- 俄语版:中国文化概论之中国的传统节日
- 2022年湖南省公务员录用考试《申论》真题(县乡卷)及答案解析
- 妇科一病一品护理汇报
- 哪吒之魔童降世
- 2022年上海市各区中考一模语文试卷及答案
- 2024年全国统一高考数学试卷(新高考Ⅱ)含答案
评论
0/150
提交评论