Loading

updater-script语法说明

1、mount

语法:

mount(type, location, mount_point);

说明:

type="MTD"   location="<partition>" 挂载yaffs2文件系统分区;

type="vfat"  location="/dev/block/<whatever>"  挂载设备。

例如:

 

mount("MTD", "system", "/system");挂载system分区,设置返回指针"/system”

mount("vfat", "/dev/block/mmcblk1p2", "/system");

挂载/dev/block/mmcblk1p2,返回指针"/system”

2、Unmount

语法:

unmount(mount_point);

说明:

mount_point是mount所设置产生的指针。其作用与挂载相对应,卸载分区或设备。此函数与mount配套使用。

例如:

unmount("/system");

卸载/system分区

3、Format

语法:

format(type, location);

说明:

type="MTD"  location=partition(分区),格式化location参数所代表的分区。

例如:

format("MTD", "system");格式化system分区

4、Delete

语法:

delete(<path>);

说明:

删除文件<path>

例如:

delete("/data/zipalign.log");删除文件/data/zipalign.log

5、delete_recursive

语法:

delete_recursive(<path>);

说明:

删除文件夹<path>

例如:

delete_recursive("/data/dalvik-cache");删除文件夹/data/dalvik-cache

6、show_progress

语法:

show_progress(<fraction>,<duration>);

说明:

为下面进行的程序操作显示进度条,进度条会根据<duration>进行前进<fraction>

例如:

show_progress(0.1, 10);show_progress下面的操作可能进行10s,完成后进度条前进0.1(也就是10%)

7、package_extract_dir

语法:

package_extract_dir(package_path, destination_path);

说明:

释放文件夹package_path至destination_path

例如:

package_extract_dir("system", "/system");释放ROM包里system文件夹下所有文件和子文件夹至/system

8、package_extract_file

语法:

package_extract_file(package_path, destination_path);

说明:

解压package_path文件至destination_path

例如:

package_extract_dir("my.zip", "/system");解压ROM包里的my.zip文件至/system

9、Symlink

语法:

symlink(<target>, <src1>, <src2>,...);

说明:

建立指向target符号链接src1,src2,……

例如:

symlink("toolbox", "/system/bin/ps");建立指向toolbox的符号链接/system/bin/ps

10、set_perm

语法:

set_perm(<uid>, <gid>,<mode>, <path>);

说明:

设置<path>文件的用户为uid,用户组为gid,权限为mode

例如:

set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");设置文件/system/etc/dbus.conf的所有者为1002,所属用户组为1002,权限为:所有者有读权限,所属用户组有读权限,其他无任何权限。

11、set_perm_recursive

语法:

set_perm_recursive(<uid>,<gid>,<dir-mode>,<file-mode>,<path>);

说明:

设置文件夹和文件夹内文件的权限

例如:

set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");设置/data/app的所有者和所属用户组为1000,app文件夹的权限是:所有者和所属组拥有全部权限,其他有执行权限;app文件夹下的文件权限是:所有者有读写权限,所属组有读权限,其他有读权限。

12、ui_print

语法:

ui_print("str");

说明:

屏幕打印输出"str"

例如:

ui_print("It's ready!");屏幕打印It’s ready!

13、run_program

语法:

run_program(<path>);

说明:

运行<path>脚本

例如:

run_program("/system/xbin/installbusybox.sh");运行installbusybox.sh脚本文件

14、write_raw_image

语法:

write_raw_image(<path>, partition);

说明:

写入<path>至partition分区

例如:

write_raw_image("/tmp/boot.img", "boot")将yaffs2格式的boot包直接写入boot分区

15、assert

语法:

assert(<sub1>,<sub2>,<sub3>);

说明:

如果执行sub1不返回错误则执行sub2,如果sub2不返回错误则执行sub3一次类推。

例如:

assert(package_extract_file("boot.img", "/tmp/boot.img"),
write_raw_image("/tmp/boot.img", "boot"),
delete("/tmp/boot.img"));
执行package_extract_file,如果不返回错误则执行write_raw_image,如果write_raw_image不出错则执行delete

 

参考资料:

1.https://github.com/koush/android_bootable_recovery/blob/eclair/updater/install.c

2.http://wenku.baidu.com/view/49d6b7dace2f0066f53322d3.html

3.http://www.opda.com.cn/thread-266871-1-1.html

posted @ 2011-12-30 10:57  jevan  阅读(3890)  评论(0编辑  收藏  举报