写于2015年12月3日
不同的android版本,不同的framework实现,framework有近2亿行代码,版本越高,代码行数越大,这个过程是很痛苦的。所以不要去学习和阅读framework的源代码。
阅读它的源代码,还不如去学英语,多看应用层的API,多看理财的书籍。
如果不做framework开发,做app开发的话,看了framework的代码对app开发的帮助是很少的,公司不会因为这个而给你加工资,还不如去学习英语,金融等给自己加薪,和用钱赚钱。
------------
1、首先觉得你的题目和问题描述不太搭边。你所说的复杂功能效果实际上几乎都是应用层的,和framework不搭边。因为如果只是做应用开发,那就完全依赖现成的基础组件和接口,最多自定义一下组件和布局。你在网上找到的很流畅很美观的现成组件都是别人自定义之后封装的。别人能做,实际上你应该也能做。多看看别人的demo,试着对你不满意的地方做点改进,总会有收获。一旦觉得有点心得,记录下来或者把你封装的东西拿出来让大家用用,一起讨论讨论,必然收获更多。
2、关于framework,更多是做的应用层之下的系统层面的东西。比如电源管理、消息队列、包管理等等,还包括对硬件的支持及系统提供给上层的硬件功能调用接口。framework的学习必然离不开不断编译rom和刷机。这就要求有耐心有时间有兴趣。而且由于framework层多数模块都是以JNI方式被调用的,因此你需要有比较扎实的C语言基础,之少能看懂程序结构。除此之外,对你想要详细研读的模块在应用层的应用需要有必要的理解。我刚开始看源码的时候是从电源管理模块开始看的,就是因为当时对android系统自带的电源提醒方式以及电量通知不太满意,想重新定义更多层级的提醒。刚开始也是一头雾水,但还是硬着头皮一点点啃。这个过程中,为了防止忘记之前看过什么,所以又不断对看过的源码做注释并做阅读笔记。大概两三个月,虽然了解的也比较浅显,但是我的目的达到了。源码之路漫漫,看个三五年都不一定敢说能够整体吃透。虽如此,但只要有钻研的方向和基本的能力,相信工作中遇到的framework层的改动应当还是能够负担得住的。
3、如果不想深入framework,其实你也可以做android系统应用的开发。这一步几乎和上层应用开发差不多,不过可以调用的库更丰富,权限更高罢了。这个可以自己研究,参照android系统出场自带的应用。
说了这些。希望能够有点帮助。