某学员framework的闭关学习2个月的过程分享

某学员2个月framework学习经验分享:

大家好!非常荣幸收到马哥的邀请,来给大家分享分享我的framework学习和成长经验。

先说一下学习framework背景

主要有以下几个原因
1、裁员小道消息传出,心里开始焦虑找新工作。因为在公司做app开发的,也不知道是受大环境影响还是老板觉得我们软件部分人力过多,营收不达标等因素。反正最后就是这些开发小兵提前1个月听到了要裁员消息。

2、心里也知道市场app工作难找,不想一直卷app开发,想换赛道。但是说实话自己这么多年一直也只会android app这块的开发,换赛道也只能在android这块领域换。在招聘app上搜android相关的开发,发现招聘比较多的是framework开发,系统开发,系统应用launcher,systemui等开发。本来想系统framework开发这块自己一直也想学但是实际自己又不会,那系统应用launcher,systemui等岗位,但是发现招聘要求居然也要懂framework相关知识。所以心里其实这个时候已经决定要花时间认真学framework。

3、framework自学探索过程,其实framework这块原来做app时候,多少也自学过一点点源码,但说实话framework学习这块其实一直没有一个好的方法,经常就是按照某个方法去分析源码,源码分析过程经常也是很容易被卡住,所以分析了半天也没分析到啥。也只能借助百度搜索别人blog看,但是blog看了半天感觉自己也会了,也可以独立分析源码了,实际上自己还是不会。大概总结我原来的自学framework方法就是:完全没有重点,随意抓住个方法就是分析源码,源码分析难度大,靠看别人blog,blog看了后暂时记住了,过了两天发现自己啥也忘记了,framework部分学习依旧是啥也不会,心里也完全没有自信说自己学了framework。

大概基于上面3点原因吧,我这边就去b站搜framework相关入门课程,发现了马哥的framework课程讲的还挺好的,也和马哥本人聊了一下。
其实我当时都不敢相信是马哥本人和我聊,给我介绍课程,直到他发了语音过来我发现确实和课程视频是一个人,整体发现马哥是个技术派的实在人。马哥给我指出我之前自学习framework为啥一直不上路原因等,也确实说到了心坎上,然后就果断报了他的基础和进阶专题,马哥也一直强调让我一定要准备电脑环境跟着课程实战学习。
这些学习前的环境和课程都有了,剩下就是开始正式努力学习啦。

在这里插入图片描述

在这里插入图片描述

学习过程:

基础部分学习经验

整个学习过程我也是按照马哥课程上到下顺序进行学习的,刚开始学习是基础部分
在这里插入图片描述
这块学习时候感受如下:
1、入门课程学习比较有意思,感觉这块难度虽然不大,但是学习到了源码编译,而且可以运行起来自己修改的系统源码,这个我感觉最重要是这种实际带来的成就感就极大鼓励了我,产生对framework学习的浓厚兴趣,framework学习不再是只分析源码那么无趣。而且也学习到framework框架认知,及一些调试手段,还有一些简单实战,广告页跳过,这里还得说一下自己实战广告页时候发现一直报错App is not installed,搞不定后来问马哥才知道原来是需要把demo的Activity进行export为true才可以,马哥也和我解释了原因。入门这块对我来说最重要是可以动手修改framework代码而且也可以实战看到自己修改,个人觉得这个对于我对framework学习产生极大兴趣。

2、其实战和跨进程专题,这块主要就是有源码分析和实战项目,实战课程就是把zygote到Fallbackhome,launcher整个流程主线讲解还有对bootanimation也进行深入的实战,这块其实对于了解framework也整体流程运行会有一个比较明显的进步。跨进程课程这块主要学习了socket和binder,这两个其实使用和实战部分都还好。比较难的就是binder驱动部分源码分析,这块花了比较多时间,不过好一点是这块驱动源码AI搜索都可以找到比较好答案。

3、input课程个人感觉算比较重要的,比较难学的应该是触摸多指部分的理解,其他的部分一般都是流程源码分析和实战部分,在后面找工作面试时候这块input部分其实加分挺多。

总体上基础部分学完的收获说实话非常大,基本上学完感觉对于framework的整体认知上升一个档次,而且也感觉自己可以承当一些framework模块的工作了,比如input相关的问题和需求就知道如何一步步分析。
学完基础专题差不多花了1个多月,每天早早下班了(裁员小道消息出来后,组里面大家都不加班)回到家8点就开始学到11点多,说实话学习收获确实和自己的付出是成正比的。

进阶部分学习:

