【安智Rom组】做Rom其实没什么奥秘,浅显易懂的补丁制作教程

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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",

相关文档
最新文档