updater-script修改实战

来源:互联网 发布:学滑板的软件 编辑:程序博客网 时间:2024/05/18 02:08

1. 解压update.zip

目录结构为:

|----boot.img|----system/|----recovery/    |----recovery-from-boot.p    |----etc/        |----install-recovery.sh|---META-INF/    |CERT.RSA    |CERT.SF    |MANIFEST.MF    |----com/         |----google/             |----android/                  |----update-binary                  |----updater-script          |----android/               |----metadata               |----otacert

2. 添加需要加入的目录

|----test_dir    |-----file1    |-----file2    |-----file3    |-----file4    |-----file5    |-----file6    |----delete_file.sh    |----dir        |-----file5

delete_file.sh的内容为:

rm /data/file3.txt
主要为了测试在Recovery执行shell脚本

assert(getprop("ro.product.device") == "rk30sdk_joyplus" ||       getprop("ro.build.product") == "rk30sdk_joyplus");show_progress(0.500000, 0);format("ext4", "EMMC", "/dev/block/mtd/by-name/system", "0", "/system");mount("ext4", "EMMC", "/dev/block/mtd/by-name/system", "/system");package_extract_dir("recovery", "/system");package_extract_dir("system", "/system");ui_print("yedu-lijinwei start");mount("ext4","EMMC","/dev/block/mtd/by-name/userdata","/data");package_extract_dir("test_dir", "/data");symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");symlink("mksh", "/system/bin/sh");symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",        "/system/bin/chown", "/system/bin/cmp", "/system/bin/date",        "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",        "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",        "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",        "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",        "/system/bin/kill", "/system/bin/ln", "/system/bin/log",        "/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",        "/system/bin/md5", "/system/bin/mkdir", "/system/bin/mount",        "/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat",        "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",        "/system/bin/ps", "/system/bin/r", "/system/bin/reboot",        "/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir",        "/system/bin/rmmod", "/system/bin/route", "/system/bin/schedtop",        "/system/bin/sendevent", "/system/bin/setconsole",        "/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd",        "/system/bin/start", "/system/bin/stop", "/system/bin/sync",        "/system/bin/top", "/system/bin/touch", "/system/bin/umount",        "/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",        "/system/bin/wipe");set_perm_recursive(0, 0, 0755, 0644, "/system");set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");set_perm(0, 3003, 02750, "/system/bin/netcfg");set_perm(0, 3004, 02755, "/system/bin/ping");set_perm(0, 2000, 06750, "/system/bin/run-as");set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");set_perm(0, 0, 0755, "/system/etc/bluetooth");set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/left_eye-y0-yi45-p0-pi45-r0-ri20.lg_32/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/nose_base-y0-yi45-p0-pi45-r0-ri20.lg_32/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/right_eye-y0-yi45-p0-pi45-r0-ri20.lg_32-2/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-r0-ri30.4a-v24/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-rn30-ri30.5-v24/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-rp30-ri30.5-v24/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/recognition/face.face.y0-y0-22-b-N/full_model.bin");set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");set_perm(0, 0, 06755, "/system/xbin/librank");set_perm(0, 0, 06755, "/system/xbin/procmem");set_perm(0, 0, 06755, "/system/xbin/procrank");set_perm(0, 0, 06755, "/system/xbin/su");set_perm(0, 0, 06755, "/system/xbin/tcpdump");set_perm(0, 0, 06755, "/data/delete_file.sh");delete("/data/file1.txt");delete("/data/mac_address.txt", "/data/file2.txt");delete_recursive("/data/dir");run_program("/data/delete_file.sh");ui_print("yedu-lijinwei end");show_progress(0.200000, 0);show_progress(0.200000, 10);write_raw_image(package_extract_file("boot.img"), "boot");show_progress(0.100000, 0);clear_misc_command();unmount("/system");unmount("/data");

修改的目的是,不关心系统是否比更新包新,都去更新它,后面就是删除文件及递归删除文件夹,都是好用的。
附原来的内容:

