一.安卓的古往今来(了解就够啦)        Android是一种以Linux为基础的开放源代码操作系统,主要使用于便携设备。目前尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。Android操作系统最初由Andy Rubin开发,最初主要支持手机。2005年由Google收购注资,并组建开放手机联盟开发改良,逐渐扩展到平板电脑及其他领域上。Android的主要竞争对手是苹果公司的iOS以及RIM的Blackberry OS。2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。
(好吧,我承认这段是Copy度娘百科的,瞎看看就得了。)

二.安卓的特点(了解了解即可)
        说到安卓,当然最大的特点就是 开源。也许专业名词你不懂,这没关系。如果稍微知道点电脑的同学会听过编译,编程,例如我要写一个计算1+1=?的程序,写好了代码,这个就叫源码。源码是一行行的英文字符串,这是文本不能运行,用编译器做成了exe文件之后,就可以运行了,源码到程序这过程就叫编译。但是呢,编译出来的东西,很难在回到源码,所以没有源码的人就很难修改。开源就是公布源码,大家都可以在这个基础上改,Diy,开源就是这么回事。
        那么开源有什么好处呢?就是大家都可以修改,发布修改的程序,所以安卓系统就缤纷多彩。自然就会有很多很牛的大神作出很多功能很多性能很好的优化版本,这就是开源的好处。

三.安卓手机其实就是个小电脑有许多分区(小白必读)
        就如这一节的标题,其实不光安卓,应该说智能机就是个小电脑。不过本文就只说安卓的那点事。一切要从安卓的“硬盘”说起。
        就说一台电脑,硬盘上有很多个分区,例如“C盘”是装系统的,“D盘”是存用户的东西的。安卓机也是如此,在安卓的硬盘里也有许多的分区,类似C盘D盘,不过不叫这个,每个分区都有自己的名字。下面我就要逐个说说主要的分区了。
        System:顾名思义,系统分区,就是主操作系统啦,相当于C盘。
        Data:存放你的各种应用程序,游戏,设置,存档的地方。
        Recovery:这个得多说说,不知道同学知不知道电脑上双系统?在启动电脑的时候可以选择我是进Win7呢还是进XP。比如我主要用Win7,但是有一天他坏了,我进入XP来修复我的Win7,这个“XP”就是在安卓里就是Recovery,其实就是个“小型”操作系统。
        Radio:就是基带,手机比电脑多出来的功能就是通讯嘛,你通讯的驱动就放在这里。
        Boot:内核分区,相当于电脑里面的驱动,专门放驱动的分区。
        Firmware:固件分区,相当于电脑的Bios,你说你不懂啥是Bios?你不用懂,你只需要知道,这个是最底层的驱动,直接和硬件打交道,如果他坏了,你的手机那就是100%的砖头了。别的分区坏了可以刷,相当于电脑从新装个系统罢了,这个分区坏了,管你电脑还是手机,主板要不大修,要不换一块了。
        其他分区一般情况是用不到的,在这里也就不介绍了。
        同学发问,那么SD卡是什么分区?我告诉你,这个不在硬盘里,这个是“移动硬盘”,当然有些手机所谓的内置SD卡,就是用一部分硬盘空间划出个分区当SD卡了。
        我给大家讲解了这些分区但是它们有别的称呼,在此也介绍一下。
       

Userdata=Data 

         Baseband(BB)=Radio 

         Kernel=Boot 

         BootLoader(BL)=HBOOT=SPL=Firmware 

         Rec=Recovery


        至于ROM这个没有准确的概念,一般来说ROM=System+Kernel。但是也会在论坛听到,我用的XXX大神的ROM,XXXX大神的内核。到底ROM指的是System还是System+XXX+XXX,具体问题具体分析。
       
四.这个小电脑是怎样启动的?(小白必读)
        这个问题很重要,就先你按了开机键,最先启动的是BootLoader,他会对各个硬件进行参数设定,初始化,给System设置只读或者读写等等,默认情况下,如果你什么都不做,他就会启动System,然后手机就打开了。
        所谓的 解锁,就在这BL里,如果BL在一起动就设置System是只读的,无论什么方法,你也别想修改这“C盘”了。解锁就是让BL在启动的时候设置各个分区可读取可写入。
        那么童鞋就问了, ROOT是怎么回事?这其实很好解释,就算你解锁了,各个分区硬件上允许你读写了,你运行的操作系统会允许你修改自己,甚至删除自己嘛?当然不会,怎么才能这样做?在系统里插入个间谍文件Su,系统以为它是系统文件,允许它“胡来”。
        那就是ROOT。
        那么怎么插入这个间谍Su呢?一般方法有两个,一个是系统有可利用,另一个就是在Recovery下刷入到系统里。
       
五.传说中的Fastboot(小白了解即可)
        这东西之前一直没提,他并不是一个分区,他只是BL的一个功能。简单来说你进入了BL,启用了Fastboot,这时候,只要你手机线接到电脑,就可以从电脑输入指令给手机,让手机执行许许多多的命令。当然你不必学习这个,更不用学习那些命令,一般来说,各位大神肯定会把命令做成一个程序,你只要点下鼠标,做些很简单的操作即可。
        上一节说到怎么刷入Rec,就是通过这Fastboot(FB)来完成的。虽然论坛有很多大神的脚本,运行下就OK,但是如果可以,我还是建议大家学学这玩意,无论系统怎么升级,这些东西是变不了的,学会了这个,才能以不变应万变。
        刷入了CWM Recovery基本上刷机已经够了,刷什么ROM?用什么内核?刷啥基带?自己慢慢选吧。

