好久没来这里了,这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学习回忆相关推荐

  1. Android FrameWork学习(二)Android系统源码调试

    点击打开链接 通过上一篇 Android FrameWork学习(一)Android 7.0系统源码下载\编译 我们了解了如何进行系统源码的下载和编译工作. 为了更进一步地学习跟研究 Android ...

  2. 修改android framework学习

    2019独角兽企业重金招聘Python工程师标准>>> 1:android平台编译自己编写的framework级service server实录 http://blog.sina.c ...

  3. Android Framework学习(八)之Handler消息机制(Native层)解析

    在深入解析Android中Handler消息机制一文中,我们学习了Handler消息机制的java层代码,这次我们来学习Handler消息机制的native层代码. 在Java层的消息处理机制中,Me ...

  4. Android Framework学习总结

    经过一段时间的学习,对于Android Framework大部分有一定的了解,现在将之前的学习进行总结并分类. 1.Android系统启动相关 Android系统SystemServer启动(上) A ...

  5. Android Framework学习的基础概论

    本文总结内容旨在通过总结.学习,了解.熟悉framework源码学习过程中,我们会经常遇到的一些关键系统服务类.概念.源码框架太大,我们需要找一个切入点来学习,我们知道,不管是win pc程序.ios ...

  6. Android FrameWork 学习之Android 系统源码调试

    这是很久以前访问掘金的时候 无意间看到的一个关于Android的文章,作者更细心,分阶段的将学习步骤记录在自己博客中,我觉得很有用,想作为分享同时也是留下自己知识的一些欠缺收藏起来,今后做项目的时候会 ...

  7. Android Framework学习目录

    Android 第一个用户进程:Init进程(概述) Zygote进程以及其初始化 Zygote 启动应用程序 Android SystemServer 进程 关于 PackageManagerSer ...

  8. Android framework学习

    一:概述 众所周知,Android是一个基于Linux实现的操作系统.但对于Linux内核来说,Android也仅仅只是一个运行在内核之上的应用程序,与其他运行在内核之上的应用程序没有任何区别.所以A ...

  9. Android Framework 学习

    Android Framework 1. 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework面存一些资料待有空查看. 2.Android系统的层次如下: 3.项目目录 ...

最新文章

  1. 关于float的说明
  2. 重构-改善既有代码的设计读书笔记
  3. b站python教程哪个好_推荐B站上的Python学习资源
  4. 2019牛客暑期多校训练营(第八场)G Gemstones(模拟)
  5. Service IP 原理 - 每天5分钟玩转 Docker 容器技术(137)
  6. 发布dotNetCore程序到Kubernetes
  7. android动态设置src,Android 代码里设置ImageView的src和background
  8. 电脑系统重装后没有声音怎么办​
  9. 做网络需要掌握的56句话
  10. 设置php缓存失效,PHP使用Memcache时模拟命名空间及缓存失效问题的解决
  11. 2018-2019-2 20165222《网络对抗技术》Exp9 Web安全基础
  12. mybatis update返回值的意义
  13. 高通模式9008模式linux,学会小米9008高通模式_原来刷机如此简单
  14. 常见的概率论问题清单及其答案
  15. BCNF范式、第四范式和第五范式
  16. 移动端 浏览器唤起【微信分享】
  17. IT 必备电脑快捷键
  18. 如何在桌面上显示我的计算机,Win10如何将我的电脑(此电脑)显示到桌面上?
  19. 理解Nand Flash原理图
  20. 为什么中国公司要让员工用英文名或者花名?

热门文章

  1. 改变chart坐标轴的起始值
  2. 史上最全的python的web开发和网络编程【附属详细解释+案例】
  3. python连接mysql的几种方式_Python连接MySQL数据库的多种方式
  4. PBI培训(1):几种主流BI工具的对比PBI中的概念定义
  5. 如何在Mac电脑上删除APFS分区?
  6. oracle分区维护操作不能与其他,ORA-14048:分区维护操作不能与其它操作组合
  7. 淘宝天猫背后,有一个你不知道的神秘组织
  8. php 微信 语音,PHP语言微信开发:微信录音临时转永久存储
  9. 浅谈 Node.js 热更新
  10. 苹果Mac电脑清理垃圾软件卸载工具CleanMyMac X