Compile Android Source on Mac OS X

Android

在我看来,学习 Android 的一个有效途径就是阅读它的源代码,尽管市面上有各种各样的宝典、秘籍,但能从根源上把问题讲得透透彻彻的少之又少[推荐1]。我曾经在2010年编译并走读过它部分代码,但相比它浩瀚的代码,做的功课只是九牛一毛。

这段时间,我重新拾起丢掉的任务,计划在 MacBook Pro 走读代码,为了配合验证观点,很有必要对源代码加些注释,修改些代码。所有的这一切首先要做到将原生的 Android 源码编译通过。

[ Read More » ]

图解ListView的刷新过程

Android

ListView是 Android 应用开发中,常见的视图类组件,其普及程度差不多与 HTML 中的Table一样。此类组件的本质是将数据,也就是Model,表现出现,但其本身不负责维护数据,属于“来料加工”。

那么ListView又是怎么获得数据渠道呢?答案就是Adapter,其顾名思义就是“适配器”。就像笔记本加入市电,需要用电源适配器一样,原始数据不大可能直接显示给用户,就需要一个数据适配器,转换成视图所支持的样子。

到这里,数据已经可以展现给用户了,但是还面临一个问题,即如果数据更新了,视图能不能将新数据替换旧数据?在 Android 中,掌控数据、充当 Controller 角色的是Activity,它应该是知道数据有变化的,同时,它还持有 ViewAdapter

[ Read More » ]

读《新概念51单片C语言教程》之二

新概念51单片C语言教程

数码管工作是靠点亮内部的发光二极管,一个数码管通常有10个引脚,除了7个小段和1个小数点外,还有1个共同端,剩余1个引脚没有用,即第3引脚和第8引脚是连在一起的。TX-1C实验板上使用的数码管都是共阴极。

多个数码管一体时,公共端是独立的,即“位选”是可独立控制的,“段选”则是连接在一起的。因此,这就需要两个锁存器进行分别控制。TX-1C 的位选通是 P2^7,段选通是 P2^6。在同一时刻,位选通的所有数码管显示的数字都是一样的,这种显示方式称为静态显示。

[ Read More » ]

读《新概念51单片C语言教程》之一

新概念51单片C语言教程

从大学到现在,我对计算机的认识一直很浮浅,特别是使用 Java 这些年,虚拟机确实带来了移植的便利,但是却屏蔽了底层,割断了我与底层硬件的联系。当我决定展开计算机组成之旅的时候,我打定主意要从简单入手,但很快意识到自己面临一个问题,如何寻找一个最简单的计算机?64位普及的年代,即便在垃圾堆里,也难寻得386的踪迹。

认识 MCS51 单片机是无心插柳柳成荫,2011年我从爱果联盟了解到了 WiFi-Robot 项目,于是花了一笔不菲的钱来组装这个大玩具。但是,很快我觉得无趣了,凡具备了中学生的阅读理解能力,都能组装、掌控它。作为一个常常自命不凡的程序员,我更加对自己编写代码控制小车产生了兴趣。碰巧它的控制板采用的正是51单片机。

[ Read More » ]

遭遇git send-email和svn patch

长假后的第二天,上头传来了加强代码质量的“旨意”,目标是每一次代码提交都得先给 leader 审核。那么如何落实呢?先导出 patch 文件,然后 email 给责任人,收到对方明确的通过意见后,才能执行 commit。–这种方法似乎很类似 Linux Kernel 的情形,我倒也不反对。

但如此一来,审核环节就成了一个瓶颈,整个的开发行为也就变得串行化。最后方案初步调整为,在 SVN 仓库新开一个分支,专门用于开发人员的提交,开发人员修改后发出 patch 给同事审核,通过后提交到分支。再由 leader 逐个审核分支提交,将认为 OK 的提交合并到主干。这样,主干上始终保持着被认为是合格的代码。

[ Read More » ]