Android刷机脚本——updater-script

Posted Zhang Jun

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android刷机脚本——updater-script相关的知识,希望对你有一定的参考价值。

前言

updater-script是android手机刷入系统时的脚本文件,由它来决定Android系统需要刷入哪些内容,如何刷入。

语法

  1. mount
    语法: mount(fs_type, partition_type, location, mount_point)。
    作用:挂载一个文件系统到指定的挂载点。
    返回值:成功返回挂载点,失败返回null。
    说明:
    fs_type:“yaffs2”或“ext4”
    partition_type:“MTD”或“EMMC”
    location:分区(partition)或驱动器(device)
    mount_point:挂载文件系统的目标文件夹
    示例:mount(“ext4”, “EMMC”, “/dev/block/mmcblk0p8”, “/system”);

  2. unmount
    语法:unmount(mount_point)。
    作用:解除文件系统挂载。
    返回值:成功返回挂载点,失败返回null。
    示例:unmount(“/system”);

  3. format
    语法:format(fs_type, partition_type, location)
    作用:格式化指定的文件系统
    说明:
    fs_type:“yaffs2”或“ext4”
    partition_type:“MTD”或“EMMC”
    location:分区或驱动器
    示例:format(“ext4”, “EMMC”, “/cache”);

  4. delete
    语法:delete(file1, file2, …, fileN)
    作用:删除文件。变长参数,支持删除多个文件。
    示例:delete(“/tmp/boot.img”);

  5. delete_recursive
    语法:delete_recursive( )
    作用:递归删除目录。
    示例:delete_recursive(“/data/media/AppStoreWidget”)

  6. show_progress
    语法:show_progress(fraction, duration)
    作用:在recovery中为下面的程序操作显示进度条。进度条会根据duration前进fraction。
    说明:
    fraction:进度完成数值
    duration:总秒数
    示例:show_progress(0.950000, 50); (ps:show_progress后面的操作可能耗时50s,完成后进度条前进95%)

  7. package_extract_dir
    语法:package_extract_dir(package_path, destination_path);
    作用:释放卡刷包中package_path的内容到destination_path。
    示例:package_extract_dir(“system”, “/system”); (ps:释放rom包中system文件夹下所有文件和子文件夹至/system)

  8. package_extract_file
    语法:package_extract_file(file_path, destination_path);
    作用:提取Rom包中的单个文件到指定目标目录。
    示例:package_extract_file(“boot.img”, “/tmp/boot.img”);

  9. symlink
    语法:symlink(target, src1, src2, …);
    作用:建立指向target的符号链接src1、src2…
    说明:
    target:符号链接目标
    src1:要创建的符号链接目标点
    示例:symlink(“mksh”, “/system/bin/sh”);

  10. set_perm
    语法:set_perm(uid, gid, mode, file1, file2, …, fileN);
    作用:设置单个文件或者多个文件的权限。
    说明:
    uid:用户ID
    gid:用户组ID
    mode:权限
    file1:需要设置的文件路径
    示例:set_perm(0, 3004, 02755, “/system/bin/ping”);

  11. set_perm_recursive
    语法:set_perm_recursive(uid, gid, dir-mode, file-mode, path);
    作用:设置指定文件夹和文件夹中文件的权限。
    示例:set_perm_recursive(0, 0, 0755, 0644, “/system”);

  12. ui_print
    语法:ui_print(“str”);
    作用:recovery中打印出str字符串内容,类似于Java中的System.out.println();
    示例:ui_print(“+++++++++++++++++++++++++++++++++++++++++++++”);

  13. run_program
    语法:run_program(path, arg1, …, argN)
    作用:以指定的参数执行程序。
    说明:
    path:要执行的程序路径
    arg1:运行参数信息
    示例:run_program(“/sbin/busybox”, “mount”, “/system”);

  14. write_raw_image
    语法:write_raw_image(file_path, partition);
    说明:
    file_path:要读取的img源文件
    partition:要写入img文件的目标分区
    示例:write_raw_image(“/tmp/boot.img”, “bootimg”);

  15. assert
    语法:assert(condition1, …, conditionN);
    作用:如果condition的计算结果为false,则终止脚本的运行。
    示例:assert(package_extract_file(“boot.img”,“/tmp/boot.img”), write_raw_image(“/tmp/boot.img”,“bootimg”), delete(“/tmp/boot.img”));

案例

删除data/local下指定的文本文档

ui_print("delete txt..."); 
mount("ext4", "EMMC", "/dev/block/data", "/data"); 
delete("/data/local/aa.txt");
delete("/data/local/bb.txt");
unmount("/data");

以上是关于Android刷机脚本——updater-script的主要内容,如果未能解决你的问题,请参考以下文章

android ROM刷机updater-script单刷补丁包脚本

fastboot刷机小脚本

如何自己编译android系统并制作刷机包

Android Google 手机刷机 (Nexus 6p刷机及root)

Android刷机的一般步骤

Android 7.0怎么刷机/还原