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类,创建对象,回调对应的生命周期,整个过程结束。

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

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

慢慢地,你自然就知道,哪些重要,哪些不重要。刚开始看系统源码,肯定一头雾水;万事开头难,在你觉得艰深晦涩的时候,硬着头皮也要看,不要放弃。第一次看可能只是对某些词混了个眼熟,但后面再读就会越来越轻松。

高级篇:

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

学而不思则罔,思而不学则怠。带着问题去阅读源码,这里是什么意思?为什么需要这么做?这样的实现是优雅还是俗套?有没有更好地实现办法?如果我来写,我会怎么写?诸如此类,有了思考就有了自己的理解。

做笔记也是个不错的办法。

做笔记的重要性在于,它可以记下你自己在某个阶段自己的理解,当你更进一步的时候回头再看当初的理解,想想哪里是对的,哪里又有问题,这是一个相当有意思的过程。

我想每一个人在看自己之前写的代码,都会有在某个地方觉得自己是沙比的时候。根据你学习过程简单总结一下,这样你的元认知能力就得到了提升。

如何学习Framework

关于如何学习Android Framework开发知识,可以参考这份由字节大佬总结的《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大综合笔记

小伙伴们如果有需要这份《Android Framework源码开发揭秘》,点击下方卡片即可【免费领取】,承诺100%免费

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值