下面是我整理的对android系统的学习总结。学习源码可以从系统角度分析问题,并且能借鉴系统源码的框架模式等作用。1至11小节皆为解析系统源码目录,12至13小节则为拓展方面。后面将逐渐完善。如有疑问,欢迎在下方评论指出。码字不易,如需转载,请注明出处!
2. buildbuild目录是制定android源码编译规则的地方,详情见如下博客:
浅谈android源码之build
bootable目录是制定android系统重启规则的地方,详情见如下博客:
浅谈android源码之recovery
framwork目录是连接android系统上下层的桥梁,是系统源码核心目录,这里稍微多说一点,先来看一下这个目录下的结构:
其中最为重要的其中的base分支目录,下面来看具体:
这里面都东西可多了,我这里只讲一下常见的几个系统服务来辅助理解,详情见如下博客:
浅谈framework之ActivityManagerService
浅谈framework之PackageManagerService
浅谈framework之WindowsManagerService
浅谈framework之InputManagerService
浅谈framework之PowerManagerService
浅谈framework之ConnectivityService
system目录包含一些底层系统库文件,下文主要说明的是init进程启动过程相关的内容,详情见如下博客:
浅谈android源码之system
package目录是定义并最终生成我们android系统的各种软件的一个目录,下文主要讲其中两个常见的软件,详情见如下博客:
Launcher 启动
SystemUI 启动
dalvik目录是dvm 虚拟机的源代码目录,4.4之后就用art虚拟机取代它了,但可以先学习dvm之后再来学习art,详情见如下博客:
浅谈android源码之dalvik
device目录是设备相关配置,并且一般厂商自定义产品也是在这个目录,详情见如下博客:
浅谈android源码之device
out目录比较好理解,就是编译之后生成产物的地方,详情见如下博客:
浅谈android源码之out
此目录包含的是JDK核心库文件
11. bionic此目录为系统C库
12. kernelandroid kernel是提供底层与硬件交互能力,android系统可以说是架在linux kernel之上形成的。
android内核是基于linux内核基础上添加了自己的东西,其中最为突出的就是binder驱动。
这里东西比较多,后面再补齐,先以一图概之:
作者:GLPblog