六.手机的第二个系统Recovery(小白必读)
        就如标题所说,他是手机的第二个系统,平时是用不上的,但是遇到特殊情况,比如主系统坏了,主系统需要升级等等,需要恢复到出厂,它就会派上用场。
        想要进入Recovery当然还得从BL说起。手机开机,BL启动,默认就直接打开主系统了,但是如果开机时你按一些键,或者特定的按键组合,BL就知道,要启动的不是主系统。不同手机按键不同,进入到的页面更不同。有些手机BL会提供个菜单,有的手机直接按对应的键,进入对应的功能。
        进入到Recovery以后,就可以对主系统进行许许多多的操作了。不过官方自带的Recovery并没有很多的功能,一般来说,官方自带的 Recovery只有以下功能,恢复出厂,其实就是把Data分区给格式化了。要不就是刷个官方的OTA补丁,干不了什么。
        真正强悍的在这里,CWM Recovery,这是什么?
        就是ClockworkMod(CWM)做的Recovery。
        他有许许多多官方Recovery没有的功能,当然最主要的就是能够刷入各种非官方的补丁,甚至是完全刷入一个完整的系统。
        那么怎么才能拥有它?怎么能用它替换掉官方的Rec?
        一般来说有两条路,一个是通过系统得到ROOT,再用ROOT刷入Rec,另一个就是解锁后用Fastboot刷入。

七.有个东西叫ADB(小白了解即可)
        ADB这东西和Fastboot比较相似,都是电脑连接手机,给手机下达命令的,但是ADB是基于System的,而FB是基于BL的。
        原本ADB的功能很小,也就是把个安装包发到手机上安装上,或者卸载,或者在电脑和手机间收发下。但是有了ROOT,ADB就不一样了,他可以给手机下达一些“圈圈”以外的命令,因为安卓就是基于Linux系统的嘛,所以就可以下达很多Linux命令,例如rm,cp,mv,甚至是dd。。。
        有些手机在没有Rec之前,就要靠dd命令来刷img镜像文件。
        而且通过系统获取ROOT一般也是通过ADB。
        我个人觉得,ADB的东西更偏向于Linux的学习,不多讲了。

八.我也要发布ROM(高手晋级)
        自己汉化,自己美化,自己加入了很多功能,是不是也想给网友们一起分享呢?这时候你需要学习怎么做ROM了。其实做ROM的关键是CWM Recovery脚本的编写。你把你的ROM或者一个XXX补丁,文件与脚本用ZIP的方式打包起来签名,就可以了,具体的格式规范我还是建议你亲自拆个包看看。编写脚本才是关键,你问我如何编写脚本?首先说脚本就是一条条的命令,Recovery会按照你的命令执行操作,一般都是这样的流程。格式化命令,挂载命令,删除命令,复制命令,,设置映射,设置文件权限,刷入内核img文件,刷入基带的img文件,最后最后结束挂载。具体的英文命令是什么请去CWM网上查,或者拆个别人的包,看看就全都清楚了,这节我也不会说太多,因为内容实在太多。请大家善用百度谷歌,我学的这些也全是百度谷歌来的。ROM包的结构可以参考 javascript:void(0)。
       
九.Linux下编译开发(你就是高手)
        一般Linux环境,多用的操作系统是Ubuntu,我强烈推荐大家用Ubuntu10.04这个版本。我当年用11点几的最新版本,编译安卓4.0,结果是一堆的错误,根本make不出东西。另外编译源码最好用64位操作系统,32位下编译也是一堆错误。
        好啦,内容没说先说一堆注意事项。下面正式介绍编译,编译源码比较权威的还是Google的Android社区( http://source.android.com/)。
        我们说了开源,这里就是开源的真正意义所在了,例如谷歌发布的JB4.1,现在源码还未公布,假如公布了,你首先要下载源码,一般来说好几个G是肯定的。Google官方给出的源码主要面向模拟器编译的,就是说编译生成的镜像文件是不能直接刷到设备上运行的,但也并不全是,可以针对设备编译的具体机型在源码的device目录下。最后执行编译得到系统的,内核的,等等img文件,最后Fastboot刷入img到手机。如果需要的话,解压img做成ZIP刷机包,然后REC下刷。
        编译安卓代码需要很多的软件组件,如果编译内核还需要交叉编译器。我只能说,你现在所做的事情和谷歌工程师所做的事情是一样的所以我不可能说的面面俱到,说真的,我也只不过能做到拿来源码,很简单的修改下,Copy点大神写的功能添加进来编译到头了。
        例如顶顶大名的CM团队(CyanogenMod)就是从事源码编译这方面工作的。

十.作者说点闲话
        不知不觉的,这篇文章就足有5000字了,是不是可以交了当论文用啊。其实我很欣赏一网友说的话,科技是造福人类还是为人类所累。一个手机下再多的功夫,终究是个手机而已,生活中有更多需要用心去做的事情。至于刷机,找到个适合的,偶尔刷刷就好。
        谢谢大家看完我的长篇大论,至于版权声明嘛,好歹也写了这么多字呢,随便转载,随便转发,留下个我的名字就好。
        作者:Cim