标签:
最近一直在为Android的系统级开发发愁,很多东西云里雾里,还是觉得是基础知识不够扎实的缘故,所以,思考再三,还是决定认真研读一下《深入理解Android卷I、II》,最近深入手了一本《深入理解Android卷III》,希望能够在研读的过程中,将心得笔记写下,与Android爱好者一起学习,共同进步。
下面我们就进入正题吧。
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
1、Android系统架构
Android系统大体可分为四层:
Android系统(从下往上) |
Linux内核层:包含了Linux内核和一系列驱动程序 |
Libraries层:这一层提供动态库(也叫共享库)、Android运行时库、Dalvik虚拟机等,这一层大部分都是由C、C++编写,所以可以简单把它看成Native层 |
Framework层:这一层大部分用Java语言编写,它是Android平台上Java世界的基石 |
Applications层:与用户直接进行交互的就是这些应用程序,它们都是用Java开发 |
Android系统的最大特点之一就在于它搭建了一个被广大Java开发者热捧的Java世界,但是Java世界并不是空中楼阁,它依赖于Native世界(一个被Google极力隐藏的世界),他们之间的交互关系如下图:
对此图进行说明:
(1)Java虽具有与平台无关的特性,但是Java与具体平台之间的隔离则是由JNI层来实现的,Java是通过调用JNI层调用Linux OS中的系统调用来完成对应的功能的。
(2)Native层,为整个系统的高效与平稳提供了强有力的支持。一般而言,Java世界经由JNI层通过IPC方式与Native世界交互,而Android平台上最神秘的IPC方法就是Binder。除此以外,Socket也是常用的IPC方式。
本帖子以及后续都将围绕下面的架构进行学习:
主要包含:
1、Native层:init、Audio系统(包括AudioTrack、AudioFlinger和AudioPolicyService)、Surface系统(包括Surface和SurfaceFlinger)、常用类(包括RefBase、sp、wp等)、Vold和Rild。
2、Java Framework层:包括zygote、System_server以及Java中的常用类(包含Handler和Looper等)。
3、Java Application层:包括MediaProvider和Phone。
标签:
原文地址:http://www.cnblogs.com/pepsimaxin/p/4874591.html