首页 > 编程语言 >我快被Framework源码烦死了

我快被Framework源码烦死了

时间:2023-06-19 11:00:46浏览次数:50  
标签:分析 烦死 Framework Binder 源码 Android 解析


前言

这段时间,忙到没时间学新东西,都有点心有余而力不足,想着抽空补补课,于是重读了Framework源码。

因为Framework源码太重要了,像掉帧监控、函数插装、慢函数检测、ANR 监控、启动监控等,都需要对 Framework 有比较深入的了解,才能知道怎么去做监控,利用什么机制去监控,函数插桩插到哪里,反射调用该反射哪个类哪个方法哪个属性…

Framework 作为Android框架层,为 App提供了众多API去调用,但是很多机制都是Framework包装好了给App来用的,如果不知道这些机制的原理,那么很难去在这基础上做优化。

但是Framework源码非常庞大,但设计很精妙。纵向分层,横向模块化,分分钟就想放弃。后来硬着头皮总结,才慢慢找到了方法。

不论是看书,看博客,你的最终目的只有一个「学会看源码」,而不是「学会源码」。关于如何阅读源码,这不是一个简单的问题,分享几点经验。

我快被Framework源码烦死了_源码分析

老司机经验分享

选一个小的主题,你感兴趣的,平时有积累的主题,然后先看Android文档里相关主题的设计资料,再引申到网上看看别人的分析资料。一定要用非度娘的搜索引擎找英文资料。

其次,需要对C++/JAVA的语言特性比较熟悉。Android里面的代码还是比较紧跟语言标准的。Android 10/11 里面已经使用C++14的特性,不了解C++14的标准,很多Framework代码都不容易看懂。

第三,要会用好的分析工具。不管是能生成交叉引用的IDE环境,还是UML工具,一定要用工具记录和整理自己最新的理解。Android Framework每个子模块都有一个团队开发,里面已经复杂到一个人不可能记住所有的细节。所以必须使用工具,并且善于工具。

最后,分析Android Framework,还需要耐心和坚持,明白自己想要什么。刚开始分析的时候,无门而入,真的很迷茫,时间久了才会有感觉。

我快被Framework源码烦死了_android_02

为什么一定要学?

以前,你只要了解四大组件、视图、网络请求,你就能拿到一份薪资丰厚的offer;如果你精通Java基础、知道如何处理OOM、组件生命周期原理、熟悉Android源码、架构体系,进阿里腾讯可能都很轻松。

现在面试是越来越难了!别说阿里、头条、腾讯等大厂,就连很多中小型公司面试问的都是原理。

为了帮助大家深入理解Framework源码,分享给大家一份知乎高赞的笔记《Android Framework精编内核解析》。

本笔记讲解了Framework的主要模块,从环境的部署到技术的应用,再到项目实战,让我们不仅是学习框架技术的使用,而且可以学习到使用架构如何解决实际的问题,由浅入深,详细解析Framework,让你简单高效学完这块知识!

我快被Framework源码烦死了_App_03

第一章:深入解析Binder

Binder机制作为进程间通信的一种手段,基本上贯穿了andorid框架层的全部。所以首先必须要搞懂的Android Binder的基本通信机制。

本章知识点

  • Binder 系列—开篇
  • Binder Driver 初探
  • Binder Driver 再探
  • Binder 启动 ServiceManager
  • 获取 ServiceManager
  • 注册服务(addService)
  • 获取服务(getService)
  • Framework 层分析
  • 如何使用 Binder
  • 如何使用 AIDL
  • Binder 总结
  • Binder 面试题全解析
  • ……

我快被Framework源码烦死了_源码分析_04

第二章:深入解析Handler

本章先宏观理论分析与 Message 源码分析,再到MessageQueue 的源码分析,Looper 的源码分析,handler 的源码分析,Handler 机制实现原理总结。最后还整理Handler 所有面试题大全解析。

我快被Framework源码烦死了_android_05

第三章:Dalvik VM 进程系统

Andorid系统启动、init 进程、Zygote、SystemServer启动流程、 应用程序的创建使用,Activity的创建、销毁 Handler和Looper。

我快被Framework源码烦死了_源码分析_06

