什么事值得放在心上

我是一个小心眼的人,喜欢了的东西就要百般呵护着,怕它摔了,怕它脏了,除非我找到了更喜欢的。换句话说,就是特别容易把一些东西放在心里高高的位置上,供着它。是的,我喜欢的,那就是我的神祗。

2003年的时候,我有了第一台电脑,价值5K,当时一个月生活费400。每次关机后,都要郑重地用罩子把显示器罩上,把键盘反着扣起来,生怕沾上了灰尘,就不灵光了。现在,公司里两台电脑,家里一台笔记本,全都丢在一旁,连擦都不擦。

[ Read More » ]

How to Add New Project into AOSP

Android

在上一篇《How to Create Branch in Android Local Mirror》中,我介绍了如何在Android Mirror中创建分支,然后进行协同开发。既然是分支,那么增加、删除、修改文件等操作,自然是少不了的,麻烦不到哪里去。不过,如果是增加一个新的工程,就稍微麻烦些了。

过去的几个月里,我不断地在看《Android系统源代码情景分析》《深入理解Android:卷I》,两位作者讲述知识的方式有一个共同点,就是用图表(UML)来描述,用代码来验证。所以,不可避免我要创建一些测试工程,同时,这些工程还要在不同的机器上协同开发。

[ Read More » ]

How to Create Branch in Android Local Mirror

Android

获取 Android 源码非常简单,无非两三个命令。但如果你是一个团队,又或者你会在多台机器之间切换工作,那么,每个人、每台机器都从官网拉取代码,即浪费精力、耽误时间,又不能方便地管理代码。

这个时候,你需要使用本地镜像,正如官网文档所建议的那样。创建了本地镜像后,其他人、其他机器都可以就近拉取代码,然后推送修改到本地代码仓库。可是,这个过程要如何协作呢?接下来的文字将描述这个过程。

[ Read More » ]

Uncompressing Linux done, booting the kernel

Android

Android 前不久发布4.3版本,正值我在学习《Android系统源代码情景分析》一书,觉得不必要拘泥于该书所描述的版本(2.3),跟上潮流前线不是件坏事,况且 Android 在2.3到4.3并没有发生天翻地覆的改变,原理应该是想通的。于是升级 Android Source,随后是 Kernel Goldfish。

和往常一样,各种环境变量配置完毕,编译过程一切顺利,得到system.img、userdata.img和ramdisk.img,模拟器可以正常启动、运行。接下来,编译 Goldfish 得到zImage,但是,模拟器怎么也不能启动了。在终端输出下面的信息后,一切嘎然而止。

[ Read More » ]

读《C++ Primer》之定义、声明、引用

Android

变量提供了程序可以操作的有名字的存储区。每一个变量都有特定的类型,该类型决定了变量的内存大小和布局、能够存储于该内存中的值的取值范围以及可应用在变量上的操作集。

我弄不懂,这算不算是强类型(Strong Typing)与弱类型(Weak Typing)语言的区别之一。

在使用变量之前,变量必须已经被定义或声明。但是变量必须且仅能定义一次,定义时,除了可以为变量分配存储空间,还可以指定初始值。

C++ 中,声明(declaration)用于向程序表明变量的类型和名字。通过使用 extern 关键字,声明变量名而不定义它,不分配存储空间。事实上,它只是说明变量定义在程序的其他地方。

[ Read More » ]