万字总结《Android Framework入门级笔记》,啃完技术受益匪浅!

前言:小编热衷于收集整理资源,记录踩坑到爬坑的过程。希望能把自己所学,实际工作中使用的技术、学习方法、心得及踩过的一些坑,记录下来。也希望想做资深Android高级工程师的你一样,通过我的分享可以少走一些弯路,可以形成一套自己的方法,并应用到实际中。

学习Framework过程中,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。

为什么写这篇文章

刚开始学Framework,不要一行不漏的看懂全部源码,因为这是不可能的,就算你这么干了,效果也不见得好——毕竟只见树木,不见森林。打个简单的比方,Activity的启动流程,你不用关心在AMS里面这里跳到那里是干什么,还有ActivityStack以及它的那个SuperXX跳来跳去是在搞什么呢...

避免反复纠结一个点, 从而产生挫败感,学不下去。

说实话framework模块好多,一般有input,ams,wms,pms,binder为几个最关键最重要模块,这里面任何一个模块你要真正精通都比较困难,特别wms,那基本上没个一年实战,可能比较难,比如拿个冻屏,黑屏,闪黑等问题给你你能分析出来么,可能的原因太多,再来几个莫名奇妙的no focused anr等

还有冷门点的surfaceflinger,audioflinger等native的,display,功耗啥的,一般没几个人全懂。

记住一点的是学习Android framework,最终目的只有一个,就是「学会看源码」,而不是「学会源码」。如何快速地学习、梳理Framework知识体系呢?常见的学习方法有下面几种:

  • 阅读书籍(方便梳理知识体系,但对于解决问题只能提供方向)。

  • 直接阅读源码(效率低,挑战难度大)。

  • 打Log和打堆栈 (效率有所提升,但需要反复编译,添加Log和堆栈代码)。

  • 直接联调,实时便捷(需要调试版本)。

首先可以通过购买相关的书籍进行学习,其中主要的知识体系有Linux操作系统,比如进程、线程、进程间通信、虚拟内存,建立起自己的软件架构。

这里有需要的可以可以参考一下《Android Framework核心源码笔记》,里面内容包含了:Init、Zygote、SystemServer、Binder、Handler、AMS、PMS、Launcher……等知识点记录。

这套资料出品人来自前三星项目经理,扎根于Android底层框架十年之久,现腾讯课堂在任特聘讲师,其具有深厚的学术背景和丰富的项目及业务落地经验

话就不多说了,接下来好好看下这份资料。

9aea89c6c557923c005166503d7303ea.png

扫描下方二维码立即免费获取

7305ff5cd2c864248ab39ebbc72a9934.png

第一章 系统启动流程分析

  • 第一节 Android启动概览

  • 第二节 init.rc解析

  • 第三节 Zygote

  • 第四节 面试题

358ce2ccd8be383cfbdb39bcc5c5b577.png

第二章 跨进程通信IPC解析

  • 第一节 Sercice 还可以这么理解

  • 第二节 Binder基础

  • 第三节 Binder应用

  • 第四节 AIDL应用(上)

  • 第五节 AIDL应用(下)

  • 第六节 Messenger原理及应用

  • 第七节 服务端回调

  • 第八节 获取服务(IBinder)

  • 第九节 Binder面试题全解析

8de8e1e3625ce84d482fdc3e343a6d97.png

第三章 Handler源码解析

  • 第一节 源码分析

  • 第二节 难点问题

  • 第三节Handler常问面试题

193a2ef8dad0959c070f1fcd09a9bd5f.png

第四章 AMS 源码解析

  • 第一节 引言

  • 第二节 Android架构

  • 第三节 通信方式

  • 第四节 系统启动系列

  • 第五节 AMS

  • 第六节 AMS 面试题解析

0942c0d17f55d476fcb4c4b1f0e4c6dd.png

第五章 WMS源码解析

  • 第一节 WMS与activity启动流程

  • 第二节 WMS绘制原理

  • 第三节 WMS角色与实例化过程

  • 第四节 WMS工作原理

fe2021388dd1ed900457955c108d82c9.png

第六章 Surface源码解析

  • 第一节 创建流程及软硬件绘制

  • 第二节 双缓冲及SurfaceView解析

  • 第三节 Android图形系统综述

  • ......

82380f87af7b711abd9b17e0a403ae6a.png

第七章 基于Android12.0的SurfaceFlinger源码解析

  • 第一节 应用建立和SurfaceFlinger的沟通桥梁

  • 第二节 SurfaceFlinger的启动和消息队列处理机制

  • 第三节 SurfaceFlinger 之 VSync(上)

  • 第四节 SurfaceFlinger之VSync(中)

  • 第五节 SurfaceFlinger之VSync(下)

  • ......

d79c3bac2cbe3abb4c57394ef78949be.png

第八章 PKMS源码解析

  • 第一节 PKMS调用方式

  • 第二节 PKMS启动过程分析

  • 第三节 APK的扫描

  • 第四节 APK的安装

  • 第五节 PKMS之权限扫描

  • 第六节 静默安装

  • 第七节 requestPermissons源码流程解析

  • 第八节 PKMS面试题

40b69497c975104d3904517ea904164f.png

第九章 InputManagerService源码解析

  • 第一节 Android Input输入事件处理流程(1)

  • 第一节 Android Input输入事件处理流程(2)

  • 第一节 Android Input输入事件处理流程(3)

5af1d020b48c8ff6fcf315c2c224c8a7.png

第十章 DisplayManagerService源码解析

  • 第一节 DisplayManagerService启动

  • 第二节 DisplayAdapter和DisplayDevice的创建

  • 第三节 DMS部分亮灭屏流程

  • 第四节 亮度调节

  • 第五节 Proximity Sensor灭屏原理

  • 第六节 Logical Display和Physical Display配置的更新

c0f334ec74e42cbdb5359e464f67f479.png

扫描下方二维码立即免费获取

f9b1aef8bcb4c210443092f3995b801e.png

PS:我们还在8月8日~9日特邀了腾讯课堂Avlin和Lance老师为大家带来《Android12 Framework深入分析与定制开发实战》免费直播课,让大家深入解析Android 12 Framework系统启动流程及车载通信中间件集成实战演练。

902f11fd6c0482f0383466e7e4c62f85.png

猜你喜欢

转载自blog.csdn.net/c6E5UlI1N/article/details/132157699