assert(!less_than_int(1370741919, getprop("ro.build.date.utc")));assert(getprop("ro.product.device") == "rk30sdk_joyplus" ||       getprop("ro.build.product") == "rk30sdk_joyplus");show_progress(0.500000, 0);format("ext4", "EMMC", "/dev/block/mtd/by-name/system", "0", "/system");mount("ext4", "EMMC", "/dev/block/mtd/by-name/system", "/system");package_extract_dir("recovery", "/system");package_extract_dir("system", "/system");symlink("Roboto-Bold.ttf", "/system/fonts/DroidSans-Bold.ttf");symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");symlink("mksh", "/system/bin/sh");symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",        "/system/bin/chown", "/system/bin/cmp", "/system/bin/date",        "/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",        "/system/bin/getevent", "/system/bin/getprop", "/system/bin/hd",        "/system/bin/id", "/system/bin/ifconfig", "/system/bin/iftop",        "/system/bin/insmod", "/system/bin/ioctl", "/system/bin/ionice",        "/system/bin/kill", "/system/bin/ln", "/system/bin/log",        "/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",        "/system/bin/md5", "/system/bin/mkdir", "/system/bin/mount",        "/system/bin/mv", "/system/bin/nandread", "/system/bin/netstat",        "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",        "/system/bin/ps", "/system/bin/r", "/system/bin/reboot",        "/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir",        "/system/bin/rmmod", "/system/bin/route", "/system/bin/schedtop",        "/system/bin/sendevent", "/system/bin/setconsole",        "/system/bin/setprop", "/system/bin/sleep", "/system/bin/smd",        "/system/bin/start", "/system/bin/stop", "/system/bin/sync",        "/system/bin/top", "/system/bin/touch", "/system/bin/umount",        "/system/bin/uptime", "/system/bin/vmstat", "/system/bin/watchprops",        "/system/bin/wipe");set_perm_recursive(0, 0, 0755, 0644, "/system");set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");set_perm(0, 3003, 02750, "/system/bin/netcfg");set_perm(0, 3004, 02755, "/system/bin/ping");set_perm(0, 2000, 06750, "/system/bin/run-as");set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");set_perm(0, 0, 0755, "/system/etc/bluetooth");set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");set_perm_recursive(0, 2000, 0755, 0644, "/system/vendor");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/left_eye-y0-yi45-p0-pi45-r0-ri20.lg_32/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/nose_base-y0-yi45-p0-pi45-r0-ri20.lg_32/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/multi_pose_face_landmark_detectors.7/right_eye-y0-yi45-p0-pi45-r0-ri20.lg_32-2/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-r0-ri30.4a-v24/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-rn30-ri30.5-v24/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/detection/yaw_roll_face_detectors.6/head-y0-yi45-p0-pi45-rp30-ri30.5-v24/full_model.bin");set_perm(0, 0, 0644, "/system/vendor/pittpatt/models/recognition/face.face.y0-y0-22-b-N/full_model.bin");set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");set_perm(0, 0, 06755, "/system/xbin/librank");set_perm(0, 0, 06755, "/system/xbin/procmem");set_perm(0, 0, 06755, "/system/xbin/procrank");set_perm(0, 0, 06755, "/system/xbin/su");set_perm(0, 0, 06755, "/system/xbin/tcpdump");show_progress(0.200000, 0);show_progress(0.200000, 10);write_raw_image(package_extract_file("boot.img"), "boot");show_progress(0.100000, 0);clear_misc_command();unmount("/system");

3. 添加到压缩包,记住不能有二级目录,保证解开包就是上述目录下的文件,而不是你的压缩包的名字。(选中文件进行压缩)

4. 放到Android下去签名:

我写了一个签名脚本,位于Android根目录下,sign_update.sh:

java -Xmx2048m -jar out/host/linux-x86/framework/signapk.jar -w build/target/product/security/testkey.x509.pem build/target/product/security/testkey.pk8 $1 update_new.zip
./sign_update.sh update.zip就可得到update_new.zip的签过名的更新包

5. 可以测试了