码迷,mamicode.com
首页 > 编程语言 > 详细

关于Edify脚本语言

时间:2015-05-19 14:50:21      阅读:452      评论:0      收藏:0      [点我收藏+]

标签:edify   recovery   

目录


edify概述

edify是用来解析.zip文件,从而进一步安装Android系统的脚本语言。edify脚本并不一定是用于更新固件,它还可以用来替换、增加、删除特定的文件,甚至是格式化分区。通常情况下,edify脚本在recovery模式下flash zip包的时候运行。

edify有两个重要的文件,这两个文件可以在.zip文件中的META-INF/com/google/android文件夹中找到。它们分别是:

  1. update-binary : 当用户选择刷人.zip时执行的二进制解释器,是二进制文件。
  2. updater-script : edify语言描述的Android操作系统安装脚本,是文本文件。

edify语法

接下来,介绍一下edify语言常用的函数。


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");

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

format

语法

format(fs_type, partition_type, location);

作用

格式化指定的文件系统。

说明

  • fs_type:“yaffs2”或“ext4”
  • partition_type:“MTD”或“EMMC”
  • location:分区或驱动器

示例

format("ext4", "EMMC", "/cache");

delete

语法

delete(file1, file2, ..., fileN);

作用

删除文件。变长参数,支持删除多个文件。

示例

delete("/tmp/boot.img");

delete_recursive

语法

delete_recursive(<path>);

作用

递归删除目录。

示例

delete_recursive("/data/media/AppStoreWidget");

show_progress

语法

show_progress(fraction, duration);

作用

在recovery中为下面的程序操作显示进度条。进度条会根据duration前进fraction。

说明

  • fraction:进度完成数值,单位为百分比。
  • duration:总秒数,单位为秒。
  • M:基于CWM的recovery最大百分比为1.33,基于TWRP的recovery最大百分比为1。

示例

show_progress(0.950000, 50); (ps:show_progress后面的操作可能耗时50s,完成后进度条前进95%)

package_extract_dir

语法

package_extract_dir(package_path, destination_path);

作用

释放卡刷包中package_path的内容到destination_path。

示例

package_extract_dir("system", "/system"); (ps:释放rom包中system文件夹下所有文件和子文件夹至/system)

package_extract_file

语法

package_extract_file(file_path, destination_path);

作用

提取Rom包中的单个文件到指定目标目录。

示例

package_extract_file("boot.img", "/tmp/boot.img");

语法

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

作用

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

说明:

  • target:符号链接目标。
  • srcX:要创建的符号链接目标点。

示例

symlink("toolbox", "/system/bin/cat");

set_perm

语法

set_perm(uid, gid, mode, file1, file2, ..., fileN);

作用

设置单个文件或者多个文件的权限。

说明

  • uid:用户ID。
  • gid:用户组ID。
  • mode:权限。
  • file1:需要设置的文件路径。

示例

set_perm(0, 3004, 02755, "/system/bin/ping");

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

ui_print

语法

ui_print("str");

作用

recovery中打印出str字符串内容,类似于Java中的System.out.println();

示例

ui_print("+++++++++++++++++++++++++++++++++++++++++++++");

run_program

语法

run_program(path, arg1, ..., argN);

作用

以指定的参数执行程序。

说明:

  • path:要执行的程序路径
  • argX:运行参数信息

示例

run_program("/sbin/busybox", "mount", "/system");

write_raw_image

语法

write_raw_image(file_path, partition);

说明

  • file_path:要读取的img源文件。
  • partition:要写入img文件的目标分区。

示例

write_raw_image("/tmp/boot.img", "bootimg");

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")
);

file_getprop

语法

file_getprop(path, key);

作用

查看指定的path文件中是否包含key=value的字符串,如果包含,则返回value。

示例

file_getprop("/tmp/bob.txt", "cool") == "yes"

参考资料

  1. Doc:About Edify
  2. Edify scripts in CWM recovery
  3. AROMA图形化刷机

关于Edify脚本语言

标签:edify   recovery   

原文地址:http://blog.csdn.net/wzy_1988/article/details/45843411

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!