Android架构分析填坑
2015-08-27 09:00
357 查看
ok,我们今天来填坑 -- Android的架构图
曾经,学习这幅图的时候只会死机硬背,这层的功能是xxxx,那层是xxxx
现在回想起来,那和读死书确实没什么区别,而应该从设计人员的本质出发,理解这些意义。
Android的诞生与2011年,主要是为了应付苹果,以及谷歌公司看到了未来的手机巨大潜力,从而研发了安卓操作系统。
为了增加抗衡ios的砝码,设计android是这样的,要开发方便,语言要许多人会使用,还要开源...
于是,基于开源的linux kernel,用了许多个优秀的开源库,以及世界最广泛的面相对像的java语言,android就此诞生了!
那么设计一个移动操作系统需要有什么呢,这也是android架构图的本质?
要有网络 要有影音 要有存储 还可以打电话 还要支持一堆传感器...
于是框架就确定了,从整体上看,android的操作系统都是“拼凑出来的”,各个层次大部分都是现成的东西,下面我们慢慢由下到上分析一下。
最底层,linux kernel,主要两个部分的作用,一个是一些管理,比如内存管理,进程管理,网络栈等等
另一个是驱动,比如Android的专用驱动,logger binder 等等
再上一层,library层,这一层细分其实分为3个部分,分别是HAL c++的常用库 以及Android运行时。
需要注意的是HAL硬件抽象层,为了保护厂商利益而特别定制的层次,分为用户空间和内核空间两个部分,具体详细信息可以去阅读老罗的博客。
library层的其他,比如SQLite WebKit OpenGL啊等等,这些c库都是开源的,我们调用的API最底层其实就是调用到这里的库。
library还有一个重要的组成,那就是Android Runtime。
Android运行时包括Davik虚拟机以及java核心类库。Dvm虚拟机和JVM虚拟机最主要的区别就是前者基于寄存器,虽然占用空间比基于堆栈的JVM虚拟机大,但是指令少,所以执行速度快,同时,dex也比jar占用内存小,比较适合移动端用。java核心类库就不多说了。
再上一层的应用层和框架层,框架层就是API了,也可以看成是c库层的封装,采用广泛的java语言,通过JNI调用c++层的库,从而达到实现Android特性的功能;应用层不多说了,把业务逻辑封装好成为一个完整的apk,就是应用层的程序了。
一个例子:调用系统硬件的过程
组件 -- 系统服务 -(BInder IPC)- HAL Model -(device file)- 内核驱动 -- 硬件
相关文章推荐
- flume-ng性能优化与架构设计
- 中小站长网站建设发展需注意的的六点ccxtqj
- php大力力 [027节] 被百度收录较好的几个视频网站示例
- SEO日志:从用户搜索类型定位企业网站
- V4L2驱动程序架构
- heartbeat
- 【吐槽】中国网站和国外网站的不一样
- 基于Mac的网站临时域名发布小结
- PC网站应用接入微信登录
- 关于项目架构设计的一些规范
- 网站性能性能调优总结
- 学习网站
- 系统架构师-要求
- 一页式网站新要求
- 牛人推荐机器学习网站
- jQuery ui实现动感的圆角渐变网站导航菜单效果代码
- 关于大型网站技术演进的思考(六)--存储的瓶颈(6)
- 极路由安全设计架构分析
- 关于大型网站技术演进的思考(五)--存储的瓶颈(5)
- 大型网站技术架构