- 1、本文档共15页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
android学习笔记----架构剖析
Android 学习笔记Android 架构剖析
首先在网上 google 了一下,发现对Android 进行源码分析的文章并不少,不过
大都着重于细节描述,初学者反而会陷入代码的细节中缺乏对全局的把握。 以
我学习的经验初学新知识时先从大局入手,等了解系统框架的构成后再逐步深入,
下图是 Android 系统的架构图(官方的标配):
这幅图是 Google 的原创图,网上很多的架构图应该都是基于此图。完整的演讲
稿和视频来自于 2008 GoogleI/O 大会
(/site/io/anatomy--physiology-of-an-android),
基础好的同学建议结合演讲稿认真看下整个演讲视频,强烈推荐!
看完此视频基本上对 Android 架构心中有数了。下面基于这篇演讲稿 “Android
Anatomy and Physiology”从底层到上层逐步解剖:
Layer1: Linux Kernel
Linux 内核,对应上图中红色部分。这是 Android 的操作系统层,主要用C 语言
编写。
1.1 Android 基于 Linux Kernel,但不是 Linux。演讲稿上说当时是基于2.6.24,
而从 Linux 3.3 开始 Android 对内核代码改动部分已经融入 kernel 主线。据说
最新的 Android 4.3 是基 Linux 3.8,等到 7 月 9 号就知道 Android4.3 的新特
性啦!
Android 不是 Linux。在我看来Android 本质上就是 Linux 的一个变种,不管
是上图绿色部分的 Libraries 还是黄色部分的 Dalvik Virtual
Machine (Android 不在使用原 java 的 HotSpot 虚拟机,原因不解释),以及蓝色
Application Framework 的部分Service 都直接使用了Linux kernel 提供的API。
甚至于虚拟机上层的 Java 库最终也是下层 API 的面向对象的封装(比如你可以
自己编写一个Java 类库接口提供到特定硬件的 访问)。好像基本上所有的基于
Linux 的智能手机系统如Meego,Tizen 等都不会在命名中提到 Linux,可能长期
以来在普通用户心中Linux 就是界面不友好的代名词,厂商考虑到产品形象不
会在产品名称中包含 Linux 字样。
1.2 没有本地窗口系统。这是肯定的,没有带 X Window 这种在 Linux 发行版中
广泛使用的 GUI 系统。
1.3 没有 glibc 支持。废话,这是 Linux kernel。
1.4 没有包含标准 Linux 中一系列工具集。一般的嵌入式Linux 都不会包含,都
是裁剪后的能满足需求的最小系统。
1.5 提供了内核增强补丁以支持 Android。包括Alarm (时钟),Ashmem (匿名
共享内存),Binder (IPC 驱动),Power Management (电源管理),Logger (日
志记录),Low Memory Killer (替代标准Linux 中的OOM Killer,在内存不足
时有选择性地杀掉非活跃进程)。补充:从 Android 3.0 开始在 kernel 的
netfilter 模块中又增加了 xt_qtaguid 支持应用程序流量计数,引入 xt_quota2
支持流量限制告警。
1.5.1 Binder IPC。为什么不用常规的 IPC?这里给出了答案:常规 IPC 会引入
过重的处理开销和安全漏洞,并且通过共享内存实现的 IPC 性能更高。
1.5.2 PM 电源管理。Android 的电源管理是基于标准的Linux 电源管理模块,并
提供的更多的策略和不同类型的 wake lock。
Layer2: Native Libraries
本地库,对应架构图中绿色部分。大量使用了开源软件,主要用 C/C++编写。
2.1 Bionic Libc 库。为什么要使用 Bionic Libc 库而不是标准的 Libc 库,这
里提到了几个优点:Bionic 库是专为CPU和内存受限的嵌入式系统而实现的 libc
库,其代码短小运行速度很 快,而且有很精简的 pthread 多线程库实现。另外
其 License 不是 GPL 而是 BSD,以此规避了 GPL License 的感染性。其缺点是:
不支持某些 POSIX 标准功能,并不完全兼容 glibc。
2.2 Function Libraries。Android 所需要的各种功
您可能关注的文档
最近下载
- 小学、初中、高中、大学英语词汇合集.pdf
- 《宿曜经》汉译版本之汉化痕迹考证.pdf
- 《珍爱生命-远离毒品》PPT【精品课件】.pptx
- 标准图集-16G519-多高层民用钢节点详图.pdf VIP
- FG5-X绝对重力仪-劳雷LAUREL.PDF
- 湖北省武汉市2023-2024学年高二上学期期中考试英语试卷(含答案).docx VIP
- 第7课 难忘的岁月(课件)(共26张ppt)赣美版初中美术八年级上册.pptx VIP
- 第一节-金属的化学性质公开课一等奖优质课大赛微课获奖课件.pptx
- 儿童绘本故事《龟兔赛跑》PPT课件(可编辑带动画).ppt
- 新北师大版五年级上册数学第四单元《多边形的面积》知识点总结(全).docx VIP
文档评论(0)