如果从 7 岁第一次在少年宫写程序开始算起,到今天,我的码龄快有 30 年了。
05 年上海交通大学计算机系毕业后,我写过各种大型企业软件,也从零开始搭建过广告算法系统,16 年底进军Android领域,这期间我最大的感受就是,软件开发行业发展变化太快了,有时候不免会觉得焦虑,唯一的解决办法,就是迎头赶上,并选择那些最有挑战的去学。
在攻克一个又一个领域之后,我发现这些看似新兴的技术,背后的原理和逻辑却是融会贯通的,无外乎计算机组成原理、数据结构、算法、操作系统这些基础知识。
对于工作
我们学习底层原理和源码无非有以下几个原因:
1)开发项目需求需要
2)对技术饱含热爱
3)有些人学习源码,可能就是为了面试
因为现在很多Android面试,面试官稍微问难一点的问题都会涉及源码,往往很多人就是对源码不熟悉而挂掉,像Android目前经常问的就是Framework相关的源码。
但无可厚非的是,在这快节奏的时代,要想不被淘汰,就必须学习源码
当然对于很多非对于非高P职位,面试标准其实很简单
- 能干活
- Java基础或者Kotlin基础要好
- 最好熟悉些常用开源框架
仔细想想的话,在这初中级程序员饱和的情况下,年轻有活力有想法的人和临近35岁的老Androider来说,企业更偏向于哪位呢?事实证明年轻人要求的薪资相对较低,还卷,结果就可想而知了。
未来
回归现在的移动开发,17年左右各种技术大爆发,开发者总会出现今天你学完组件化,明天就出了热修复的既视感,然而到如今这种情况早已消失,移动互联网的基本框架已经确定,除非再出现革命性的技术要点。
如果我们不想成为CRUD工程师,还有更高的技术追求,那么我们就要有更高的要求。Android的整体架构就这些东西:应用程序层、 应用框架层、系统运行库层和Linux内核层。
多年的Android开发相信对应用程序层都了如指掌了,但对于应用框架层相信还是一知半解,也就是我们常说的Framework层,这里为了帮助大家学习底层源码,深入Framework层,分享一份腾讯大佬手写的Android Framework框架源码笔记。
由于篇幅原因,本文精选几个章节,详细版点击卡片免费领取
目录
第一章 Android系统启动流程
- 第一节 Android启动概览
- 第二节 init.rc解析
- 第三节 Zygote
- 第四节 面试题
第二章 跨进程通信IPC
- 第一节 Sercice 还可以这么理解
- 第二节 Binder基础
- 第三节 Binder应用
- 第四节 AIDL应用(上)
- 第五节 AIDL应用(下)
- 第六节 Messenger原理及应用
- 第七节 服务端回调
- 第八节 获取服务(IBinder)
- 第九节 Binder面试题全解析
第三章 Handler源码解析
- 第一节 源码分析
- 第二节 难点问题
- 第三节Handler常问面试题
第四章 AMS 源码解析
- 第一节 引言
- 第二节 Android架构
- 第三节 通信方式
- 第四节 系统启动系列
- 第五节 AMS
- 第六节 AMS 面试题解析
第五章 WMS源码解析
- 第一节 WMS与activity启动流程
- 第二节 WMS绘制原理
- 第三节 WMS角色与实例化过程
- 第四节 WMS工作原理
- …
第六章 Surface源码解析
- 第一节 创建流程及软硬件绘制
- 第二节 双缓冲及SurfaceView解析
- 第三节 Android图形系统综述
- …
第七章 基于Android12.0的SurfaceFlinger源码解析
- 第一节 应用建立和SurfaceFlinger的沟通桥梁
- 第二节 SurfaceFlinger的启动和消息队列处理机制
- 第三节 SurfaceFlinger 之 VSync(上)
- 第四节 SurfaceFlinger之VSync(中)
- 第五节 SurfaceFlinger之VSync(下)
- …
第八章 PKMS源码解析
-
第一节 PKMS调用方式
-
第二节 PKMS启动过程分析
-
第三节 APK的扫描
-
第四节 APK的安装
-
第五节 PKMS之权限扫描
-
第六节 静默安装
-
第七节 requestPermissons源码流程解析
-
第八节 PKMS面试题
第九章 InputManagerService源码解析
- 第一节 Android Input输入事件处理流程(1)
- 第一节 Android Input输入事件处理流程(2)
- 第一节 Android Input输入事件处理流程(3)
第十章 DisplayManagerService源码解析
- 第一节 DisplayManagerService启动
- 第二节 DisplayAdapter和DisplayDevice的创建
- 第三节 DMS部分亮灭屏流程
- 第四节 亮度调节
- 第五节 Proximity Sensor灭屏原理
- 第六节 Logical Display和Physical Display配置的更新
结语
如果我们走的是技术路线而非管理路线,若还有更高的技术追求,那么学习源码是我们绕不过去的砍。真的,学习源码实在是太重要了。