Android的系统结构
来源:互联网 发布:淘宝采集软件有什么用 编辑:程序博客网 时间:2024/04/28 06:01
Android系统的底层建立在Linux系统之上,整个系统采用软件叠层(Software Stack)的方式进行构建,包括4层:操作系统层、中间件层、用户界面层和应用软件层。叠层结构能够使层与层之间相互分离,明确各自的分工,保证了层与层之间的低耦合。下面根据Android系统的体系结构图,对各个部分进行介绍。
一、Linux内核
Android系统建立在Linux2.6之上,Linux内核是系统硬件和软件叠层之间的抽象层,它提供了安全性、内存管理、进程管理、网络协议栈、驱动模型等核心系统服务。驱动模型包括:
- Disney Driver:显示驱动
- Camera Driver:摄像头驱动
- Flash Memory Driver:闪存驱动
- Binder(IPC) Driver:Binder(IPC)驱动
- Keypad Driver:键盘驱动
- WiFi Driver:WiFI驱动
- Audio Driver:音频驱动
- Power Management:电源管理
二、系统库
- Surface Manager:管理对显示子系统的访问。
- Media Framework:媒体库,基于PacketVideo的OpenCORE,支持查看静态图片、支持录制和播放多种主流格式的音视频文件,包括PNG、JPG、MPEG4、H.264、MP3、AAC、AMR等。
- SQLite:功能强大的轻量级关系数据库。
- OpenGL ES:用于3D开发的系统库
- FreeType:位图和向量字体显示。
- WebKit:Web浏览器引擎。
- SGL:底层的2D图形引擎。
- SSL:网络通信中进行SSL加密的库。
- libc:标准C系统库。
三、Android运行时
在Android5.0以前,Android运行时由两部分组成:Android核心库和Dalvik虚拟机。从5.0开始,ART取代了Dalvik虚拟机。原因在于,Dalvik虚拟机采用JIT(Just-in-time)解释器进行动态编译并执行,导致APP运行时比较慢;而ART模式在用户安装APP时进行预编译(Ahead-of-time,AOT)操作,将原本在程序运行时的编译动作提前到用户安装时,字节码预先编译成机器码,使其成为真正的本地应用。ART虽然占用了更多的存储空间,延长了应用安装和系统启动的时间,但是它可以减少程序运行时动态编译的开销,提高APP的运行效率。
四、应用程序框架
开发人员在开发Android应用程序时,就是面向底层的应用程序框架层进行的。应用程序框架层提供了大量API供开发者使用。应用程序框架既是应用程序开发的基础,也是软件复用的重要手段。该层包括:
- Activity Manager:活动管理器
- Window Manager:窗口管理器
- Content Providers:内容提供者
- View System:视图系统
- Package Manager:包管理器
- Telephony Manager:电话管理器
- Resource Manager:资源管理器
- Location Manager:位置管理器
- Notification Manager:通知管理器
五、应用程序层
该层提供一些核心应用程序包,例如电子邮件、短信、日历、地图、浏览器和联系人管理等。同时,开发者可以利用Java语言设计和编写属于自己的应用程序。
- android系统的结构
- Android的系统结构
- Android的Camera系统结构
- Android系统的目录结构
- android系统的分区结构
- Android 的GUI 系统结构
- Android多媒体系统的结构
- Android系统的目录结构
- Android学习开始, Android的系统结构
- Android系统文件夹结构的说明
- Android 系统的四层结构
- Android系统结构
- Android系统文件结构
- Android编译系统结构
- Android系统结构
- android系统结构
- Android系统文件夹结构
- Android编译系统结构
- 正则表达式剖析-案例
- HDU1166:敌兵布阵
- Java中重定向与请求转发的区别
- leetcode解题之231# Power of Two&326. Power of Three Java版 (判断是否为2,或者3 的幂)
- js中获取对象的属性名称
- Android的系统结构
- 前端好用插件
- layout_weight_权重
- 稻城
- codeforces 791B Bear and Friendship Condition
- Android中获取ActionBar为null的问题
- JAVA笔试题(转)
- 决策树的一些东西,乱写的当个总结。
- 前端框架的选择