上周,Zoe 买了新爪机,SE 的 LT18i/Arc S 也就是传说中的 anzu 。
然后原生系统是 2.3 的,而且带了 N 多 索爱的应用,不用说,刷机之~
由于我是 android 刷机小白,于是去看了很多所谓教程,gfan.com 上很多很多教程,但是都属于用这个工具,用那个工具的,我又很不喜欢用这种工具,他在做啥都不知道,有什么好玩的。
于是,自己摸索。根据大学本科所学的,手机无非就是个提供操作系统的嵌入式系统加上一个信号处理的 DSP 控制芯片 及相关周边组成的玩意儿。
android 机器刷机,无非就这几个步骤:

  1. 解锁 bootloader。
  2. 刷入内核,系统等。
    每一步都有很多方法,第一步解锁,现在比较流行的是 fasrboot 去解锁,一般命令就是类似于

$ fastboot oem unlock

那么,我们首先需要一个 fastboot 可执行文件。其实国内论坛又把这个搞得很神秘,其实,去装一个 android sdk,无论是 Windows 版本还是 Linux 版本也好,都一样,然后,运行之,下载 最顶上的 Android SDK tool 和 Android SDK platform tools 基本就 OK 了,下载完成后,去 android sdk 目录下的 platform tools 目录中,就可以发现那里已经躺着一个了 :)

有了 fastboot 后,我们还需要让我们的 设备 可以顺利地以 fastboot 模式与电脑相连接。
那么,对于 Windows 来说,我们需要一个一个驱动配置文件 android_winusb.inf 。可以去 这里 下载适配 cyanogenmod 所支持的机型的驱动文件,然后,将你的手机以 fastboot 模式 连接电脑(具体手机如何进入 fastboot 模式,每个手机都不一样,请自行寻找一下相应型号手机的开启方法),然后,Windows 会恐吓你说驱动无法安装,别急,手动定位到刚刚下载的驱动配置文件,即可完成安装。装完后似乎在设备管理器里会有一个 android adb 啥的设备,这就 OK 了。
对于 Linux 来说,android 和各种 Linux 发行版都是同一个种族,就没有 Windows 那么麻烦了。对于 Ubuntu 来说:


$ sudo gedit /etc/udev/rules.d/51-android.rules

新建一个配置文件,然后加入


# fastboot protocol on maguro/toro (Galaxy Nexus)
SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="4e30", MODE="0600", OWNER=""

这个配置是 Galaxy Nexus 的。请将其中的 18d1 和 4e30 换成你的设备的 id。 可以运行 lsusb 命令查看你设备的 usb id 。
OK,除此之外,我们还需要让其生效


$ service udev restart

如果此命令对你无效,重启一下吧~

好了,基本环境就部署完成了。接下来是刷机过程。
对于 LT18i 来说,解锁需要索爱的 key。看了下这个
索爱解锁指导
根据 IMEI 索爱会给你一个 KEY。记下那个 KEY。


$ fastboot -i 0x0fce getvar version

如果有返回信息,就可以确定 fastboot 模式是否成功连接
之后,


$ fastboot -i 0x0fce oem unlock 0xKEY

其中的 KEY 就是刚才得到的 KEY。

这样, bootloader 就解锁了

接下来下载刷机包,例如我是刷了 FXP130 包中带了一个 boot.img 。
刷入 boot.img 可以使用如下方法:


$ fastboot flash boot boot.img

这样可以获得一个 CWM 的 recovery。
拷贝 ROM 包到 SD 卡。
注意:索爱的 LT18i 比较好玩,直接刷 CM 的 ROM 会失败,首先恶魔需要将那个要所包中的 update-script 文件修改一下,文件的所在路径如下:
FXP130-cm-9-20120720-UNOFFICIAL-anzu/META-INF/com/google/android
将开头的 assert 开始,到第一个 package 的这段代码删除。
这段代码如下。


assert(getprop("ro.product.device") == "LT18i" || getprop("ro.build.product") == "LT18i" || 
       getprop("ro.product.device") == "LT18a" || getprop("ro.build.product") == "LT18a" || 
       getprop("ro.product.device") == "LT15i" || getprop("ro.build.product") == "LT15i" || 
       getprop("ro.product.device") == "LT15a" || getprop("ro.build.product") == "LT15a" || 
       getprop("ro.product.device") == "anzu" || getprop("ro.build.product") == "anzu");

删除完后,重新打包~ 放入 SD 卡根目录。

关机,进入手机的 recovery 模式。
wipe data
wipe cache
advance/ wipe dalvik
advance/ wipe battery
这就是论坛说他们说的 4 wipe。
然后,install from sd card 再选择 choose zip from sdcard
再选择我们刚在复制进去的 ROM 包。
确认,即可刷入。
至此,刷机完成,重启即可进入新系统。