进阶部分听马哥建议是要重点拿下的,说最重要是wms/ams这个专题
在这里插入图片描述
因为学习进阶专题期间已经正式开始裁员,所以时间比较紧张,为了加快速度所以这块和马哥沟通就学了上面3个打钩部分。
wms/ams这个专题学习经验,其实刚开始学习wms/ams时候发现难度还是比较大一些,因为上来是层级结构树,还需要手动绘制这个树,而且发现分析对应代码难度还比较大(现在经验看这块不需要过多纠结),特别是树的构建部分。不过最后发现这个层级结构树要是懂了,也可以画出来后,学习wms后面的东西真舒服,他就像是一个重要理论基础,其他的所有窗口相关的操作都是在这个层级结构树上挂新的节点,换节点,去除节点等操作,还有就是窗口结构树要和SurfaceFlinger结构树要进行结合学习,也理解他们区分等。所以这块内容个人认为最重要是理解层级结构树包括wms和sf的。
再接下来就是学习窗口添加,Activity启动等这些其实都是源码流程性东西难度不大在有了上面结构树基础后。
wms再接下来学习到最重要壁纸闪黑问题的分析和解决,这块内容确实非常非常主要,说实话如何分析闪黑问题这个在我以前来说真的都不敢想,现在跟马哥学习了使用Winscope分析出原因,源码中寻找对应的问题点,打日志堆栈等进行进一步定位,然后制订修改方案进行修改验证问题。整个流程属于非常高效解决这类闪黑问题,这个在后续我面试过程中也得到各个面试官的肯定和加分。
在这里插入图片描述

学完wms后,再开始车载多屏互动。这个课程听马哥建议是一定要学,说方便我去面试一些车载厂商进行加分。后来学了这课程后发现确实难得的实战项目干货,刚好把wms课程中学习的wms,sf层级结构树,Winscope分析闪黑等疑难问题,input专题等相关知识进行了综合实战,我更觉得这个是马哥故意给我们添加的实战项目作业题目。

不过感觉学习这个难度也不小,马哥课程虽然手把手教我们敲的代码,但是自己跟着敲时候还是会有一些想不到的问题,自己却查找问题,修改问题的过程就是一个真实的公司里面需求实现过程。所以这里给大家建议就是一定要自己也动手实现这个车载多屏互动的项目,有问题就是看视频,看马哥给的代码等,最后自己亲手做出认真每个环节。

最后一个sf/perfetto课程,因为时间也比较紧张,主要就是针对可能面试时候会问一些性能优化的问题,所以这里针对Perfetto和SurfaceFlinger部分也进行学习,这块主要针对Perfetto部分的使用技巧,如何看Perfetto内容,还有结合学的sf中vsync等知识对于单帧的绘制和性能瓶颈的寻找有了一个比较好的思路方向。当然因为app性能优化本身以前公司做过,不过那时候没有使用Perfetto,现在会了Perfetto后那么聊app性能时候其实就自然得多。还有也对sf中涉及的一些录屏截图绘制logo,gpu绘制,hwc绘制等也有一定了解。

上面就是进阶部分课程学习的分享,这块整体其实耗时间有20天左右,不过这个20天是全职学习,基本上平均投入学习时间在每天7-8小时。

找工作面试

因为离失业也就是几天了,心里其实也比较着急。学完上面课程后就开始准备简历面试了,这里简历的修改整改部分全靠马哥的细心指导。
投递的公司一般挑framework相关的进行投递,然后约时间进行面试,在面试前我其实心里也没底,马哥让我多去看看他以前举办的模拟面试等一些,还不行让我参加他的模拟面试,在看了几个马哥模拟面试后及把马哥分享群里一些面试题答案进行整理后,发现其实题目也不那么难。
面试过程其实也挺快的,基本上技术二面后就是hr聊薪水部分,这块我其实也没希望自己在app基础上要涨薪多少,因为毕竟自己转方向,要求就是不比目前低就可以。

整体面试官对我整个技术还是比较满意,当然也有回答不出来的一些题目,不过也不太影响我的整体面试结果,一共面试了2个公司,都给了offer,两个offer薪水相差1-2k,最后还是准备去车载的一个外包先干一两年framework,同时再把马哥后续课程多学习巩固后跳槽更好的。

最后感谢马哥这2个月细心知道我学习framework,也为自己这两个月framework技术进步和努力付出感到惊讶,也充分理解一些事还是要有专门有经验人带,这样我们才可以事半功倍,飞速成长。

学习相关介绍链接:
https://mp.weixin.qq.com/s/Qv8zjgQ0CkalKmvi8tMGaw
更多framework实战开发干货,请关注下面“千里马学框架”

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值