欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Android架构基本知识.doc

    • 资源ID:52769656       资源大小:962.50KB        全文页数:8页
    • 资源格式: DOC        下载积分:20金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要20金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Android架构基本知识.doc

    Android架构基本知识1.2 Android的系统架构 系统构架图中可以看到从上到依次是应用层(Applications)、应用框架层(Application Framework)、 系统运行库层(Lib和Runtime)、 Linux内核层(linux kernel) 1.2.1 Android内核 Linux 内核版本2.6 位于硬件和软件堆之间的抽象层 核心服务:安全机制、内存管理、进程管理、网络、硬件驱动。 下载 (10.72 KB)2009-6-2 06:40Android依赖Linux内核2.6来提供核心服务,比如进程管理、网络协议栈、硬件驱动。在这里,Linux内核作为硬件层和系统软件栈层之间的一个抽象层。这个操作系统并非类GNU/Linux的,因为其系统库,系统初始化和编程接口都和标准的Linux系统是有所不同的。从Google目前release的Linux系统来看,其没有虚拟内存文件系统,系统所用的是yaffs2文件系统,具体的映像也都位于SDK安装目录下。通过emulator -console命令,我们可以在host终端下得到一个简单的可以控制Android的shell,这个系统包含了一个Toolbox,提供一些基本的命令工具,集中在/sbin,/system/sbin,/system/bin中,但是很简陋,命令种类也很少。若有时间和必要我会作个介绍。既然采用的linux系统,就有必要介绍一下主要驱动(如图中所示):显示驱动(Display Driver)键盘驱动(KeyBoard Driver)Flash内存驱动(Flash Memory Driver)照相机驱动(Camera Driver)音频驱动(Audio Driver)蓝牙驱动(Bluetooth Driver)Wifi驱动Binder IPC驱动Power Management (电源管理)等等。1.2.2程序库和运行库(Lib和Runtime) 程序库(lib):Android 包含一些C/C+库、媒体库、数据库引擎库等等,这些库能被Android系统中不同的组件使用,通过 Android 应用程序框架为开发者提供服务,以下是包括的一些核心库:· 系统 C 库 - C语言标准库,系统最底层的库,C库通过Linux系统来调用,一个从 BSD 继承来的标准 C 系统函数库( libc ), 它是专门为基于 embedded linux 的设备定制的。· 媒体库 - 基于 PacketVideo OpenCORE;该库支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG 。· Surface Manager - 对显示子系统的管理,并且为多个应用程序提 供了2D和3D图层的无缝融合。· LibWebCore - 一个最新的web浏览器引擎用,支持Android浏览器和一个可嵌入的web视图。· SGL - 底层的2D图形引擎· 3D libraries - 基于OpenGL ES 1.0 APIs实现;该库可以使用硬件 3D加速(如果可用)或者使用高度优化的3D软加速。· FreeType -位图(bitmap)和矢量(vector)字体显示。·WebKit/LibWebCore -一个最新的web浏览器引擎,支持Android浏览器和一个可嵌入的web视图。· SQLite - 一个对于所有应用程序可用,功能强劲的轻型关系型数据库引擎。Google使用Apache的Harmony类库,Harmony某些方面速度快于Sun的VM。Runtime在Dalvik Java VM上,Dalvik采用简练、高效的byte code格式运行,它能够在低资耗和没有应用相互干扰的情况下并行执行多个应用。Android 运行库(Runtime): Android 包括了一个核心库(Core Libraries),该核心库提供了JAVA编程语言核心库的大多数功能。 Dalvik虚拟机(DVM,Dalvik Virtual Machine)是一种寄存器形态的虚拟机。Google在开发时就已经设想用最少的内存来执行,以及同时可执行多个VM为前提 。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。 l 核心库提供的Java 功能l Dalvik 虚拟机依赖于Linux 内核,例如线程或底层内存管理l 设备可以运行多个Dalvik 虚拟机,每一个Android 应用程序在它自己的Dalvik VM 实例中运行l VM 执行优化的Dalvik 可执行文件(.dex)l Dx-工具把编译过的Java 文件转换为dex 文件我们用java语言完成Android应用设计并且发布应用后,每一个Android应用程序都在它自己的进程中运行,在底层都对应一个独立的Dalvik虚拟机实例 Dalvik相关(Dalvik和JVM的比较)Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制 前面已经有介绍内核的相关知识。 虽然代码在虚拟机的解释下运行,但是Dalvik虚拟机并不是一个java虚拟机,因为Dalvik虚拟机并不是按照java虚拟机的规范来的,二者并不兼容。他们有两个明显不同:Dalvik和JVM的比较:基于寄存器Dalvik和标准Java虚拟机(JVM)之间的首要差别之一,就是Dalvik基于寄存器,而JVM基于栈。相对于基于堆栈的JAVA虚拟机,Android中基于寄存器的虚拟机虽然在硬件、通用性上差一些,但是它在代码执行效率上却更胜一筹。也就是说Dalvik虚拟机比JAVA虚拟机更快一些。专有的dex文件格式需要注意的是,Dalvik只执行.dex的可执行文件,java程序同样需要通过编译,最后还要通过SDK中的dx工具转化成.dex格式才能正常在虚拟机上执行。Java虚拟机(JVM)运行的是字节码,而Dalvik虚拟机(DVM)运行的则是其专有的文件格式为Dex(Dalvik executable)的文件;在Java SE程序中,java类会被编译成一个或者多个字节码文件(.class)然后打包到jar文件,而后java虚拟机会从相应的class文件和jar文件中获取相应的字节码;Android应用虽然也用Java编程,但是在编译成class文件后,还会通过一个工具(sdk中的dx)将所有的class转化成一个dex文件,而后Dalvik虚拟机会从其中读取指令和数据。Dalvik虚拟机非常适合做移动终端使用。相对于桌面系统和服务器运行的虚拟机而言,Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式才能由虚拟机执行,同时一个未压缩的.dex文件中文件的大小方面会比同样的.class文件压缩成的.jar文件冗余度低占用空间更小更小。采用.dex除了因为.class大量冗余信息之外,采用dex则把所有class文件整合到一个文件中,减少整体文件尺寸和I/O操作,同时提高了类的查找速度。它不需要很快的CPU计算速度和大量的内存空间。 其他Dex的优化对一些特定的类和方法里的操作码进行优化,调整所有的字段的字节序(LITTLE_ENDIAN)和对齐结构中的每一个域,增加了对新操作码的支持,文件结构尽量简洁,使用等长指令,借以提高解析速度,尽量扩大只读结构的大小,借以提高跨进程的数据共享。 总之而言,一个应用,一个虚拟机实例,一个进程。虚拟机很小,使用空间小;Dalvik没有JIT编译器;常量池被修改为只使用32位索引,以简化解释器;使用自己的字节码dex,Java字节码class;同时高效运行多种虚拟机实例。我们可以理解成所有的优化都是针对移动设备,从内存和处理器资源的占用,做出的优化。 1.2.3应用层和应用框架层􀂋应用层程序都是基于应用框架开发和调用框架层API开发的: 核心应用,例如联系人,电子邮件,电话,浏览器,日历,地图, .􀂋 充分访问所有核心应用框架API􀂋 简化组件的重用􀂋 用Java 编写应用程序应用层:应用即应用程序,是用Java语言编写的运行在虚拟机上的程序,如图中最上层表示,不作解释。一个Android系统(不论是见到的Android模拟器还是Android实体手机) 会同一系列核心应用程序包一起发布,该应用程序包包括email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA 语言编写的。 应用框架层:该层是开发Google发布的核心应用程序所使用的API框架,即我们可以使用这些框架开发自己的应用,该架构设计简化了开发时的组件重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块,但是作为开发人员的我们必须得遵循框架的开发原则,像一些约束规定、安全性限制等。同样,该应用程序重用机制也使开发人员可以方便的替换程序组件。从上图中可以看到,Android提供如下一些组件:l 丰富而又可扩展的视图(Views):可以用来构建应用程序, 它包括列表(Lists),网格(Grids),文本框(Text Box),按钮(Buttons), 甚至可嵌入的web浏览器.l 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库),或共享它们自己的数据l 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。l 通知管理器 (Notification Manager): 使得应用程序可以在状态栏中显示自定义的提示信息。l 活动管理器( Activity Manager): 用来管理应用程序生命周期并提供常用的导航回退功能。l 窗口管理器(Windows Manager):管理所有的窗口程序l 包管理器(Package Manager):Android系统内的程序管理 l Activity和Intent 及Intent Filter重要相当,以后随着慢慢的深入学习,会有接触,参见其他l Broadcast Intent Receiver来让应用对一个外部事件作出反应。 既可以在AndroidManife.XML中注册,也可以在运行时的代码中使用ContextregisterReceiver()进行注册。Context.sendBroadcast()广播给其他应用程序 以下再来重新大略回顾以上讲到的部分内容,只是加深一下记忆:框架概念:框架可以说是一个应用的核心,是所有参与开发人员共同使用和遵守的约定,开发就是在其约定的基础上发挥想象力的扩展,但是必须保持主体结构的一致性。 现在总结一下支持的功能:1、最底层的是一个Linux KernelAndroid 的核心系统服务依赖于 Linux 2.6 内核,如安全性,内存管理,进程管理, 网络协议栈和驱动模型。 Linux 内核也同时作为硬件和软件栈之间的抽象层。2.系统运行库1)程序库(Lib)Android 包含一些C/C+库,这些库能被Android系统中不同的组件使用。它们通过 Android 应用程序框架为开发者提供服务。绿色的类库部分可以看到大名鼎鼎的SQLite 、字体FreeType 是BSD-style License 的,2D和3D的无缝接触。图形库OpenGL ES 只需通过产品测试,无偿使用于产品。等等不再介绍,查阅之前的讲解 2)Android 运行库Android 包括了一个核心库,该核心库提供了JAVA编程语言核心库的大多数功能。每一个Android应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik虚拟机实例。Dalvik被设计成一个设备可以同时高效地运行多个虚拟系统。 Dalvik虚拟机执行(.dex)的Dalvik可执行文件,该格式文件针对小内存使用做了优化。同时虚拟机是基于寄存器的,所有的类都经由JAVA编译器编译,然后通过SDK中 的 "dx" 工具转化成.dex格式由虚拟机执行。Dalvik虚拟机依赖于linux内核的一些功能,比如线程机制和底层内存管理机制。 3. 应用程序层和应用程序框架层 Android会同一系列核心应用程序包一起发布,该应用程序包包括email客户端,SMS短消息程序,日历,地图,浏览器,联系人管理程序等。所有的应用程序都是使用JAVA语言编写的。开发人员也可以完全访问核心应用程序所使用的API框架。该应用程序的架构设计简化了组件的重用;任何一个应用程序都可以发布它的功能块并且任何其它的应用程序都可以使用其所发布的功能块(不过得遵循框架的安全性限制)。同样,该应用程序重用机制也使用户可以方便的替换程序组件。隐藏在每个应用后面的是一系列的服务和系统, 其中包括;* 丰富而又可扩展的视图(Views),可以用来构建应用程序, 它包括列表(lists),网格(grids),文本框(text boxes),按钮(buttons), 甚至可嵌入的web浏览器。* 内容提供器(Content Providers)使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据* 资源管理器(Resource Manager)提供 非代码资源的访问,如本地字符串,图形,和布局文件( layout files )。* 通知管理器 (Notification Manager) 使得应用程序可以在状态栏中显示自定义的提示信息。* 活动管理器( Activity Manager) 用来管理应用程序生命周期并提供常用的导航回退功能。有关更多的细节和怎样从头写一个应用程序,请参考 如何编写一个 Android 应用程序.上面是类库和Runtime,再向上看是应用层和应用框架层的东西了。再学习完本节后,有如下你需要理解且能够有一个清晰的认识: + Application framework: 可重用的和可替换的组件部分,在这个层面上,所有的软件都是平等的。+ Dalvik virtul machine: 一个基于Linux 的虚拟机。+ Integrated browser: 一个基于开源的WebKit 引擎的浏览器,在应用程序层。+ Optimized graphics: 包含一个自定义的2D 图形库和基于OpenGL ES 1.0 标准的3D 实现。+ SQLite: 数据库+ Media support: 通用的音频,视频和对各种图片格式的支持(MPEG4, H.264, MP3, AAC, AMR, JPG, PNG, GIF)+ GSM Telephony: GSM 移动网络, 硬件支持。+ Bluetooth, EDGE, 3G, and WiFi: 都依赖于硬件支持。+ Camera, GPS, compass, and accelerometer: 都依赖于硬件支持。+ Rich development environment: 包含一套完整的开发工具集,方便跟踪调试,内存检测和性能测试,而且提供了Eclipse 的插件。

    注意事项

    本文(Android架构基本知识.doc)为本站会员(飞****2)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开