Android核心分析
为什么要研究Android,是因为它够庞大,它够复杂,他激起了我作为一个程序员的内心的渴望,渴望理解这种复杂性。
maxleng
Android爱好者,长期从事嵌入式系统研究,手机软件系统研究。
本博全为原创,转载请注明出处。
展开
-
Android核心分析(28)-----Android GDI之Surface&Canvas
Surface&Canvas Canvas为在画布的意思。Android上层的作图几乎都通过Canvas实例来完成,其实Canvas更多是一种接口的包装。drawPaints ,drawPoints,drawRect,drawBitmap ... 1 Canvas与Surface之间本质关系 对于本节,我们不去研究Skia图形引擎本身,我们需要了解的我们的所做的图形到底放置到了那个地方,并且这个Canvas如何与Surface连接在一起的。 Canvas(Java)在C++原创 2010-06-14 22:05:00 · 38610 阅读 · 37 评论 -
Android核心分析(27)-----Android GDI 之SurfaceFlinger之动态结构示意图
SurfaceFlinger对象建立过程示意 1 SurfaceSession的建立 客户端请求建立Surface时,首先在要与SurfaceFlinger建立一个Session,然后再Session上建立一个Connection通过概念返回Bclient对象。WindowManagerService在添加第一个窗口前会检查SurfaceSession是否建立,如何没有建立,将会新建立一个实例来代表与SurfaceFlinger的一个连接。 new SurfaceSession()@wi原创 2010-06-14 22:02:00 · 36247 阅读 · 12 评论 -
Android核心分析(26)-----Android GDI之SurfaceFlinger
Android GDI之SurfaceFlinger SurfaceFinger按英文翻译过来就是Surface投递者。SufaceFlinger的构成并不是太复杂,复杂的是他的客户端建构。SufaceFlinger主要功能是: 1) 将Layers (Surfaces) 内容的刷新到屏幕上 2) 维持Layer的Zorder序列,并对Layer最终输出做出裁剪计算。 3) 响应Client要求,创建Layer与客户端的Surface建立连接 4) 接收Client要求,修改Layer属性(输出大原创 2010-06-14 20:31:00 · 66466 阅读 · 27 评论 -
Android核心分析(25)------Android GDI之共享缓冲区机制
Androird GDI之共享缓冲区机制 1 native_handle_t对private_handle_t 的包裹 private_handle_t是gralloc.so使用的本地缓冲区私有的数据结构,而Native_handle_t是上层抽象的可以在进程间传递的数据结构。在客户端是如何还原所传递的数据结构呢?首先看看native_handle_t对private_handle_t的抽象包装。 numFds= sNumFds=1; numInts= sNumInt原创 2010-06-14 16:29:00 · 33477 阅读 · 13 评论 -
Android核心分析(24)-----Android GDI之显示缓冲管理
Android GDI之屏幕设备管理-动态链接库 万丈高楼从地起,从最根源的硬件帧缓冲区开始。我们知道显示FrameBuffer在系统中就是一段内存,GDI的工作就是把需要输出的内容放入到该段内存的某个位置。我们从基本的点(像素点)和基本的缓冲区操作开始。 1 基本知识 1.1点的格式 对于不同的LCD来讲,FrameBuffer的二进制格式不一样,并且可以分为两部分: 1)点的格式:通常将Depth,即表示多少位表示一个点。 1位表示一个点原创 2010-06-14 13:36:00 · 43225 阅读 · 24 评论 -
Android核心分析(23)-----Andoird GDI之基本原理及其总体框架
Android GDI基本框架 在Android中所涉及的概念和代码最多,最繁杂的就是GDI相关的代码了。但是本质从抽象上来讲,这么多的代码和框架就干了一件事情:对显示缓冲区的操作和管理。 GDI主要管理图形图像的输出,从整体方向上来看,GDI可以被认为是一个物理屏幕使用的管理器。因为在实际的产品中,我们需要在物理屏幕上输出不同的窗口,而每个窗口认为自己独占屏幕的使用,对所有窗口输出,应用程序不会关心物理屏幕是否被别的窗口占用,而只是关心自己在本窗口的输出,至于输出是否能在屏幕上看见,则原创 2010-06-13 22:49:00 · 36130 阅读 · 18 评论 -
Android核心分析(22)-----Android应用框架之Activity
3 Activity设计框架 3.1 外特性空间的Activity 我们先来看看,Android应用开发人员接触的外特性空间中的Activity,对于AMS来讲,这个Activity就是客服端的Activity。应用程序员在建立Android应用时,构建Activity的子类就是Andoid外特性空间展现的接口。我们可以从下面的简单的例子描述看看Activity,到底如何原创 2010-05-24 23:32:00 · 39101 阅读 · 32 评论 -
Android核心分析(21)----Android应用框架之AndroidApplication
Android Application Android提供给开发程序员的概念空间中Application只是一个松散的表征概念,没有多少实质上的表征。在Android实际空间中看不到实际意义上的应用程序的概念,即使有一个叫Application的类,这个也就是个应用程序上下文状态,是一个极度弱化的概念。Application只是一个空间范畴的概念,Application就是Activit原创 2010-05-24 23:31:00 · 77907 阅读 · 36 评论 -
Android核心分析(20)----Android应用程序框架之无边界设计意图
Android应用程序框架 1 无边界设计理念 Android的应用框架的外特性空间的描述在SDK文档(http://androidappdocs.appspot.com/guide/topics/fundamentals.html#acttask)有十分清楚的描述,Android应用的基本概念,组件生命周期等等有详细的描述。在外特性空间中,Android提供了Activit原创 2010-05-23 22:06:00 · 30730 阅读 · 27 评论 -
Android核心分析(19)----电话系统之GSMCallTacker
Android电话系统之GSMCallTracker 通话连接管理 GSMCallTracker在本质上是一个Handler。 GSMCallTracker是Android的通话管理层。GSMCallTracker建立了ConnectionList来管理现行的通话连接,并向上层提供电话调用接口。 在GSMCallTracker中维护着通话列表:connections。顺序记录了原创 2010-05-14 23:15:00 · 31352 阅读 · 6 评论 -
Android核心分析(18)-----Android电话系统之RIL-Java
Android RIL-Java RIL-Java在本质上就是一个RIL代理,起到一个转发的作用,是Android Java概念空间中的电话系统的起点。在RIL-D的分析中,我们知道RILD建立了一个侦听套接口,等待RIL-Java的连接。一旦连接成功,RIL-JAVA就可发起一个请求,并等待应答,并将结构发送到目标处理对象。在RIL-Java中,这个请求称为RILRequest。为原创 2010-05-14 23:07:00 · 57094 阅读 · 26 评论 -
Android核心分析(17) ------电话系统之rilD
Android电话系统之-rild Rild是Init进程启动的一个本地服务,这个本地服务并没有使用Binder之类的通讯手段,而是采用了socket通讯这种方式。RIL(Radio Interface Layer) Android给出了一个ril实现框架。由于Android开发者使用的Modem是不一样的,各种指令格式,初始化序列都可能不一样,GSM和CDMA就差别更大了,所以为了消除这些差原创 2010-05-10 22:41:00 · 63079 阅读 · 40 评论 -
Android核心分析(16)-----Android电话系统-概述篇
Android电话系统之概述篇 首先抛开Android的一切概念来研究一下电话系统的最基本的描述。我们的手机首先用来打电话的,随后是需要一个电话本,随后是PIM,随后是网络应用,随后是云计算,随后是想我们的手机无所不能,替代PC。但是作为一个电话的基本功能如下: 0)拨叫电话,接听电话,挂断电话,发送短信,网络连接,PIM管理 1)由于电话运营商为我们提供了呼叫等待,电原创 2010-05-10 22:00:00 · 46976 阅读 · 24 评论 -
Android核心分析(15)--------Android输入系统之输入路径详解
Android用户事件输入路径 1 输入路径的一般原理 按键,鼠标消息从收集到最终将发送到焦点窗口,要经历怎样的路径,是Android GWES设计方案中需要详细考虑的问题。按键,鼠标等用户消息消息的处理可分为不同的情况进行判定: (1)用户输入根据系统状况是否应该派送。如在ScreenOff的情况下,在按键属于特殊按键的情况下等 (2)是否有拦截Listener原创 2010-05-05 23:12:00 · 33707 阅读 · 18 评论 -
Android核心分析(14)------ Android GWES之输入系统
Android输入系统 依照惯例,在研究Android输入系统之前给出输入系统的本质描述:从哲学的观点来看,输入系统就是解决从哪里来又将到哪里去问题。输入的本质上的工作就是收集用户输入信息并放置到目标位置。 Android在源代码分类上,并没有输入系统分类。本章的输入系统研究是一个综合的分析,前面的GWES的分析,特别是View的Focus Path以及Window Manage原创 2010-05-05 23:10:00 · 27754 阅读 · 14 评论 -
Android 核心分析(13) -----Android GWES之Android窗口管理
Android GWES之Android窗口管理 1基本构架原理 Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等顶级窗口的概念。DecorView是Window的Top-Level View,这个View我称之为主View,DecorView会缺省的attach到Activity的主窗口中。主View被加入到WindowManage原创 2010-05-04 23:35:00 · 44405 阅读 · 23 评论 -
Android 核心分析(12) -----Android GEWS窗口管理之基本架构原理
Android GWES之窗口管理之基本构架原理 Android的窗口管理是C/S模式的。Android中的Window是表示Top Level等顶级窗口的概念。DecorView是Window的Top-Level View,这个View我称之为主View,DecorView会缺省的attach到Activity的主窗口中。主View被加入到WindowManager中,WM使用WindowS原创 2010-05-04 08:50:00 · 33827 阅读 · 19 评论 -
Android核心分析 之十一-------Android GWES之消息系统
Android GWES之Android消息系统Looper,Handler,View 我们要理解Android的消息系统,Looper,Handle,View等概念还是需要从消息系统的基本原理及其构造这个源头开始。从这个源头,我们才能很清楚的看到Android设计者设计消息系统之意图及其设计的技术路线。 消息系统的基本原理 从一般的系统设计来讲,一个原创 2010-05-03 18:46:00 · 29987 阅读 · 20 评论 -
Android核心分析 之十-------Android GWES之基本原理篇
Android GWES基本框架篇 我这里的GWES这个术语实际上从Microsoft 的Window上移植过来的,用GWES来表示Android的窗口事件系统不是那么准确,在Android中Window是个弱化了的概念,更多的表现在View这个概念上。在很大程度上,Android的View的概念可以代替Microsoft Window这个概念,有点和Microsof暗中较劲的原创 2010-05-02 23:22:00 · 30882 阅读 · 31 评论 -
Android核心分析 之九-------Zygote Service
Zygote Service 在本章我们会接触到这两个单词:Zygote [生物] 受精卵, 接合子, 接合体Spawn:产卵通过这两个单词,我们就可以大体知道Zygote是干什么的了,就是叫老母鸡下蛋。通过“Zygote”产出不同的子“Zygote”。从大的架构上讲,Zygote是一个简单的典型C/S结构。其他进程作为一个客服端向Zygote发出”孵化”请求,Zygo原创 2010-04-20 21:16:00 · 50944 阅读 · 26 评论 -
Android 核心分析 之八------Android 启动过程详解
Android 启动过程详解 Android从Linux系统启动有4个步骤; (1) init进程启动 (2) Native服务启动 (3) System Server,Android服务启动 (4) Home启动 总体启动框架图如: 第一步:initial进程(system/core/init) init进程,它是一个由内核启动的用户级进原创 2010-04-20 20:36:00 · 108163 阅读 · 50 评论 -
Android 核心分析 之七------Service深入分析
Service深入分析 上一章我们分析了Android IPC架构,知道了Android服务构建的一些基本理念和原理,本章我们将深入分析Android的服务。Android体系架构中三种意义上服务: Native服务 Android服务 Init空间的服务,主要是属性设置,这个IPC是利用Socket来完成的,这个我将在另外一章来讨论。Navite服务,实际上就是指原创 2010-04-19 22:26:00 · 80228 阅读 · 69 评论 -
Android 核心分析 之六 -----IPC框架分析 Binder,Service,Service manager
IPC框架分析 Binder,Service,Service manager 我首先从宏观的角度观察Binder,Service,Service Manager,并阐述各自的概念。从Linux的概念空间中,Android的设计Activity托管在不同的的进程,Service也都是托管在不同的进程,不同进程间的Activity,Service之间要交换数据属于IPC。Binder就是原创 2010-04-15 22:15:00 · 155364 阅读 · 89 评论 -
Android 核心分析 之五 -----基本空间划分
基本空间划分Google给了我们一张系统架构图,在这张图上我们可以看到Android的大体框架组成。 从上图可以看到:Android Applications,Application Framework,Dalvik Virtual Machine,Linux。如果将Android泛化,我们可以将系统划分成两部分:原创 2010-04-15 21:58:00 · 49497 阅读 · 35 评论 -
Android核心分析之四 ---手机的软件形态
手机的软件形态 上节我给出了手机的硬件树,本节将给出手机软件形态树。主要突出手机软件涵盖的内容。通过该思维导图,我们可以看到手机软件所涉及到的方方面面,Android所涉及到的内容也不会超过下面所示太多,这个也是Andoid系统外特性空间所要展示的,这个也是Android设计者需要考虑管理的大部分内容,通过下面的整理,我们可以让我们的思维更加贴近Android设计意图,从而更深入的了原创 2010-04-12 15:12:00 · 37380 阅读 · 21 评论 -
Android是什么 之三-------手机之硬件形态
手机硬件形态 本节可能与Android无关,但是Android系统现在这个阶段更多的是移动终端形态的开发平台,本节给出了Android背后的工作-Android管理的硬件是什么,Android的本质就是要管理好这些硬件部分,为用户提供一个体验更好,速度更快的智能移动终端。对手机硬件形态的认识是要让我们对手机硬件组成有个感性的认识,让程序员知道系统中的代码是管理那一部分的,即我们堆砖头的目的是什原创 2010-04-12 14:59:00 · 44346 阅读 · 29 评论 -
Android核心分析 之二 -------方法论探讨之概念空间篇
方法论探讨之概念空间篇 我们潜意识就不想用计算机的方式来思考问题,我们有自己的思维描述方式,越是接近我们思维描述方式,我们越容易接受和使用。各种计算机语言,建模工具,不外乎就是建立一个更接近人的思维方式的概念空间,再使用工具从该概念空间向另外一个概念空间映射,我称之为人性思维空间向01序列描述空间的一个映射。实现方面来看,系统就是一个翻译器,将机器性更加人性化原创 2010-04-11 16:22:00 · 44709 阅读 · 39 评论 -
Android核心分析 之一--------分析方法论探讨之设计意图
分析方法论探讨之设计意图 为什么要研究Android,是因为它够庞大,它够复杂,他激起了我作为一个程序员的内心的渴望,渴望理解这种复杂性。我研究的对象是作为手机开发平台的Android软件系统部分,而不是Dalvik虚拟机本身。作为一个从其他平台装接过来的程序员,要从事Andoid平台系统开发,我的关于手机平台上积累的知识已经不能满足需要了,Android为我们带来了大原创 2010-04-10 23:08:00 · 61842 阅读 · 88 评论