第四章 深入解析 WMS

窗口管理框架 系统动画框架 View的工作原理。

我快被Framework源码烦死了_android_07

第五章 PackagerManagerService

包管理服务,资源管理相关类

我快被Framework源码烦死了_App_08



标签:分析,烦死,Framework,Binder,源码,Android,解析
From: https://blog.51cto.com/u_16163452/6511756

相关文章

  • Jetpack系列-Lifecycle使用和源码分析
    1简介和简单使用1.1简介Lifecycle是Jetpack中一个生命周期感知型组件,可执行操作来响应另一个组件(如Activity和Fragment)的生命周期状态的变化。该组件通过感知Activity和Fragment的生命周期事件,在内部维护一个状态,该状态又可以转换成生命周期事件。主要作用就是进行系统组件......
  • 阿里P7架构师整理:最新Android 开发源码精编内核解析
    做Android开发多年,我们都深知阅读源码的重要性,阅读源码可以帮助我们:①在通用型基础技术中提高技术能力,凸显出自己的技术实力;②在重点领域打造自己的亮点,参与技术栈的运维,积累丰富的使用经验,成为团队的核心骨干;③从优秀的源码中学习设计模式的应用,和有用的编码技巧。但是平时读源码......
  • EventBus 源码分析 - 注解 + 反射
    EventBus源码解析随着LiveData和KotlinFlow的出现,EventBus已经慢慢过时了。不过EventBus源码的设计思想以及实现原理还是值得我们去学习的。getDefault()方法EventBus().getDefault().register(this)首先EventBus的创建用到了DCL单例模式,源码如下:publicclassEventB......
  • Android 换肤之资源(Resources)加载源码分析(一)
    本系列计划3篇:Android换肤之资源(Resources)加载(一)—本篇setContentView()/LayoutInflater源码分析(二)换肤框架搭建(三)看完本篇你可以学会什么?Resources在什么时候被解析并加载的Application#ResourcesActivity#Resourcesdrawable如何加载出来的创建自己的Resources加......
  • memcpy源码
    【调用栈】 【代码】 【glibc2.17和2.18性能的讨论】https://sourceware.org/bugzilla/show_bug.cgi?id=24872......
  • 【QCustomPlot】使用方法(源码方式)
    说明使用QCustomPlot绘图库辅助开发时整理的学习笔记。同系列文章目录可见《绘图库QCustomPlot学习笔记》目录。本篇介绍QCustomPlot的一种使用方法,通过包含源码的方式进行使用,这也是最常用的方法,示例中使用的QCustomPlot版本为Version2.1.1。目录说明1.下载源码2.......
  • 杰森气象——实况天气小程序(内附完整源码)
    项目介绍当今社会,天气的变化对我们的生活产生着越来越大的影响。为了更好地了解天气状况,越来越多的人开始使用天气查询小程序。今天,介绍的是一款实用的天气查询小程序——杰森气象。杰森气象是一款功能强大的天气查询小程序,它可以帮助我们随时了解天气状况,包括实时天气、预警信息、......
  • djangorestframework 学习
    创建记账apppythonmanage.pystartapprecord首先需要确认数据库表结构,分两张表:分类表、账单表分类表包括:分类名称账单表包括:消费金额、消费时间、消费用户(关联到用户表)、消费分类(关联到分类表)、消费的具体描述。根据以上信息创建Model:fromdjango.dbimportmodelsfro......
  • 尚医通day13【预约挂号】(内附源码)
    页面预览预约挂号根据预约周期,展示可预约日期,根据有号、无号、约满等状态展示不同颜色,以示区分可预约最后一个日期为即将放号日期选择一个日期展示当天可预约列表预约确认第01章-预约挂号接口分析(1)根据预约周期,展示可预约日期数据(2)选择日期展示当天可预约列表1、......
  • nginx-clojure 源码构建一些问题
    因为nginx-clojure就是一个标准的nginx模块,一些是尝试基于源码进行构建发现一些问题的说明简单说明nginx当前1.25版本的构建是有问题的,1.24版本构建是可以的,1.23版本实际上官方已经提供了但是如果查看nginx官方文档会发现1.23版本的下载官方是似乎移除了,没直接提供了......