Android系统Java源码探索(1)—系统架构及源码说明

一 前言

Android 系统庞大复杂,按照经典的模块化方式可以自下而上分为Linux内核层,系统类库,运行时,应用框架层,应用层,图1是一张经典的Android 四层架构图。可以看出Android系统采用了低耦合、高复用的组件化思想设计。下面是老罗对Android组件化设计说明。

Android的组件设计思想与传统的组件设计思想最大的区别在于,前者不依赖于进程。也就是说,进程即使由于内存紧张被强行杀掉了,但是运行在里面的组件还是存在的。这样就可以在组件再次需要使用时,原地满血复活,就像什么都没发生过一样。这种设计思想非常适合内存较小的移动设备 ——罗升阳

由于我们接下来要研究Java层的源码,所以需要了解整个系统的启动流程, 方便我们理解源码,但是图1只是体现了Android的模块化架构,并未真实反映Android系统内部架构和运行流程。

图1 Android 经典模块架构.png

二 系统架构

图2是一张官网的系统架构图,结合自己的认知绘制了图3,就以图3说明系统内部的架构图:


图2 Andorid 官网系统架构.png
图3 Android 系统架构.png

Android系统内部自下而上分为Linux 内核层,硬件抽象层,框架层(包括JAVA 和C++框架),BInder IPC通信层,APP应用程序层;

  • Linux Kernel层
    Android 底层使用Linux内核,Android对典型的Linux内核做了补充,提供了内存管理,和唤醒锁定Binder驱动程序等,对于开发驱动程序而言,和典型的linux内核驱动开发是一样的。
  • 硬件抽象层
    典型的Linux系统都是把硬件层放在内核空间的驱动模块实现,而Android系统放在了用户空间,有一个重要原因是保护厂商的利益,因为linux内核源码遵循的是GPL协议(这个协议你修改了源码,就要公开),但是把对于硬件的驱动开发完全放在用户空间是不可能实现的,所以android采用了折中的方案,加了一个在用户空间实现的硬件抽象层,封装了硬件的实现细节和参数,从而保证了厂商的利益。
  • 系统框架层
    该层主要包含系统服务(窗口管理器,搜索服务,通知管理器等)和媒体服务(与播放和录制有关)。
    • JAVA 框架层
      该层主要是利用JAVA实现的系统服务,我们分析的源码主要是这一层,包括Window Manager的理解,Activity Manager,Package Manager,View System等。
    • C++ 框架层
      该层主要包含媒体服务,3D绘制库—OpenGL ,数据库—SQLite等。
  • Binder IPC层
    Binder作为Android系统提供的一种进程间通信机制,是个难点,后面会好好看看源码。
  • APP层
    该层是我们利用四大组件开发的APP,以及系统开发的APP,通过Binder和系统框架层之间通信,这层离应用开发最近,要重点理解一下。

三 Android O Java部分源码说明

上面说了Android系统庞大复杂,源码总共有30G左右,所以我们摘出来APP应用层和JAVA Framework层的部分代码有浅入深分析我们的常用组件;


APP应用层的核心源码.png

JAVA Framework层核心源码.png

四 总结

我们以上一篇提到的几个知识点为思路,结合JAVA层源码(主要是图3中这一部分),对应用层组件由浅入深分析。包括Window Manager,Activity Manager,Package Manager,View System,Content Providers等。


Android JAVA部分结构图.png

由于能力有限,有的方面可能理解不当,后期会根据情况随时调整。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,362评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,330评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,247评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,560评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,580评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,569评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,929评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,587评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,840评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,596评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,678评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,366评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,945评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,929评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,165评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,271评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,403评论 2 342