刚入行Android系统开发两年,发如今项目维护和需求开发的时候仅仅考虑快速解决,而没有深刻理解其设计思想和思考高效稳定的解决方法,毕竟framework修改直接影响系统的稳定性,任何问题的修改,须要慎重。随着项目的开展和积累,愈加以为须要深刻学习理解framework的设计,下面是网上和相关书籍总结的学习思路,仅仅在此汇总下。html
1、阅读Android源码的术与道:java
一、Android源码的道linux
Android的功夫,在Android以外。要想“理解”而非单纯的“知道”,想“学习”而非单纯的“记诵”。必备基础:信息检索能力、编程语言(C\C++、Java)、计算机系统知识、设计模式、JVM,多线程设计git
二、Android源码的术编程
针对每个模块自己的职责,询问更细节的实现,永远记住,先有的问题,以后才有的代码。代码实现是新鲜的,可是有了以前的铺垫和对问题的预期,它们的出现才是可理解的。设计模式
总结:先理解模块对应的要解决的“问题”是什么,再去给问题找解决方案的思路去理解源码;多线程
理解源码的功夫不止在Android自己,也要提升Android以外的姿式水平。架构
2、Framework需求开发与维护注意点app
一、需求开发框架
1) 相关功能的现有模块须要很是熟悉,不然会有很是大的风险
2 )所写代码尽可能与已有相似的代码保持风格一致
3 )必要的注释,写代码的时候认为代码的意图貌似是理所固然,可是当别人看你的代码或者过一段时间你本身查阅代码的时候,颇有可能因为代码量过大,在代码的海洋中未必容易理解某一段代码的意图
4 )找比本身能力强的,经验较为丰富的同事review代码。系统层毕竟是上层应用的基础,必须保证其极高的稳定性,不像app即便有一些bug能够快速的迭代和发版推送。
二、维护
1 )优秀的代码设计。Android的代码加工的顺序大体是Google源码->芯片厂商的修改->OEM厂商的修改。这些代码里积累了大量世界级优秀的代码设计方式,架构思想,这样我们对代码的学习和认识的起步就是不低的,因此阅读大量的代码事后,咱们再尝试写代码的时候,通常也不会写出低质量的代码
2 )分析定位的技巧。一个经验丰富的工程师的价值,主要会体如今遇到问题时,可以分析定位解决问题的能力和效率,而不多会据说我这有个20年经验的工程师,他的价值在于别人一个小时能写成的代码他在一分钟就写出来了。
刚踏入framework层维护开发的时候所须要注意和经历的阶段:
第一阶段:熟悉各类基本工具的使用,好比linux,git,sourceinsight,svn等等,固然基本的编程知识须要有,若是如java之类的使用都还不是很熟,建议先回家读书
第二阶段:对所须要维护模块的代码逐渐熟悉起来,能够经过定位问题来梳理代码流程,固然此时主要是经过log定位
第三阶段:这个阶段每每是一个瓶颈,由于能够直接经过Log定位的问题占大多数,这时候不少人就会自我感受良好,也逐渐造成了惰性再也不追求更多的知识,而且还会认为本身已经熟悉了不少的模块。好比你按照这种方式工做了五年,我保证你再出去也找不到工做,由于你并无五年的工做经验,只是使用了一个月能达到的经验工做了五年!!!看代码,梳理流程,这是最基本的工做模式,这个时候咱们追求更“牛逼”的分析手段,好比使用性能分析工具systrace和traceview,好比Google提供的功耗分析工具buttery historal2.0,好比ddms里的内存分析工具mat和层级观察器工具(可以直接对应到UI上)
第四阶段:追求性能稳定性的问题解决
第五阶段:Android总体架构,对方案设计的优劣有本身的认识,而且能提出更好的改进方案
3、阅读源码时候的注意点
开始看的时候要忽略细节,跟着流程走。工做原理通常均可以文字描述,如何实现的,跟着函数调用一步一步套,流程通了,细节就不在话下了。
看不懂的多读、不重要的少读、边读边思考、不是全部的都须要思考、记得作笔记。
一、高度抽象,构建框架
二、重要函数,深究细节
三、善用工具,及时总结
参考:https://www.zhihu.com/question/46486807
https://www.cnblogs.com/hackerkevin/p/5616913.html