前言
作为Android程序员,我们与其他程序员一样,每过一年焦虑便加深一分,尤其是在近几年市场环境日益严峻的情况下。许多同行面对日益临近的中年危机,感到无所适从,不知如何应对。有人选择转行,有人则继续在焦虑中度过每一天。
但是与其他开发领域相比,中级以上的Android开发人员在市场上处于供不应求的状态。即使在疫情的冲击下,Android系统的全球市场份额依然高居榜首!这意味着Android开发在市场上仍有着大量的需求。
而且你细心的去搜索网上的面经以及面试题,会发现一个共性之处,这些面经以及面试题几乎80%都有Handler,binder的问题而且占比越来越大。
所以我们2024年最该学习什么?毫无疑问是Framework。
学习Framework之前首先去了解这是一个什么东西,很多人在做Android开发好几年了甚至对Android本质上是一个什么东西都不是很了解Android本质上是一个linux系统。只不过谷歌在linux的基础上开发了一些一系列软件,因为本身的应用方向是在移动端这块,Android在一系列的基础上定了一个自己的APK的标准,在整个linux系统上需要一个完整的解包和帮我运行我自己写的代码的一个过程,那么这个过程涉及到如何去启动一个进程,那么在这个过程中我们要去了解
Android的开机流程
开机后做了什么
- 启动系统运行了那些软件
- 我自己的APK安装到这个系统上由谁来安装的
- 以及如何启动当前进程也就是APP所谓的启动流程
- 以及如何看到当前APP我想看到显示的画面
这就涉及到当前的Android的整体渲染的过程以及触摸信号的处理,这些了解完了就知道了代码写出来为什么会有卡顿,崩溃情况从出现而导致APP启动流程慢以及闪退。
Android Framework的一个整体学习也是为了让我们深入本质,了解谷歌如何去吧Android系统写出来的,同时这些方案会对我们日常写代码过程中出现的各种各样的问题会有一个怎么的反应和反馈,按照整体的学习路线的话,首先第一个先要去搞定一个Binder和Handler相关的所谓的一个跨进程通信的问题,因为它肯定是多方软件在进行一个相关的协调处理,所以第一时间要去了解Handler和Binder的进程通信问题,接着了解如何开机,APK如何安装,如何启动,整个APP启动过程中画面如何渲染出来,以及触摸信号如何处理。了解了这些东西后基本上可以是一个初中级的一个开发者过度到高级开发的过程。
然而枯燥的学习找指南,非常很容易让人半途而废。我在下面写了几个关于Android framework 比较关键的知识点,包括我自己的代码解析和大厂团队的源代码,还有更多指南
关注Vx公众号:Android 老皮
《Android Framework源码开发揭秘》
第一章 系统启动流程分析
Android系统完整的启动过程,从系统层次角度可分为 Linux 系统层、Android 系统服务层、Zygote进程模型三个阶段; 知识要点:
-
第一节 Android启动概括、
-
第二节 init.rc解析、
-
第三节 Zygote、
-
第四节 面试题
第二章 跨进程通信IPC解析
Binder作为Android进程间通信的机制,可以看做是一个驱动。在Android中,常见的进程间通信例如系统类的:打电话、闹钟等;自己创建的:像WebView、视频播放、音频播放、大图浏览等。
第三章 Handler源码解析
- 第一节 源码分析
- 第二节 难点问题
- 第三节Handler常问面试题
第四章 AMS源码解析
- 第一节 引言
- 第二节 Android架构
- 第三节 通信方式
- 第四节 系统启动系列
- 第五节 AMS
- 第六节 AMS面试题解析
第五章 WMS源码解析
- 第一节 WMS与activity启动流程
- 第二节 WMS绘制原理
- 第三节 WMS角色与实例化过程
- 第四节 WMS工作原理
第六章 Surface源码解析
- 第一节 创建流程及软硬件绘制
- 第二节 双缓冲及Surface View解析
- 第三节 Android图形系统综述
第七章 基于Android12.0的SurfaceFlinger源码解析
- 第一节 应用建立和SurfaceFlinger的沟通桥梁
- 第二节 SurfaceFlinger的启动和消息队列处理机制
- 第三节 SurfaceFlinger之VSyns(上)
- 第四节 SurfaceFlinger之VSyns(中)
- 第五节 SurfaceFlinger之VSyns(下)
第八章 PKMS源码解析
- 第一节 PKMS调用方式
- 第二节 PKMS启动过程分析
- 第三节 APK的扫描
- 第四节 APK的安装
- 第五节 PKMS之权限扫描
- 第六节 静默安装
- 第七节 requestPermissions源码流程解析
- 第八节 PKMS面试题
第九章 InputManagerService源码解析
- 第一节 Android Input输入事件处理流程(1)
- 第二节 Android Input输入事件处理流程(2)
- 第三节 Android Input输入事件处理流程(3)
第十章 DisplayManagerService源码解析
- 第一节 DisplayManagerService启动
- 第二节 DisplayAdepter和DisplayDevice的创建
- 第三节 DMS部分亮灭屏流程
- 第四节 亮度调节
- 第五节 Proximity Sensor灭屏原理
- 第六节 Logical Display和Physical Display配置的更新