如何制作刷机升级包和rom的压缩包
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
如何制作刷机补丁和CWM刷机包ROM
在第一讲和第二讲中介绍过两种刷机方法:用Odin刷机程序在“挖煤”模式下刷TAR刷机包(线刷)和在Recovery(恢复)模式下刷zip 刷机包(卡刷)。在第五讲中教给大家如何制作或定制Odin刷机包ROM(TAR包)。在这一讲中,我们来介绍一下制作卡刷刷机包的方法。
在第二讲里的开头讲过:“卡刷”或CWM刷机就是用手机里安装的ClockworkMod程序来在Recovery模式下进行刷机。刷机包为单个签名的zip压缩包。在刷机包中有一个脚本文件,里面有一系列命令,规定好把不同的文件内容复制的手机的指定分区,从而达到刷机目的。那么怎样来制备这种zip刷机包呢?那个脚本文件又是什么呢?本讲的内容包括两个部分:
1.制作刷机补丁
2.制作完整刷机包ROM
通常,两者都称作刷机包。在本文中,我们说“刷机补丁”是指ROM 的补充内容。例如:在英文底包上刷中文文件,或者替换字库,替换主题或桌面等等。它们不构成可使手机运行的全部文件,它们仅仅是ROM的一部分。以前,常用update.zip来传播。当我们说“完整刷机包ROM”时,我们是特指一个独立完整的ROM,包含一个刷ROM所具有的所有必要刷机元素。
1. 制作刷机补丁
我们都知道,ROM发布者通常发布刷机补丁来升级ROM。ROM发布后,需要增加、刷新、更改ROM内容或功能时,没有必要重新安装整个ROM。只要把需要更新的部分写成一个“刷机补丁”,刷进手机与已有的系统合并就行了。
在介绍如何制作刷机补丁之前,先让我们来看一个实例:用刷机补丁来更新两个主题文件,把TouchWiz30Launcher.apk和SystemUI.apk 复制进手机的/system/app目录。刷机包补丁文件名为:CWM_Update.zip。
用WinRAR打开刷机补丁文件CWM_Update.zip,看到有两个目录:META-INF 刷机脚本文件和签名
system 要复制的补丁内容
继续打开/system就看到文件夹/app,再下去在/app下看到要复制的两个主题文件TouchWiz30Launcher.apk和SystemUI.apk(见截图)。从/system目录开始,所有的目录结构和akp文件放置的位置都必须与手机里的内容一一对应。
然后进入META-INF目录(见截图),我们看到有三个文件和一个字文件夹com。这三个文件是签名文件,是签名操作产生的。在Android 手机里,所有要刷入手机或在手机里运行的程序都必须经过签名。从
com继续向下走,在/META-INF/com/google/android目录下看到有两个文件:
update-binary 刷机包用的二进制文件
updater-script 刷机包脚本文件
这个刷机包脚本文件updater-script规定了要刷什么,刷到哪和怎样刷。
从这个具体的例子,我们可以总结制作刷机补丁的步骤如下:
1)创建一个工作目录:先假定它是CWM_Update。
2)在CWM_Update下产生两个子文件夹:META-INF和system
CWM_Update/META-INF
CWM_Update/system
3)再在CWM_Update/system下产生下一级子文件夹,存放补丁的内容。目录结构和文件放置要与手机里的文件结构完全一致。apk应用程序放在/app下,字库放在/fonts下,主题放在/framework下,触摸键定义放在/usr/keylayout下,库文件放在/lib下,等等。
4)在CWM_Update/META-INF下再产生
/META-INF/com/google/android
到其它的刷机包里去把现成的update-binary和updater-script复制进/android目录。
我的做法是把META-INF的整个目录内容都一起复制过了,里面已经有了三个签名文件和刷机包用的二进制文件update-binary,一次搞定,省事。不要碰再它们了。
5)现在来编辑脚本文件updater-script,它规定了要复制什么、怎么复制、复制到什么地方。用文本编辑器打开updater-script,看到内容如下:
mount("MTD", "system", "/system");
ui_print("Updating system...");
show_progress(0.100000, 0);
set_progress(1.000000);
package_extract_dir("system", "/system");
show_progress(0.900000, 10);
ui_print("Update complete!");
unmount("/system");
对脚本文件updater-script内容解释如下:
mount("MTD", "system", "/system");
挂载MTD、system、/system(system是CWM_Update.zip里的/system 文件夹,/system是手机空间上的文件夹)
ui_print("Updating system...");
手机屏幕显示提示信息Updating system...
show_progress(0.100000, 0);
是控制进度条状态(进度条当操作完成后前进10%)
set_progress(1.000000);
把进度条手动设置到100%
package_extract_dir("system", "/system");
将CWM_Update.zip的system文件夹下的内容复制到手机的/system