Android源码阅读与理解(一):开篇

作为一个自认为苦逼的程序员,有一阵子曾考虑逃离程序世界,做一个文艺青年。你看,出去旅旅游、读读书、摄个影,没事发个呆,生活该是多么的惬意。反观程序员,每天对着冰冷的机器,有事无事还要加个班。正如一个段子所写:

你苦战通宵游戏时,布里斯班的灯鱼已划过珊瑚丛;

你赶场招聘会时,蒙巴萨的小蟹刚溜出渔夫的掌心;

你写程序代码时,布拉格的电车正摇着铃晃过金色夕阳;

你挤进汹涌的食堂时,哥本哈根的街头画家完成了第99幅立体画。

有一些穿高跟鞋走不到的路,有一些喷着香水闻不到的空气,有一些在楼宇里永远碰遇不到的人。

但是,看村上春书的《当我谈跑步时我谈些什么》如同嚼蜡,看侯孝贤、王家卫的电影直睡觉之后,我发现其实身上缺少文艺细胞,无事发呆更是让我难受。其实仔细想想,写代码时虽然苦逼,但是当纠出一个苦苦追寻了半个月的bug的时刻,内心还是感觉很爽的。不读村上春树,读读东野圭吾也挺开心的。每天充实的感觉比无所事事更舒服。所以,我还是需要做回自己,做自己喜欢、自己擅长的事情。读到池建强的《是旅行还是长跑》中这样一段话:

只要你没有一个强悍的爹,就要先忘掉那些小鱼小蟹,还有珊瑚丛,那些暂时还不属于你,踏踏实实地练习和提升才是王道,为自己规划一个十年的长跑,可以时不时停下来休息一下,低下头汗水就落入尘埃,抬起头就看看夕阳西下,你抹去疲惫,然后继续前行。十年看似很长,但实在很短,十年以后你回头看看,你究竟是成了人中龙凤,还是小鱼小虾,是你认知了世界,还是世界抛弃了你。

瞬间引起了共鸣。

闲话扯远了,作为一个国产OS的从业者,一直都从Android系统吸(chao)收(xi)营(yuan)养(ma)。其实我们更想借鉴ios系统,可惜人家不开源,光看表面是做不了神似的。在开发的过程中,也碰到不少问题,零零碎碎读过一些Android的源码,但基本上都是现学现用,缺乏整体的理解。既然做不了文艺青年,那我就来挑战一下Android系统源码吧。当然现在Android源码分析的书和文章也比较多,比如我手头就有邓凡平的《深入理解Android》、杨云君的《Android的设计与实现》和罗升阳的《Android系统源代码情景分析》,网上的文章更是不计其数。但别人分析了也是别人的,买了他们的书,但买不到他们的知识。还是需要亲自深入代码分析,知识才能变成我的。

在后续的学习中,我将结合自身的工作,分析我所感兴趣的部分。Android系统是一个相当庞大的系统,想要深入掌握每个细节,那是一个不可能完成的任务。所以我会略去驱动、linux内核、media等部分,初步计划阅读的部分如下:

  1. Android build系统
  2. Android系统启动
  3. Binder原理与实现
  4. Surface系统
  5. Dalvik虚拟机
  6. chromium Webview

为了让自己能坚持下去,要求在阅读过程中记笔记,每周至少写一篇博客,梳理一下阅读心得。希望我能够坚持下去并有所得,加油!

[注] 本文引用的文字出自池建强《MacTalk人生元编程》P.194。

Comments