【安智Rom组】做Rom其实没什么奥秘,浅显易懂的补丁制作教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
重要说明:
看完这个帖子,你将学到:刷机脚本的含义,如何对刷机脚本进行简单修改,如何制作补丁,如何往内核里加入G大脚本,甚至如何制作Rom的zip包。
另外,此贴较长,或许以后还会更长,要想学到东西的机油请耐心看。
我将先以我的Blade-Bingo-2.3 Rom里的脚本为例,讲一讲刷机脚本。
然后再以我此贴的附件KernelPatch.zip 内核补丁为例,简单讲一讲内核单刷补丁怎么做。
首先,我想说,其实,补丁的本质就是一个不完整的Rom刷机包。
为什么这么说它?我想看完这个帖子大家就明白了。
首先,请把任意一个V880的Rom解压缩(或者直接用双击打开它,当然,前提是这种格式已被压缩软件关联)。
你会看到,根目录下有META-INF、system文件夹和boot.img文件(其他Rom 组织方式,如含data、cust等文件夹的Rom暂不细说)。
刷补丁(或者说,刷机),成功的几个要点:正确的文件,准确的脚本,精确的操作。而这样做,的确的有效。
system文件夹里是所有刷机所需文件,今天只教大家做内核补丁,所以暂时不去关心这里是什么。
META-INF\com\google\android\目录下有个edify的updater-script刷机脚本,它与Rom厨房默认的脚本有些不同。
如何不同,那里不同,这也不是今天咱们要讨论的问题,暂此越过。
用记事本或高级一点工具的如NotePad2(建议使用高级工具,自动排列,颜色突出,看起来更有条理)打开脚本文件。
------------------------------------------------------------------------------------------------------
ui_print("");
ui_print(" =================================");
ui_print(" | ------==bingo1991==------ |");
ui_print(" ============ 2.3.7-0214 =============");
ui_print("");
ui_print("Updating, plese wait....");
ui_print("");
assert(getprop("ro.product.device") == "blade" || getprop("ro.build.product") == "blade" || getprop("ro.product.board") == "blade");
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh"); set_perm(0, 0, 0777, "/tmp/backuptool.sh");
run_program("/tmp/backuptool.sh", "backup");
show_progress(0.100000, 3);
format("yaffs2", "MTD", "system");
mount("yaffs2", "MTD", "system", "/system");
package_extract_dir("system", "/system");
show_progress(0.600000, 40);
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/arp", "/system/xbin/ash", "/system/xbin/awk", ......
"/system/xbin/xz", "/system/xbin/xzcat", "/system/xbin/yes",
"/system/xbin/zcat");
symlink("toolbox", "/system/bin/cat", "/system/bin/cmp",
"/system/bin/date", "/system/bin/dd", "/system/bin/dmesg", ......
"/system/bin/wipe");
set_perm_recursive(0, 0, 0755, 0644, "/system");
......
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm(0, 0, 06755, "/system/xbin/tcpdump");
show_progress(0.200000, 5);
package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh"); set_perm(0, 0, 0777, "/tmp/backuptool.sh");
run_program("/tmp/backuptool.sh", "restore");
package_extract_file("system/bin/modelid_cfg.sh",
"/tmp/modelid_cfg.sh");
set_perm(0, 0, 0777, "/tmp/modelid_cfg.sh");
run_program("/tmp/modelid_cfg.sh");
package_extract_file("system/bin/verify_cache_partition_size.sh",