全网最全最通俗易懂的Android Framework知识点汇总,入门到精通,完全学会

一、认识Framework层

Framework其实可以简单的理解为一些API的库房,android开发人员将一些基本功能实现,通过接口提供给上层调用,可以重复的调用我们可以称Framework层才真正是Java语言实现的层,在这层里定义的API都是用Java语言编写。但是又因为它包含了JNI的方法,JNI用C/C++编写接口,根据函数表查询调用核心库层里的底层方法,最终访问到Linux内核。那么Framework层的作用就有2个。

  1. 用Java语言编写一些规范化的模块封装成框架,供APP层开发者调用开发出具有特殊业务的手机应用。

  2. 用Java Native Interface调用core lib层的本地方法,JNI的库是在Dalvik虚拟机启动时加载进去的,Dalvik会直接去寻址这个JNI方法,然后去调用。

二,核心内容掌握程度

Android源码非常庞大,但设计很精妙。纵向分层,横向模块化,使得整个源码更易更新和维护。在手机厂商做framework的更倾向于说自己是做Android系统的,维护的模块主要包括ActivityManagerService、WindowManagerService、PackageManagerService、PowerManagerService、SurfaceFlinger、通信模块、多媒体模块等。Android系统良好的模块化设计使得各个模块负责人只需搞懂自己的模块就可以胜任工作。但是搞定自己的模块并不那么容易,对于新人一般要大概做半年才能掌握其精要,有的做了一年发现还有很多点没有掌握,这也是很常见的。

首先必须了解一些背景知识。1.Android系统采用C/S架构;2.绝大部分IPC通信采用Binder通信;3.核心Service大多运行在System_server进程;4.核心Service代码大部分都在frameworks/base/services目录下;5.别一上来就看Binder!!!6.别一开始看源码就钻牛角尖!!!

以下便是我的学习方法,不保证适合其他人,供参考。

1、首先,大概了解下该Service是干什么的。我会搜一些好的分析文章收藏起来,大概浏览下该Service为上层应用提供了什么功能?(这些文章并不会去挨个读,这跟绝大多数人习惯不一样,他们一般是一边看分析文章一边看源码)。在源码里找到源码文件,大概看下核心几个文件开头的注释,注释一般会说的非常清楚这个是干嘛的。(我用source insight看源码)

2、然后,可以尝试写一个小demo,方便调试Service内部方法或抓取系统日志来追踪代码流程。运行在system_server进程中的Java代码均可使用Android studio调试,当然必须是自己编译的image才行。MTK平台手机部分service是可以通过adb shell dumpsys XXX log XX来开启对应service的log

3、接着,从核心API调用入手,一步一步分析源码,理出一个从应用端到Service端,最后回到应用端的函数调用链。这条调用链必定很长很长,有非常多的分支,还会出现非常多的类,这个时候就要抓住主线不放,细枝末节可以不管。借助UML工具了,一般画两个图就够了,一个是类图,一个是时序图。画图要精简,只画重要的主线分支时序图和主要的类关系。这个步骤最难的是理出主线分支调用,切记钻牛角尖偏离目标任务,只需理出一个client–>service–>client的框架即可。将时序图画出来后,整个框架便构建出来了。(我用starUML工具)

4、然后,在上面的框架中必定有几个非常关键的函数,把它搞定。搞定方法就是一行一行读代码,读懂每一行并不容易,需要联系上下文进行理解。从重要函数中要理清service是如何管理target的,比如AMS是使用Stack和Task来管理Activity的,使用两个队列来处理广播,扮演连接者将client和目标ContentProvider建立起连接等。这个过程也是最花时间的,因为你需要从源码里面尽可能地还原作者的设计思想,还原的越彻底,理解的越透彻。一般我是一边理解一边用笔记记录自己的理解。(我用有道云笔记)

5、最后,整理出一篇笔记,方便以后回顾。在前面两步做完,图有了,分析也有了,稍微整理下便成了一篇文档。一般情况下是这样的,今天你理解的差不多了,一个月后你估计只记得大概个轮廓,细节全忘了,两个月后估计连轮廓都忘了。相信我,这时最管用的就是那两个图了,一看就能让你想起80%,所以我非常喜欢画类图和时序图。

而下面便是我自己整理出来的一份笔记资料。

首先给大家贴一个阿里P7大佬整理的Frmaework内核源码知识体系图,大家都知道一句话叫做方向不对,努力白费。希望大家可以根据下面这份系统的Android Framework学习路线图进行学习,这样建立的知识体系才够牢固!

在这里插入图片描述

学习规划

同时也给大家准备好了对应的Framework源码学习手册:大佬整理的《Android Framework内核源码》

本学习手册旨在通过实例和案例介绍 Android Framework 的核心概念和技术,从而帮助开发者更好地理解 Android 应用程序的设计和开发。

该手册适合具有一定 Android 应用开发经验的程序员,希望能通过深入学习 Android Framework 来帮助开发者更好地理解和掌握这一技术。

在这里插入图片描述

第一章 系统启动流程分析

  • 第一节 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配置的更新

图片

有需要完整学习资料的朋友,可以扫描下方二维码免费领取!!!

  • 4
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
Android开发从入门精通》是一本由扶松柏编著的图书,旨在帮助读者全面了解和掌握Android开发的基础知识和高级技术。本书内容分为入门篇和精通篇两部分。 入门篇首先介绍了Android开发环境的搭建和基本的开发工具的使用,包括Android Studio的安装和配置、开发环境的准备、设备和模拟器的使用等。接着,通过一个简单的Hello World应用程序的创建和运行,读者可以了解Android应用的基本结构和运行原理。 随后,入门篇详细介绍了Android开发中的核心概念和基础知识,如活动、布局、视图、资源管理、界面事件处理等。通过实践项目,读者可以学习到如何创建多个活动之间的界面切换、如何使用布局文件来设计应用的界面、如何处理用户的输入与交互等。 精通篇则深入探讨了Android开发中的高级技术和开发方法,包括网络通信、数据存储、多媒体处理、碎片、自定义视图等。通过实际案例的讲解和演示,读者可以学习到如何利用网络通信库进行网络请求,如何使用SQLite数据库进行数据持久化,如何实现音频和视频的播放,如何设计和实现复杂的界面布局等。 此外,本书还涵盖了一些Android开发中的最佳实践和常见问题的解决方法,帮助读者提高开发效率和应用性能。通过学习本书,读者可以逐步掌握Android开发的基本技能,并能够独立完成Android应用的设计和开发工作。 总之,《Android开发从入门精通》是一本循序渐进、通俗易懂Android开发指南,适合初学者和有一定基础的开发者阅读和学习。无论是对于个人学习还是职业发展,本书都是一本值得推荐的Android开发入门书籍。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值