那两年炼就的Android内功修养

        经过两年的时间,终于完成对Android系统的研究了。Android是一个博大精深的系统,老罗不敢说自己精通了(事实上最讨厌的就是说自己精通神马神马的了,或者说企业说要招聘精通神马神马的人才),但是至少可以说打通了整个Android系统,从最上面的应用层,一直到最下面的Linux内核,炼就的是一种内功修养。这篇文章和大家一起分享这两年研究Android系统的历程,以此感谢大家一直以来的支持和鼓励。

《Android系统源代码情景分析》一书正在进击的程序员网(http://0xcc0xcd.com)中连载,点击进入!

        以下是本文的提纲:

        1. 理念

        2. 里程碑

        3. 看过的书

        4. 研究过的内容

        5. 将来要做的事情

        它们涵盖了老罗这两年一直想要和大家分享的内容。好了,不说废话了,直入主题。

        一. 理念

        这里说的理念是说应该带什么样的心态去研究一个系统。古人说书中自的颜如玉,书中自有黄金屋,我想说代码里也有颜如玉和黄金屋,所以老罗希望大家都能“Read The Fucking Source Code”。再者,对于优秀的开源项目来说,不去读一下它的源代码,简直就是暴殄天物啊。那么,读代码有什么好处呢?太多了,除了可以学到别人的优秀代码、架构之外,最重要的是,我们能从中找到答案,从而可以解决自己项目上的燃眉之急。

        我们在项目中碰到问题的时候,通常第一反应都是到网上去搜索答案。但是有时候有些问题,网络并不能给出满意的答案。这时候就千万不要忘了你所拥有的一个大招——从代码中找答案!当然,从代码中找答案说起来是轻松,但是等到直正去找时,可能就会发现云里雾里,根本不知道那些代码在说什么东东,甚至连自己想要看的源代码文件都不知道在哪里。这就要求平时就要养成读代码的习惯,不要临时抱佛脚。有时候临时抱佛脚是能解决问题,但是千万不能抱着这种侥幸心里,掌握一门技术还是需要踏踏实实地一步一步走。

        胡克其实在牛顿之前,就发现了万有引力定律,并且推导出了正确的公式。但由于数学不好,他只能勉强解释行星绕日的圆周运动,而没有认识到支配天体运行的力量是“万有”的。后来数学狂人牛顿用微积分圆满地解决了胡克的问题,并且把他提出的力学三条基本定律推广到了星系空间,改变了自从亚里士多德以来公认的天地不一的旧观点,被科学界奉为伟大的发现。胡克大怒,指责牛顿剽窃了他的成果。牛顿尖酸刻薄的回敬:是啊,我他妈还真是站在巨人的肩膀上呢!

        我们有理由相信像牛顿、乔布斯之类的狂人,不用站在巨人的肩膀上也能取得瞩目的成就。但是,我们不是牛顿,也不是乔布斯,所以在看代码之前,还是找一些前人总结的资料来看看吧。拿Android系统来说,你在至少得懂点Linux内核基础吧!所以在看Android源代码之前,先找些Linux内核的经典书籍来看看吧,骚年!后面老罗会推荐一些书籍给大家。

        另外,我们知道,现在的互联网产品,讲究的是快速迭代。Android系统自第一个版本发布以来,到现在已经经历了很多版本呢?那么我们应该如何去选择版本来阅读呢?一般来说,就是选择最新的版本来阅读了。不过随着又有新版本的源代码的发布,我们所看的源代码就会变成旧版本。这时候心里就会比较纠结:是应该继续看旧的代码,还是去追新版本的代码呢?就当是看连续剧,一下子跳到前面去,可能就不知道讲什么了。其实版本就算更新得再快,基础的东西也是不会轻易变化的。我们看代码时,要抱着的一个目的就是弄懂它的骨架和脉络。毕竟对于一个系统来说,它是有很多细节的,我们无法在短时间把它们都完全吃透。但是主要我们掌握了它的骨架和脉络,以后无论是要了解它的什么细节,都可以很轻轻地找到相关的源文件,并且可以很容易进入主题。

        坦白说,对于Android系统,很多细节我也不了解。所以有时候你们可以看到,在博客文章后面的评论上,有些同学问的一些比较具体的问题,我是没有回复的。一来是我不懂,二来是我也没有时间去帮这些同学去扒代码来看。这也是在文章一开头,我就说自己没有精通Android系统的原因。但是请相信,主要你熟悉Android系统的代码,并且有出现问题的现场,顺藤摸瓜跟着代码走下去,并且多一点耐心和细心,是可以解决问题的!

        关于Android版本的问题,相信大家都知道我现在的文章都是基于2.3来写的。很多同学都说我out了,现在都4.2了,甚至4.3或者5.0都要出来了,还在看2.3。我想说的是,主要你掌握了它的骨架和脉络,无论版本上怎么变化,原理都是一样的,这就是以不变应万变之道。因此,我就一直坚持研究2.3,这样可以使得前前后后研究的东西更连贯一致,避免分散了自己的精力。如果还有疑问的话,后面我讲到Android的UI架构时,就会简单对比一下4.2和2.3的不同,其实就会发现,基本原理还是一样的!

        说到Android系统的骨架和脉络,也有同学抱怨我的文章里面太多代码细节了,他们希望我可以抽象一下,用高度概括的语言或者图像来勾勒出每一个模块的轮廓。我想说的是,如果你不看代码,不了解细节,即使我能够用概括的语言或者图像来勾勒出这样的轮廓出来,也许这个轮廓只有我才能看得懂。

        我在真正开始看Android系统的源代码之前,也是有这样的想法,希望能有一张图来清楚地告诉我Android系统的轮廓,例如,HAL为什么要将驱动划分成用户空间和内核空间两部分,为什么说Binder是所有IPC机制效率最高的。我确实是从网上得到抽象的资料来解释这两个问题,但是这些资料对我来说,还是太抽象了,以至于我有似懂非懂的感觉,实际上就是不懂!就是因为这样,激发了我要从代码中找答案的念头!现在当我回过头来这些所谓抽象的轮廓时,我就清楚地知道它讲的是什么了。

        所以古人云“天将降大任于斯人也,必先苦其心志,劳其筋骨,饿其体肤”是有道理的,因为只有亲身经历过一些磨难后得到的东西才是真实的!

        好了,关于理念的问题,就完了,这里再做一下总结:

        1. 从代码中找答案——Read The Fucking Source Code。

        2. 以不变应万变——坚持看一个版本的代码直至理清它的骨架和脉络。

        二. 里程碑

        研究Android 2.3期间,主要是经历了以下五个时间点,如图1所示:


图1 研究Android 2.3的里程碑

         从2011年06月21日第一篇博客文章开始,到2013年06月03日结束对Android 2.3的研究,一共是差不多两年的时间,一个从无到有的过程。其中,最痛苦的莫过于是2011年12月下旬到2012年06月12日这6个多月的时间里面,整理了2011年12月下旬前的所有博客文章,形成了《Android系统源代码情景分析》一书,并且最终在2012年10月下旬正式上市。

        总的来说,就是在两年的时间里面,获得了以下的两个产出: 

        1. 《老罗的Android之旅》博客专栏93篇文章,1857224次访问,4156条评论,13440积分,排名154。

        2. 《Android系统源代码情景分析》一书3大篇16章,830页,1570000字。

        以上产出除了能帮助到广大的网友之外,也让自己理清了Android系统的骨架和脉络。这些骨架和脉络接下来再总结。2013年06月03日之后,将何去何从?接下来老罗也会简单说明。

        三. 看过的书 

        在2011年06月21日开始写博客之前,其实已经看过不少的书。在2011年06月21日之后,也一边写博客一边看过不少的书。这个书单很长,下面我主要分类列出一些主要的和经典的。

        语言:

        《深度探索C++对象模型》,对应的英文版是《Inside C+++ Object Model》

        程序编译、链接、加载:

        《链接器和加载器》,对应的英文版是《Linker and Loader》

        《程序员的自我修养:链接、装载和库》

        操作系统:

        《Linux内核设计与实现》,对应的英文版是《Linux Kernel Development》

        《深入理解Linux内核》,对应的英文版是《Understanding the Linux Kernel》

        《深入Linux内核架构》,对应的英文版是《Professional Linux Kernel Architecture》

        《Linux内核源代码情景分析》

         网络:

        《Linux网络体系结构:Linux内核中网络协议的设计与实现》,对应的英文版是《The Linux Netwo

阅读终点,创作起航,您可以撰写心得或摘录文章要点写篇博文。去创作
  • 720
    点赞
  • 1731
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 373
    评论
### 回答1: 好的,这是十个关于 Android Framework 的热点营销广告标题: 1. "让您的 Android 应用飞起:使用我们的框架" 2. "开发高效的 Android 应用:使用我们的框架" 3. "轻松实现复杂的 Android 功能:使用我们的框架" 4. "为您的 Android 应用带来全新体验:使用我们的框架" 5. "让您的 Android 应用脱颖而出:使用我们的框架" 6. "提高您的 Android 应用用户体验:使用我们的框架" 7. "开发出超乎想象的 Android 应用:使用我们的框架" 8. "让您的 Android 应用更加强大:使用我们的框架" 9. "实现您的 Android 应用梦想:使用我们的框架" 10. "让您的 Android 应用更具竞争力:使用我们的框架" ### 回答2: 1. “快速零基础入门,掌握Android Framework,打造你的编程之路!" 2. “最新技术解析!深入Android Framework,解锁无限可能。" 3. “Android Framework专家亲授,学以致用,成为行业热门人才!" 4. “掌握Android Framework,走向成功的职业生涯之路!" 5. “Android Framework全面解析,开启你的编程天赋。" 6. “精英师资团队教授,高效学习Android Framework的绝佳机会!" 7. “高薪职位等着你!学习Android Framework,实现人生逆袭!" 8. “最新的Android Framework技术趋势,助你在行业立于不败之地。" 9. “Android Framework,让你的创新点燃激情,成就辉煌未来。" 10. “实战项目培训,练就精湛技能,成为Android Framework专家!"

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 373
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

罗升阳

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值