一、刷机原理

android系统启动的时候,首先会进行一些诸如硬件自检之类的操作,这些操作完成以后(至少它应该知道当前的机器有没有电),会检查一下当前手机按键的状态(接下来就是所谓刷机模式切换了,不同的android手机有不同的按键组合用来进入刷机模式),如果此时按键状态处于刷机组合,那么系统会调用ROM里面的一个叫做recovery的程序(这时就是进入了所谓的刷机程序了,它只是一个工具性质程序,用于检查刷机包的完整性和数字签名的合法性。对于目前大多数root过的机器而言,数字签名的合法性都不会成问题,然后由recovery程序将刷机包进行解压,然后把刷机包里面的文件写入到ROM中去,以此完成刷机过程);如果此时按键没有标明是刷机模式,那么系统会创建内存盘,开始从ROM里面载入相应的文件系统,并把相关的文件拷贝到内存盘中,进而引导linux启动,然后是启动虚拟机dalvik,然后就是创建工作进程载入和运行framework,然后就会看到待机的画面。当然在这个过程中还发生了许多事情,启动了许多服务等等。

现在来总结一下,实际上刷机包就是一个ROM文件的压缩包,进入刷机模式后,recovery程序会把刷机包里面的文件写入ROM存储区替换ROM存储区的原有文件;当下次启动手机的时候,会从ROM中载入刚刚替换过的文件,并利用这些文件来启动和运行系统。这就是刷机包的全部功能和作用,刷机的本质就是文件的覆盖和替换操作。

刷机方法

(1) recovery方法,就是我们平时将update.zip保存在SD卡,按X+电源键开机,这种方法是调用了recovery的方法将各种img或文件进行复制等操作。关于recovery的工作原理,另文再讲。
(2) fastboot方法,这个方法其实是比较酷的方法,说白点,fastboot就是将已有的各分区映象文件(img文件,意义上类似我们对光盘做的映象文件)直接覆盖写到指定分区中,有点类似我们平时操作系统的Ghost还原。
这两种方法哪种更好,这就不好比高低了,总的来说:
Recovery方法更简单,只需要傻瓜式的将update.zip放到SD卡的要目录下,然后进入Recovery模式alt-s就可以了,但和任何傻瓜式东西一样,他的灵活度就很小了,而且出错了也都不知道如何解决。一般来说做Rom的高手为了保证Rom的可靠性,在安装程序中都会对一些安装环境进行一些确定,而各位的手机环境又是千变万化的,Rom高手也很难考虑周全,另外,Recovery程序本身也有一些环境验证。
fastboot方法更灵活,功能也更强大,fastboot方法不需要依赖于recovery,甚至linux底层刷坏了recovery模式都进不了的情况下也可以通过fastboot方工刷回来。fastboot模式其实是调用spl进行刷机的,所以如果刷spl坏了,fastboot模式应该也进不了,也就是砖了。fastboot方法需要各位电脑上有fastboot程序,同时手机要进入fastboot模式才可以操作,关于这些知识,请参见Google *^_^*


三、Android系统中的各分区(可能分区这个说法不太准确)
(1) hboot(我们刷的SPL就是这玩意),这个分区是最基本的引导分区(类似电脑中的BIOS),这个区坏了,差不多就变砖了,所以我们刷SPL时才要如此小心啊。
(2) boot,这个分区应该是linux操作系统的引导分区。
(3) radio,这个分区是手机的一些底层设备相关的驱动或功能程序吧,如打电话和发短信等,不同的系统版本会有不同的radio配套,我们平时刷了高版本的ROM后,如果不刷高版本的Radio就有可能导致打电话不正常之类的。
(4) recovery,这个分区装的就是前面提到的recovery程序了,这个刷不同的recovery版本可以带来不同的功能,但一般来说,刷recovery最主要的就是提Root权限。
(5) system,是一般发布的ROM的主要功能程序分区了,我们说的ROM功能和自带程序的定制应该就是基于这个分区的修改和编译了。
(6) userdata,用户数据,不说了。
(7) cache,缓存,一般是用来OTA升级时的缓存,我们说刷SPL可以增加程序区的空间大小就是主要将这个区的大小缩水了然后加大了程序区的分区大小。


更多相关文章

  1. Android(安卓)笔记 :Android(安卓)热修复 Tinker接入及源码浅析
  2. Andriod开发-存储篇之外部存储
  3. Android卸载程序之后跳转到指定的反馈页面
  4. Android(安卓)NFC API Reference中英文
  5. Android(安卓)自定义 Toast 示例
  6. Android适配器总结
  7. Android:使用webview上传文件(支持相册和拍照) .
  8. android异常 android.os.NetworkOnMainThreadException
  9. Android/读取指定类型的文件

随机推荐

  1. android中Http类的封装
  2. Android(安卓)Paint之shader(图像渲染)
  3. Android(安卓)退出程序的若干方法总结
  4. Android开源项目分类汇总(七)优秀项目
  5. Android在代码中设置控件的drawableLeft
  6. flutter methodchannel调用原生方法,实现
  7. Android控件之ScrollView(scrollbarStyle
  8. Android实战技巧之十二:Android(安卓)Stud
  9. ARCore1.2使用入门(一) ------ 将ARCore案
  10. Android(安卓)横竖屏切换设置的 configCh