Framework到底该怎么学习?

分享
计算机软件开发 2024-9-6 07:36:11 5 0 来自 中国
作者:qing的世界
信赖各人在找工作的时间,肯定或多或少都被口试官问到过安卓的八股文。比如ActivityManagerService(简称AMS),大概WindowManagerService(WMS) 怎么实现的啊,有些什么细节必要留意啊,View被参加到ViewRoot的流程啊等等。通常看到这些文章,教人怎么预备安卓framework口试,我都以为很痛心。。。
1.png 由于在我看来,对于应用开辟来说,口试考这些纯粹就是扯淡,很有大概口试官本身也只是在网上看看文章,然后照本宣科的再去问口试者。这种征象实在说白了就是卷。由于口试的内容已经在app层发掘完了,再想进步口试门槛就只能往深了挖。
安卓的体系framework的代码就成了最好的替罪羔羊,由于framework的内容富足多。多到什么程度呢,你下载一套新的AOSP代码大概都要一个小时,全量编译就更不用说了,我本身每次开新的Repo都非常开心,由于我可以问心无愧的边看视频边等代码下载了。以是在代码量云云巨大的情况下,口试官想出什么题目都可以,只要你口试者偶尔间,我总可以问倒你。
但是这些代码都是好代码么?大概说安卓framework内里的全部代码都值得口试者学习么?
答案是NO。这也是一个非常显着的答案。
安卓的framework颠末快十二年的迭代,很多地方实在是又臭又长。比如污名昭著的View class:
https://android.googlesource.com/platform/frameworks/base/+/a175a5b/core/java/android/view/View.java#15354
已经演酿成一个一万五千行的类了。。。。。
3.jpg 很多地方不是不想优化,而是没人敢动,搞出题目了咋办,你负责?
一不鉴戒扯远了。。。回到口试的题目。
那么对于有些口试官考到的八股文。那些考点,大概考点指向的代码同样也不是圣经。他们很有大概只是谷歌的安卓团队在当初界说的一些规则而已,在谷歌内里做安卓framework,大概说有权限能改安卓framework代码的人不可胜数,岂非每个人都是天才,可以一点错误都不犯?显然不大概。
那岂非看framework源码就一文不值了?那也肯定不是,条件是我们在看源代码的时间可以大概做到取其英华去其糟粕。
有的读者肯定会说我站着语言不腰疼,话都可以说的好听,具体怎么操纵,我怎么知道什么是英华什么是糟粕?
在说具体怎么操纵之前,我想先举个反例。
源码分析?

很多初学者一上来就雄心勃勃,以为要全面学习安卓体系,起头就开始读源码,大概看源码分析:
如许做的结果通常就是在起跑线就被劝退了。缘故起因很简朴,当你连framework某个类具体是干什么都不知道的情况下,就去读源代码,你是不会有动力的。这和很多门生刚刚结业,代码还没写多少行就想开始看开源项目,学习源代码一样,根本上可以说没故意义。
很多实行阅读安卓源代码的朋侪,乃至连刷写装备都没试过,这怎么大概可以学到framework的英华呢。说白了,想不动手操纵就学习源码,也是一种偷懒的运动,以为本身学习很积极,实在都在做无勤奋。
刷机!

学习源码的第一步,实在是刷装备。跟着官方教程,从第一步下载AOSP源代码开始:
1、https://source.android.com/setup/develop
再到用AOSP源代码build操纵体系:
2、 https://source.android.com/setup/build
末了把build好的体系image刷得手机上:
3、https://source.android.com/setup/build/running
学代码?先修bug

末了,就是动手操纵了。
落实到具体的操纵就是,修bug!!!
没错,学习任何巨大的框架,一个人都没办法从面到点的学习,都是从点到面,从下到上。由于你不大概一开始就对全局都有认识。
以是修bug就成了一个最好的切入点。安卓的AOSP有数不尽的bug,天天都会有一大堆进入到bug tracker内里。Framework的bug tracker:
https://issuetracker.google.com/issues?q=componentid:192705+
大到体系fatal error,小到解释没加,都在内里。各人不要以为到场进去很难,我随手一看,就找到一个简直不能再弱智的bug:
https://issuetracker.google.com/issues/196574813
同样的,这个办理它的code review,就一行改动:
https://android-review.googlesource.com/c/platform/frameworks/base/+/1799607
5.png 是不是顿时以为本身也能到场到安卓的开源举措内里了?
只要有毅力,哪怕是本身办理不了,你都可以跟踪一个你感爱好的bug,看看别人是怎么办理的,看看别人是怎么复现这个bug的,对本身也是有很大资助的。至少,如许的方式会比本身苦读源码要强。源码分析不是不可以看,而是要用对的方式去看,比如把源码分析的博文当成一个字典,有碰到相干的bug的时间翻一番。
末了

末了的末了!我也不是说让各人以后口试都禁绝备了,而是提供别的一个平常可以学习的思绪,两手抓岂非不是更稳
正所谓知其然知其以是然,底层的实现巨大而又复杂,完全不专心去读源码很难将知识点深入明白。
这里给各人保举一套学习蹊径,并附有相干《Android Framework焦点知识笔记》,信赖可以给各人提供一些资助,有必要的朋侪们也可以下载下来随时查漏补缺。
假如必要这份《Android Framework焦点知识笔记》,可以随手帮我点赞批评一下,有必要的朋侪可以直接前去公号:Android开辟之家免费领取
Handler


  • 宏观理论分析与Message源码分析
  • MessageQueue的源码分析
  • Looper的源码分析
  • handler的源码分析
  • ……
6.png Binder


  • 学习Binder前必须要相识的知识点
  • ServiceManager中的Binder机制
  • 体系服务的注册过程
  • ServiceManager的启动过程
  • 体系服务的获取过程
  • Java Binder的初始化
  • Java Binder中体系服务的注册过程
  • ……
Zygote


  • Android体系的启动过程及Zygote的启动过程
  • 应用进程的启动过程
  • ……
假如必要这份《Android Framework焦点知识笔记》,可以随手帮我点赞批评一下,有必要的朋侪可以直接前去公号:Android开辟之家免费领取
AMS


  • Activity生命周期管理
  • onActivityResult实行过程
  • AMS中Activity栈管理详解
  • ……
PMS


  • PMS的启动过程和实行流程
  • APK的安装和卸载源码分析
  • PMS中intent-filter的匹配架构
  • ……
10.png WMS


  • WMS的诞生
  • WMS的紧张成员和Window的添加过程
  • Window的删除过程
  • ……
假如必要这份《Android Framework焦点知识笔记》,可以随手帮我点赞批评一下,有必要的朋侪可以直接前去公号:Android开辟之家免费领取
假如必要这份《Android Framework焦点知识笔记》,可以随手帮我点赞批评一下,有必要的朋侪可以直接前去公号:Android开辟之家免费领取
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-19 14:36, Processed in 0.173858 second(s), 35 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表