Android平台及其架构(部分转载)
一.Android的系统架构
1. 应用程序
同Android系统一起发布的核心应用程序,如email 客户端,SMS 短消息程序,日历,地图,浏览器,联系人管理程序等。 这些应用程序都是用java编写的。
2. 应用程序框架
开发者可以用它开发应用,其中包括:
• 丰富而又可扩展的视图(Views):可以用来构建应用程序, 它包括列表(lists),网格(grids), 文本框(text boxes),按钮( buttons), 甚至可嵌入的web 浏览器。
• 内容提供器(Content Providers):使得应用程序可以访问另一个应用程序的数据(如联系人数据库), 或者共享它们自己的数据
• 资源管理器(Resource Manager):提供非代码资源的访问,如本地字符串,图形,布局文件( layoutfiles )
• 通知管理器(Notification Manager): 使得应用程序可以在状态栏中显示自定义的提示信息
• 活动管理器( Activity Manager):用来管理应用程序生命周期并提供常用的导航回退功能
当我们开发Android应用程序时,就是面向底层的应用程序框架进行的。从这个意义上来讲,Android系统上的应用程序都是完全平等的,不管是Android系统提供的程序,还是普通开发者提供的程序,都是可以访问Andorid提供个的API框架。
3. 类库
一些C/C++核心库,方便开发者进行应用的开发。一般而言,Android应用开发者不能直接调用这些类库,但是可以通过应用程序框架来调用这些库。
• 系统C 库(libc):专门为基于embedded linux的设备定制的
• 媒体库:支持多种常用的音频、视频格式回放和录制,同时支持静态图像文件。编码格式包括MPEG4, H.264, MP3, AAC, AMR, JPG, PNG
• SurfaceManager :对显示子系统的管理,并且为多个应用程序提供了2D和3D 图层的无缝融合
• webkit/LibWebCore :Web 浏览引擎,支持Android 浏览器和一个可嵌入的web 视图
• SGL:底层的2D图形引擎
• 3D libraries : 基于OpenGL ES 1.0 APIs 实现的3D引擎
• FreeType :位图(bitmap)和矢量(vector)字体显示
• SQLite :轻型关系型数据库引擎
4. Android 运行时环境
• Android 核心库:提供了JAVA库的大多数功能
• Dalvik 虚拟机:依赖于linux 内核的一些功能,比如线程机制和底层内存管理机制。同时虚拟机是基于寄存器的,Dalvik 采用简练、高效的byte code 格式运行,它能够在低资耗和没有应用相互干扰的情况下并行执行多个应用,每一个Android 应用程序都在它自己的进程中运行,都拥有一个独立的Dalvik 虚拟机实例。Dalvik 虚拟机中可执行文件为.dex文件,该格式文件针对小内存使用做了优化。所有的类都经由JAVA 编译器编译,然后通过SDK中的"dx" 工具转化成.dex 格式由虚拟机执行。
5. Linux 内核
Linux 内核作为硬件和软件栈之间的抽象层。Android 的核心系统服务: 安全机制、内存管理、进程管理、网络、硬件驱动
Android平台及其架构(部分转载)的更多相关文章
- 美团外卖Android平台化的复用实践
美团外卖平台化复用主要是指多端代码复用,正如美团外卖iOS多端复用的推动.支撑与思考文章所述,多端包含有两层意思:其一是相同业务的多入口,指美团外卖业务需要在美团外卖App(下文简称外卖App)和美团 ...
- android平台的技术架构
Android平台采用了软件堆层(Software Stack)的架构,主要分为四个部分: 1.应用软件 Android 连同一个核心应用程序包一起发布,该应用程序包包括E-mail客户端.SMS短消 ...
- (转载)Android平台下利用zxing实现二维码开发
Android平台下利用zxing实现二维码开发 现在走在大街小巷都能看到二维码,而且最近由于项目需要,所以研究了下二维码开发的东西,开源的二维码扫描库主要有zxing和zbar,zbar在iPos平 ...
- Windows平台分布式架构实践 - 负载均衡(转载)
Windows平台分布式架构实践 - 负载均衡 概述 最近.NET的世界开始闹腾了,微软官方终于加入到了对.NET跨平台的支持,并且在不久的将来,我们在VS里面写的代码可能就可以通过Mono直接在Li ...
- Android 平台架构
Android 平台主要组件如下 Linux 内核 Android 平台的基础是 Linux 内核.例如,Android Runtime (ART) 依靠 Linux 内核来执行底层功能,例如线程和低 ...
- Android平台免Root无侵入AOP框架Dexposed使用详解
Dexposed是基于久负盛名的开源Xposed框架实现的一个Android平台上功能强大的无侵入式运行时AOP框架. Dexposed的AOP实现是完全非侵入式的,没有使用任何注解处理器,编织器或者 ...
- Android 平台 Native 代码的崩溃捕获机制及实现
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:https://mp.weixin.qq.com/s/g-WzYF3wWAljok1XjPoo7w 一.背景 ...
- 两分钟学会Android平台NDK编程(无须Eclipse和cygwin,可使用命令行打包多个so)
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/wangbin_jxust/article/details/37389383 之前在进行cocos2d ...
- Android WiFi系统架构【转】
本文转载自:http://blog.csdn.net/liuhaomatou/article/details/40398753 在了解WIFI模块的系统架构之前.我心中就有一个疑问,那么Android ...
随机推荐
- js中删除数组元素的几种方法
1:js中的splice方法 splice(index,len,[item]) 注释:该方法会改变原始数组. splice有3个参数,它也可以用来替换/删除/添加数组内某一个或者几个值 inde ...
- Django--登录认证
COOKIE 与 SESSION 概念 cookie的使用,不止局限于我们所使用的登录认证,cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此 ...
- [译]GLUT教程 - 整合代码4
Lighthouse3d.com >> GLUT Tutorial >> Pop-up Menus >> The Code So Far IV 以下代码使用了位图字 ...
- vue实践---vue不依赖外部资源实现简单多语
vue使用多语,最常见的就是 vue-i18n, 但是如果开发中的多语很少,比如就不到10个多语,这样就没必要引入vue-i18n了, 引入了反正导致代码体积大了,这时候单纯用vue实现多语就是比较好 ...
- 中国程序员如何去 Facebook 工作?
1.在Facebook,可以选择哪里工作? Facebook 在内地确实没有 Office ,但可以在https://www.facebook.com/careers/?ref=pf#location ...
- python的学习研究
2017年5月8日-----开始学习python 为什么学习python? 感觉做爬虫很酷,我又不喜欢Java,所以就学python 提升自己,入行PHP到这个月底半年,想更多的扩展自己,让自己增值 ...
- apple-touch-icon-precomposed 和 apple-touch-icon属性区别
苹果safari浏览器当中apple-touch-icon-precomposed 和 apple-touch-icon属性是有区别的,之前在网上查了下相关的资料和苹果的开发文档手册,对这两中属性区别 ...
- springboot工程的结构
1 springboot的工程结构是什么 就是我们组织springboot工程时遵循的代码的目录结构. 2 spring initializr创建的工程的目录结构 源码目录:src/main/java ...
- jquery点击一组按钮中的一个,跳转至对应页面处理策略。(如点击订单列表中的一个订单,跳转至该订单的详情)
将改组按钮的数据设置一个相同的属性(如class),然后每个按钮设置不同的id 当用户点击属性为class的按钮,根据id属性来判断点击的是哪个按钮,然后进行相关操作. 代码示例: <scrip ...
- cocos2dx使用cocostudio导出的ui
local uilocal function createLayerUI() if not ui then ui=cc.Layer:create(); createLayerUI=nil; end r ...