从应用开发深入到系统开发,Android framework应该如何学习?

Android Framework

近年越来越多的Android工程师开始关注Framework领域,伺机从应用开发深入到系统开发

但是,稍一了解就会发现,Android源码非常庞大,为使整个源码更易更新和维护,它纵向分层,横向模块化,设计非常精妙。

其维护的模块主要包括:

  • ActivityManagerService、

  • WindowManagerService、

  • PackageManagerService、

  • PowerManagerService、

  • SurfaceFlinger、

  • 通信模块、

  • 多媒体模块等…

多到令人眼花缭乱。

而且一接触源码,发现得熟悉JNI、读得懂C++、理解Java虚拟机、Linux系统甚至汇编、指令集等等,可谓是困难重重。

Android Framework到底怎么学?成为了很多人当前迫在眉睫的问题。

入门篇:

把握整理流程最为重要。

比如Android系统启动流程,你先要知道启动电源–>加载引导程序BootLoader–>Linux内核启动–>init进程启动–>Zygote进程启动–>SystemServer进程启动–>Launcher启动。

然后再去了解其中的每一步的流程,比如Zygote启动流程就是,创建Java虚拟机并为Java虚拟机注册JNI方法,创建服务器端Socket,启动SystemServer进程。这个过程,可以不用太在意源码

深入篇:

看源码,原则仍是先把握整体,再了解局部。这个场景下,所有的细节都是不重要的。

比如Activity的启动流程,你不用关心在AMS里面这里跳到那里是干什么,还有ActivityStack以及它的那个SuperXX跳来跳去是在干嘛。

你只需了解:在Context里面,通过AMS的Client ActivityManagerNative发起Binder调用进入system_server进程,在AMS里面绕了一圈(处理Activity栈以及生命周期相关)。

然后通过IApplicationThread这个Binder调用回到App进程的Binder线程池,在线程池里面通过Handler发送Message到App主线程,最终通过ClassLoader加载Activity类,创建对象,回调对应的生命周期,整个过程结束。

千万别一行代码不漏地去查看,只见树木,不见森林,效果不见得好。

刚学习的时候肯定不知道哪些是影响不大的逻辑,所以你需要跟着书籍,博客,让前人带路。
在这里插入图片描述
如果跟着他们的脚步走通了这条路,那你就自己独立走一遍,这时候你肯定会走丢,然后你跟踪、尝试,接着到达终点。

慢慢地,你自然就知道,哪些重要,哪些不重要。刚看系统源码,肯定一头雾水;万事开头难,在你觉得艰深晦涩的时候,硬着头皮也要看,不要放弃。

第一次看可能只是对某些词混了个眼熟,但后面再读就会越来越轻松。

高级篇:

边看源码边思考,形成自己的理解。

学而不思则罔,思而不学则怠。带着问题去阅读源码。

  • 这里是什么意思?

  • 为什么需要这么做?

  • 这样的实现是优雅还是俗套?

  • 有没有更好的实现办法?

  • 如果我来写,我会怎么写?

诸如此类,有了思考就有了自己的理解。

做笔记也是个不错的办法

做笔记的重要性在于,它可以记下你自己在某个阶段自己的理解。

当你更进一步的时候回头再看当初的理解,想想哪里是对的,哪里又有问题,这是一个相当有意思的过程。

我想每一个人在看自己之前写的代码,都会有在某个地方觉得自己是XX的时候。
在这里插入图片描述

但是只要根据你学习过程简单总结一下,你的元认知能力就可以得到提升!

看了上面的介绍,是不是可以开始了呢?最后给大家分享一份字节大佬总结的《Android Framework 开发揭秘》,其中部分章节在某平台收藏达到1000+!今天在这里开源给大家。

第一章 系统启动流程分析

第一节 Android启动概览
第二节 init.rc解析
第三节 Zygote
第四节 面试题
请添加图片描述

第二章 Binder解析

第一节 宏观认识Binder
第二节binder的jni方法注册
第三节binder驱动
第四节 数据结构
第五节 启动service_manager
第六节获取service_manager
第七节 addService流程
第八节 Binder面试题全解析
请添加图片描述

第三章 Handler解析

第一节 源码分析
第二节 难点问题
第三节Handler常问面试题

第四章 AMS 解析

第一节 引言
第二节 Android架构
第三节 通信方式
第四节 系统启动系列
第五节 AMS
第六节 AMS 面试题解析
请添加图片描述

第五章 WMS解析

第一节Activity与Window相关概念
第二节 Android窗口管理服务WindowManagerService计算Activity窗口大小的过程分析
第三节Android窗口管理服务WindowManagerService对窗口的组织方式分析
第四节 Android窗口管理服务WindowManagerService对输入法窗口的管理分析
第五节 Android窗口管理服务WindowManagerService对壁纸窗口的管理分析

第六章PKMS Android10.0 源码解读

第一节 前言 PKMS 是什么东西?
第二节 PKMS 概述信息
第三节 PKMS角色位置
第四节 PKMS 启动过程分析
第五节 APK的扫描
第七节 PMS之权限扫描
第八节 PackageManagerService大综合笔记
请添加图片描述
相信这份资料,一定可以为大家在FrameWork的学习上提供强有力的帮助和支撑,快人一步成为真正的高级Android开发者请添加图片描述

这份完整版的学习资料已经上传CSDN ,朋友们如果需要可以点击下方卡片微信扫描CSDN官方认证二维码[保证100%免费获取]。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值