对普通人来说是个系统,对极客来说
极客
Android就是妹纸
怎么看到Android的“心”
提要:Git,是打开Android心扉的钥匙。
要看到Android的“心”(源代码),首先要知道怎么获取Android源代码。你必须搭建一个基于Linux核心的开发环境,本人推荐Ubuntu,它拥有完整的中文语言库和图形界面,能快速上手。
然后,你要学会使用Git,通过Git,你就可以获取任意一套Android的源代码,包括最新的4.0版。由于需要连接至国外服务器,且源代码文件很大,Git所需时间较长,请耐心等待。
小提示 | TIPS
Git 是用于 Linux 内核开发的版本控制工具。因为Android 是由Kernel、Dalvik、Bionic、Prebuilt、Build等多个Git项目组成,所以Android项目编写了一个名为Repo的Python的脚本来统一管理这些项目的仓库,使得Git的使用更加简单。
读懂Android的心语
提要:Android依靠调用一个又一个模块完成一项又一项任务。
Android的主要模块有很多,下面我来一一给大家展示一下它们的作用:
·Makefile(全局文件)
·Bionic (Bionic含义为仿生,这里面是一些基础库的源代码)
·Bootloader (引导加载相关源代码)
·Build (系统编译规则以及generic等基础开发包配置)
·Dalvik (Dalvik JAVA虚拟机)
·Development (程序开发所需要的模板和工具)
·External (目标机器使用的一些库)
·Frameworks(核心框架——JAVA以及C++语言)
·Hardware (部分硬件厂商的开源硬件适配层源代码)
·Kernel(Linux2.6的源代码)
·Packages(Android的各种应用程序)
·Prebuilt (Android在各种架构下
·Recovery (与目标的恢复功能相关)
·System (Android的底层文件系统库、应用以及组件)
看着头疼?没关系,我们以Android的启动过程为例,简单谈谈模块的用途:
第一步:Bootloader初始化,显示开机第一屏画面。初始化成功后,挂载系统。
第二步:运行AndroidRuntime,并启动JAVA虚拟机Dalvik VM。JAVA虚拟机启动成功后,开始系统初始化,并显示系统启动画面。
第三步:启动ServerThread进程,它会启动各种系统服务,例如Activity Manager等,启动之后就可以进入系统了。
开源成就了刷机包
提要:刷机包是由反编译工具制作出来的。
由于Android的开源策略,反编译工具的开发变得非常容易,从而有了Apktool、Smali等一系列的反编译利器,最终成就了Android刷机包遍地开花的结局。正因如此,当用户购入一部Android手机之后,刷机成了一个极大的乐趣。
比如我拿到一部全新上市的三星Android手机,如果没有中文,我可以使用Apktool反汇编每个系统APK,并在原有的语言库中加入中文字符串并再次进行编译,这样,我就完成了整个系统的汉化工作。
而要在官方ROM的基础上实现某些功能的加强和改动,我可以使用Smali来得到程序和框架的Dalvik汇编源码,按照自己的构想对代码进行修改之后,生成新的程序和框架。所有的修改完成之后,最后一步如何生成刷机包便成了关键。由于三星长期以来对第三方ROM都持支持态度,所以刷机在三星的Android设备上,再简单不过。
换言之,制作刷机包,也是再简单不过。只需在Ubuntu下把修改完成的System生成对应格式的img镜像,再用tar命令无压缩打包上Kernel以及基带,如此,一个完整的三星手机刷机包便制作完成。

Android架构图
妹纸也是一个“吃货”
提要:谷歌在Android的开发中贯穿这样的设计理念:取悦用户,简化生活,与众不同。
熟悉谷歌的人应该知道谷歌有一个不成文的规矩:10米之内必有食物!这是Google文化的一个特点。而Android的版本号演进,也同样体现了谷歌的这一公司文化:对吃情有独钟。从Android1.5版本开始,Google启用了甜点作为Android系统各版本的代号,并按照26个字母的顺序依次命名。
其中,2009年4月,Android 1.5版本的发布,使Android真正成为一个成熟可用的OS,并逐渐为大众所认知和接受,而Android的国际化进程,也是起始于1.5版本。相较于Android 1.1仅支持英语和德语,Android 1.5支持包括中文在内的十几种语言。
另一次重大更新,则是2010年5月Android 2.1至2.2的升级。Android2.2版本最为人知的一个更新:新增了对Flash的支持,这使得人们在手机之上在线观看各种视频、玩某些小游戏成为了可能,要知道,当时对HTML5标准的支持远没有如今的好,而风靡一时的社交Flash游戏,更使得当时推出的这项更新令广大Android用户欢呼不已。
最近的一次重大更新,则是2011年10月Android 4.0的发布。4.0同时支持智能手机与平板电脑,终结了Android系统在手机和平板上的分道扬镳,完成了系统格局的大一统。从4.0的源代码来看,谷歌加强了对系统的权限认证以增强安全性,例如从4.0开始,应用接收启动信息需要声明权限,这个小小的改变,让某些自启动拖慢系统开机进程的恶意软件无处遁形。
另一个小细节也不容忽视,Android从发布到现在,一直使用最为成熟稳定的Linux 2.6.xx Kernel,加上上文提到的Dalvik虚拟机机制,Android从一开始,就为一个操作系统最基本的稳定性,打下了牢牢的基础。

Android版本进化图
开源系统中 Android为何一枝独秀
提要: Android的成功跟移动互联网的发展密不可分。
面对Android开源的成功,很多人充满了疑问。为什么之前的Linux开源系统,全都是那么小众,而Android,却如此成功在短时内赢得了大量的市场份额,并成功击退塞班,稳坐智能机系统市占率第一的宝座?其实经过简单分析,不难明白个中缘由。
Android之外,Linux其余各发行版本都主打桌面市场,而桌面系统早就由Windows在20世纪90年代一统江湖,用户的操作习惯和积淀难以更改,市场惯性让Windows越做越大,Linux桌面系统却越来越小众而不被人认知。另外,Windows背后有强大的微软,Linux各发行版本的背后,却只是一个个开源开发小组在支撑,力量对比悬殊,Linux想要赢得桌面战场的胜利,其可谓蚍蜉撼大树也。
而Android,成功地抓到了新兴市场的机会。彼时3G互联网开始大行其道,Symbian在iOS的冲击下已是廉颇老矣,用户纷纷开始抱怨Symbian单调的界面,无聊的操作,而面对iPhone高高在上的价格却不得不望而却步,这时,横空出世的Android无疑让用户眼前一亮。
更为重要的是,Android倚靠着谷歌这棵大树,便有了强有力的技术支撑,版本升级更新迅速,新功能新特性层出不穷,而Google推行的免费开源政策,使广大手机厂商纷纷加入了Android的行列之中。
在Android的生态系统中,领头羊谷歌却聪明地选择了只做软件,把做硬件的机会完全留给了手机厂商,面对完全免费的Android和需要授权使用费的Symbian以及WM/WP,众多手机厂商明智地选择了Android。
最后我想说的是,Android一直在成长、一直在慢慢成熟, Android的未来会更好。