android framework学习回忆

     好久没来这里了,这2天开发板不够用,所以暂时闲下来学习东西。顺便回忆一下学到的会用的东西。

     刚踏入Android Framework大门,是从电源管理开始的。记得当时拼命的google搜索相关资料,因为之前为了入门framework一直在做App练手,当走上这条路后,第一感觉就是步履维艰,拼了命的搜资料。当时关于电源管理搜到最多的就是一篇讲PowerManagerService的文章,还有就是Android电源管理调研什么的文章也是讲的这个文件。于是对着这个powermanagerservice文件研究了半个多月,其他的都没怎么理会。直到有一天老大叫我改什么Android系统低电提醒的设置,我才发现根本不是这个文件,至今我还是觉得当时是多么的幼稚,汗。

    时至今日,虽说还是一个菜鸟,但对framework部分的心得体会还是有的。首先为什么framework入门很艰难呢,并不是说你不会,大部分是因为你找不到要在哪里改,因为android的源码多达2.5GB,里面的代码有几亿行,如果你不明确你要的文件在哪里,你就会像只无头苍蝇在这几亿行代码里面乱转,直至五脏六腑都憋出血来。所以首先对源码要有充分的了解。至少framework/base目录下的每一个文件有什么作用要了然于胸。然后当你接到任务的时候,就可以快速定位,提高效率。当然新手一般都是从google开始的,但毕竟有时候网上的资料还是有限的。所以最好的方法就是从base下的文件一个一个看,不懂的在把这个文件名google一下,多少还是会有收获的。此为framework的入门境界,在这个阶段你至少可以帮公司项目改改bug,打打杂。新手一般都是这样开始的。一般这个阶段对相关的模块框架并不需要很深刻的理解。

    以上说的是“改”这个阶段。直至有一天,老大给你一个任务,要你加一个东西。这个时候,你才会发现,并不是改改源码就可以做,而是需要你“立新”。那么这个过程你要懂的东西就要更多了。还记得老大第一次给我的任务,做一个类似statusbar一样的导航栏,上面有back、home、menu、search,四个触控按键,与statusbar分立屏幕两边。当时第一反应肯定就是google,搜到一些资料。其中有一些想法也差点让我走了弯路,回想起来还是有点恶心。有一个idea是,手工将屏幕的下方得一些区域分割出来,做成独立的按键区域,然后通过触控事件转换到按键事件来实现这个按键。里面有许多讲要在驱动怎么改改的之类的,当时研究了一阵,感觉不对,或者感觉这样完全超出我的能力了,于是知难而退。偶然间乱逛,看到有些人在statusbar上面加back、home等按键的文章,于是灵感来了,何不模仿statubar做一个类似山寨版statusbar的导航栏呢,于是又通习了statusbar的启动流程与具体的设计框架,然后山寨出一个放在屏幕底部,把背景改一下,然后加上4个按钮,ok 完事。当然还必须知晓的还有,怎样将你增加的文件成功编译进系统。这又需要你对Android.mk文件了解。那么,此时你在famework的路已经走到“创”的境界。

    依然记得,有一天老大叫我和另一个哥们去问话,问我们为什么不加班。当时我正在全力的赶毕业设计和毕业论文,肯定不可能加班啦。那位哥们说的就有意思极了,说感觉还是菜鸟没做什么大的贡献,不敢填加班单。汗,我很佩服这位小哥的如履薄冰的精神。老大对我们两的理由都是置之一笑。然后就是大拉家常,谈谈他当年的英雄事迹,什么当年带领台湾ACM团队勇夺世界XX大赛一等奖,什么在他手上做过的cpu光架构就有7、8种啊,云云。。当然这些我们只有羡慕与憧憬的份。其中令我最深刻的就是他讲的程序员发展的几个境界的问题:1、能看懂代码,这个是最基本的,但是不能做事,不能为公司创造利益;2、会改bug,这个也是入门境界,但可以帮团队做些小事,一般新手学习几个月即可进入该境界 ;3、创新,能创造设计新东西,一般有天赋的在第二个境界上做上几个月就可以入此道 ;4、当你接触了很多系统架构后,能设计出自己的架构,一般到这个境界你就可以去Android总公司帮忙改进系统了 ;5、框架神马的,代码什么的都是浮云,在他们眼中就是一串二进制0101010101010110.。哈哈,感觉很有意思,由于时间过去半年了,基本意思是记到了。

     今天就写到这了,算是开场白吧。以后有空会陆续放出一些技术文章

你可能感兴趣的:(android framework学习回忆)