这是Android系统来执行updater-scripts中的函数介绍。

函数都是的Edify语言。当调用这些函数结束的时候。会返回数据给脚本。当然,你也能够使用这些函数的来确认成功与否,比如:

ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Successfully Mounted!"), ui_print("Mount Failed!");

这个命令会尝试去挂载命名为“system”的“MTD”分区到“/system”。假设挂载成功,脚本会显示“Successfully Mounted!”,否则会显示“Mount
Failed!”。

现面是用在Edify的updater-script中的函数样例:

函数名称: mount

函数语法: mount(fs_type, partition_type, location, mount_point)

參数具体解释: fs_type-----------------"yaffs2" "ext4"

partition_type----------"MTD" "EMMC"

location-----------------分区(partition)
驱动器(device)

mount_poin------------挂载文件系统的目标目录(target folder to mount FS)

作用解释:
挂载一个文件系统到指定的挂载点

返回值:挂载成功则返回挂载点,失败返回null

函数演示样例: mount("MTD", "system", "/system");挂载system分区。设置返回指针"/system”

mount("vfat", "/dev/block/mmcblk1p2", "/system"); 挂载/dev/block/mmcblk1p2。返回指针"/system”

函数名称: is_mounted

函数语法: is_mounted(mount_point)

參数具体解释: mount_point-----------字符串。检查是否已经挂载的挂载点

作用解释:
检查文件系统是否挂载

返回值:挂载成功则返回挂载点。失败返回null

函数演示样例:

函数名称: unmount

函数语法: unmount(mount_point)

參数具体解释: mount_point-----------字符串。要解除挂载的挂载点

作用解释:
解除文件系统挂载

返回值:解除挂载成功则返回挂载点。失败返回null

函数演示样例:
unmount("/system"); 卸载/system分区

函数名称: format

函数语法: format(fs_type, partition_type, location)

參数具体解释: fs_type-----------------字符串,数据为"yaffs2"或 "ext4"

partition_type----------字符串, "MTD" "EMMC"

location-----------------字符串,分区(partition)
驱动器(device)

作用解释:
格式化为指定的文件系统

函数演示样例:
format("MTD", "system");格式化system分区

函数名称: delete

函数语法: delete(file1, file2, ..., fileN)

參数具体解释:
字符串,要删除的文件

作用解释:
删除一个文件。最少指定一个文件。多个文件能够做为多个參数指定

函数演示样例:
delete("/data/zipalign.log");删除文件/data/zipalign.log

函数名称: delete_recursive

函数语法: delete_recursive(dir1, dir2,...,dirN)

參数具体解释:
字符串,要递归删除的文件夹

作用解释:
删除文件夹及其包括的全部内容。最少指定1个文件夹;多个文件夹能够做为多个參数指定

函数演示样例:
delete_recursive("/data/dalvik-cache");删除目录/data/dalvik-cache

函数名称: show_progress

函数语法: show_progress(frac, sec)

參数具体解释: frac----------------------进度完毕数值

Sec----------------------总秒数

作用解释:
显示在Recovery系统中进度

函数演示样例:
show_progress(0.1, 10);show_progress以下的操作可能进行10s。完毕后进度条前进0.1(也就是10%)

函数名称: set_progress

函数语法: set_prograss(frac)

參数具体解释: frac---------------------进度数值

函数演示样例:

函数名称: package_extract_dir

函数语法: package_extract_dir(package_path, destination_path)

參数具体解释: package_path----------字符串,升级包内要提取的文件夹

destination_path--------字符串,提取文件的目标文件夹

作用解释:
提取升级包内文件夹中的全部文件到指定的目标文件夹

函数演示样例:
package_extract_dir("system", "/system");释放ROM包里system目录下全部文件和子目录至/system

函数名称: package_extract_file

函数语法: package_extract_file(package_path)或 package_extract_file(package_path, destination_path)

參数具体解释: package_path----------字符串,升级包内要提取的文件

destination_path-------字符串,提取文件的目标文件夹

作用解释:
提取升级包内的单个文件到指定的目标文件夹

函数演示样例:
package_extract_file("my.zip", "/system");解压ROM包里的my.zip文件至/system

函数名称: file_getprop

函数语法: file_getprop(file, key)

參数具体解释: file----------------------字符串,要检查的文件名称

Key----------------------字符串,返回数据中的文件的键名字

作用解释:
在格式"key"="value"的文件里取得文件属性值

函数演示样例:

函数名称: symlink

函数语法: symlink(target, src1, src2, ..., srcN)

參数具体解释: target-------------------字符串。符号链接的目标

srcX       ---------------------字符串,要创建的符号链接的目标点

作用解释:
在创建新的符号链接之前,要断开已经存在的符号链接

函数演示样例:
symlink("toolbox", "/system/bin/ps");建立指向toolbox的符号链接/system/bin/ps

函数名称: set_perm

函数语法: set_perm(uid, gid, mode, file1, file2, ..., fileN)

參数具体解释: uid----------------------用户ID(user id)

Gid----------------------用户组ID(group id)

Mode--------------------权限模式(permission mode)

fileX---------------------要设置许可的文件(file to set permission on)

作用解释:
设置单个文件或一系列文件的权限。最少指定1个文件,前4个參数是必须的

函数演示样例: set_perm(0,2000,0550, "system/etc/init.goldfish.sh")。设置手机system中的etc/init.goldfish.sh的用户为root。用户组为shell,全部者以及所属用户组成员能够进行读取和运行操作。其它用户无操作权限)

这里0代表用户为root

2000代表用户组为shell

我们来说明0550这组数据。这组数据的最后三位550,分别代表“全部者\组用户\其它用户”的权限,也就是我们在RE管理中“用户\群组\其它”三行。我们以XXX来表示这三组权限。当中:

×=4 读的权限

×=2 写的权限

×=1 运行的权限

我们必须首先了解用数字表示的属性的含义:0表示没有权限,1表示可运行权限,2表示可写权限,4表示可读权限,然后将其相加。

所以数字属性的格式应为3个从0到7的八进制数。

比如。假设想让某个文件的属主有"读/写"二种权限,须要把4(可读)+2(可写)=6(读/写)。

若要rwx属性则4+2+1=7;若要rw-属性则4+2=6;若要r-x属性则4+1=5。

经常使用改动权限的命令:

Set_perm 0 0 0600 ××× (仅仅有全部者有读和写的权限)

Set_perm 0 0 0644 ××× (全部者有读和写的权限,组用户仅仅有读的权限)

Set_perm 0 0 0700 ××× (仅仅有全部者有读和写以及运行的权限)

Set_perm 0 0 0666 ××× (每一个人都有读和写的权限)

Set_perm 0 0 0777 ××× (每一个人都有读和写以及运行的权限)

函数名称: set_perm_recursive

函数语法: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ...dirN)

參数具体解释: uid----------------------用户ID(user id)

Gid----------------------用户组ID(group id)

Dirmode----------------指定文件夹内的文件夹的权限

Filemode---------------指定文件夹内的文件的权限

dirX---------------------要设置权限的目标

作用解释:
设置单个文件夹或一系列文件夹的里面的全部文件的权限。最少指定1个文件夹。5个參数都是必须的

函数演示样例: set_perm_recursive 0 0 0755 0644 SYSTEM:app;设置手机system/app目录及当中文件的用户为root,用户组为root,app目录权限为全部者能够进行读、写、运行操作,其它用户能够进行读取和运行操作,当中的文件的权限为全部者能够进行读写操作,其它用户能够进行读取操作

函数名称: getprop

函数语法: getprop(key)

參数具体解释: key---------------------字符串,想要系统返回的属性

作用解释:
这个函数是用来返指定的属性的值。它是用来从build.props文件里查询手机的信息的。

函数演示样例:

函数名称: write_raw_image

函数语法: write_raw_image(file, partition)

參数具体解释: file----------------------字符串,要读取的Img源文件

Partition-----------------字符串,要写入Img文件的目标分区

作用解释:
这个函数是用来写Img文件到分区

函数演示样例:
write_raw_image("/tmp/boot.img", "boot")将yaffs2格式的boot包直接写入boot分区

函数名称: apply_patch

函数语法: apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ..., sha1_x, patch1_x)

參数具体解释: srcfile-------------------字符串,要打补丁的源文件(要读入的文件)

Tgtfile-------------------字符串。补丁文件要写入的目标文件

tgtsha1-----------------字符串。写入补丁文件的目标文件的sha1哈希值

sha1_x------------------字符串。要写入目标文件的补丁数据的sha1哈希值

patch1_x----------------字符串。实际上应用到目标文件的补丁

作用解释:
这个函数是用来打补丁到文件。

函数演示样例:

函数名称: apply_patch_check

函数语法: apply_patch_check(file, sha1_1, ..., sha1_x)

參数具体解释: file----------------------字符串。要检查的文件

sha1_x------------------要检查的哈希值

作用解释:
检查文件是否已经被打补丁。或者能不能被打补丁。

须要检查“applypatch_check
”函数调用的源码。

函数演示样例:

函数名称: apply_patch_space

函数语法: apply_patch_space(bytes)

參数具体解释: bytes-------------------检查的字节的数字

作用解释:
检查缓存来确定是否有足够的空间来写入补丁文件并返回一些数据。

函数演示样例:

函数名称: read_file

函数语法: read_file(filename)

參数具体解释: filename----------------字符串,要读取内容的文件名称

作用解释:
这个函数返回文件的内容

函数演示样例:

函数名称: sha1_check

函数语法: sha1_check(data) sha1_check(data, sha1_hex, ..., sha1_hexN)

參数具体解释: data---------------------要计算sha1哈希值的文件的内容-必须是仅仅读文件格式

sha1_hexN--------------文件数据要匹配的特定的十六进制sha1_hex哈希值字符串

作用解释:
假设仅仅指定data參数。这个函数返回data參数的十六进制sha1_hex哈希值字符串。

其它參数用来确认你检查的文件是不是列表中的哈希值的一个。它返回匹配的哈希值。或者在没有匹配不论什么哈希值时返回空。

函数演示样例:

函数名称: ui_print

函数语法: ui_print(msg1, ..., msgN)

參数具体解释: msg----------------------字符串,要处理过程中输出给用户的信息

作用解释:
在脚本执行的时候。在控制台显示的信息。最少要指定1个參数,你能够指定额外的msg參数。而且它们会连接起来输了

函数演示样例: ui_print("It's
ready!");屏幕打印It's ready!

函数名称: run_program

函数语法: run_program(prog, arg1, .., argN)

參数具体解释: prog--------------------字符串。要运行的程序

argN--------------------字符串,要执行的程序的执行參数

作用解释:
以指定的參运行程序

函数演示样例:
run_program("/system/xbin/installbusybox.sh");执行installbusybox.sh脚本文件

函数名称: ifelse

函数语法: ifelse(condition, truecondition, falsecondition)

參数具体解释: condition----------------要运算的表达式

Truecondition-----------当值为True时运行的 Edify脚本块

Falsecodnition-----------当值为False时运行的 Edify脚本块

作用解释:
这是If-then结构的 Edify脚本语言。在真条件或非条件下语句能够是单条Edify命令或者脚本块。脚本块能够用圆括号来界定,用分号来隔开。

函数演示样例:

函数名称: abort

函数语法: abort()

參数具体解释:
没有參数

作用解释:
中止脚本运行

函数演示样例:

函数名称: assert

函数语法: assert(condition)

參数具体解释: condition---------------boolean

作用解释:
假设condition參数的计算结果为False。则停止脚本运行,否则继续运行脚本

函数演示样例: 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

Android 升级脚本updater-script 的函数简单介绍的更多相关文章

  1. Android(Lollipop/5.0) Material Design(一) 简单介绍

    Material Design系列 Android(Lollipop/5.0)Material Design(一) 简单介绍 Android(Lollipop/5.0)Material Design( ...

  2. ANDROID培训准备资料之四大组件的简单介绍

    Android四大组件是一个android app 最基本的组成部分,这篇博客主要给大家简单的介绍一下四种组件 (1)Activities (2)Services (3)BroadcastReceiv ...

  3. javascrip函数简单介绍

    JavaScript 函数定义JavaScript 使用关键字 function 定义函数.函数可以通过声明定义,也可以是一个表达式.函数声明在之前的教程中,你已经了解了函数声明的语法 :functi ...

  4. day4_函数简单介绍

    一.函数是什么? 函数一词来源于数学,但编程中的「函数」概念,与数学中的函数是有很大不同的,编程中的函数在英文中也有很多不同的叫法.在BASIC中叫做subroutine(子过程或子程序),在Pasc ...

  5. scoket常用函数简单介绍

    scoket:   是一种抽象层,应用程序通过它来发送和接收数据,使用socket可以将应用程序添加到网络中,与处于同一网络中的其他应用程序进行通信. 简单来说,scoket提供了程序内部与外界通道的 ...

  6. linux常用函数简单介绍

    mmap函数简介: mmap函数是unix/linux下的系统调用,来看<Unix Netword programming>卷二12.2节对mmap的介绍: The mmap functi ...

  7. 【python】tile函数简单介绍

    转:https://blog.csdn.net/april_newnew/article/details/44176059格式:tile(A,reps)* A:array_like* 输入的array ...

  8. 自动化工具之Appium工具简单介绍

    背景 自动化,性能测试,接口测试,开发平台等工作,到底测试的价值在哪里,其实价值来源不断充实与为大众服务,今天简单介绍ui小工具appium攻击. 简单介绍 Appium 是一个自动化测试开源工具,支 ...

  9. Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解析并执行升级脚本updater-script【转】

    本文转载自:http://blog.csdn.net/mu0206mu/article/details/7465551  Android系统Recovery工作原理之使用update.zip升级过程分 ...

随机推荐

  1. 趁热打铁学node

    前言 不废话直接官网下载安装. windows安装很简单,双击ok. 完成后命令行输入node -v. 会提示版本号,说明安装成功(Node.js 还自动附带安装了 npm,类似ruby的gem). ...

  2. Git_远程仓库

    到目前为止,我们已经掌握了如何在Git仓库里对一个文件进行时光穿梭,你再也不用担心文件备份或者丢失的问题了. 可是有用过集中式版本控制系统SVN的童鞋会站出来说,这些功能在SVN里早就有了,没看出Gi ...

  3. Aptana studio 3配色方案的修改方法

    http://www.weste.net/2013/1-29/88614.html Aptana studio 3的确是一个不错的IDE,但是默认的黑底白色代码样式看时间长了有点审美疲劳了,如何能够更 ...

  4. 【Eclipse提高开发速度-插件篇】安装多语言Propertys编辑工具

    安装的的时候能够通过 Help>Eclipse Marketplace的 搜索方式安装 或者 Help>Install New Software Name:Propertys URL:ht ...

  5. 经常使用哈希函数的比較及其C语言实现

    基本概念 所谓完美哈希函数.就是指没有冲突的哈希函数.即对随意的 key1 != key2 有h(key1) != h(key2). 设定义域为X,值域为Y, n=|X|,m=|Y|.那么肯定有m&g ...

  6. 斑马Zebra驱动下载

    Zebra GT800 点击进入下载页-> 自动安装包[WINXP/WIN7/WIN8]点击进入下载页-> 添加打印机向导[WINXP/WIN7/WIN8]   热门下载 · Zebra ...

  7. Apple Developer Registration and DUNS Number Not Accepted

    Now that I have my Mac and app source code. I’m ready to start working on my first app. The next ste ...

  8. 仿LOL项目开发第七天

    仿LOL项目开发第七天 by 草帽 不知不觉已经写到了第七篇这种类型的博客,但是回过头看看之前写的,发现都只能我自己能看懂. 我相信在看的童鞋云里雾里的,因为我基本上没怎么详细讲一个脚本怎么用?但是你 ...

  9. PHP SQL防注入

    过年前后在做一个抽奖的东西,需要用户填写中奖信息,为了防止非法用户对数据库进行入侵神马的,于是写下基本的防注入语句,需要用的可以自己封装成一个function. $str = str_replace( ...

  10. C++常用排序法、随机数

    C++常用排序法研究 2008-12-25 14:38 首先介绍一个计算时间差的函数,它在<time.h>头文件中定义,于是我们只需这样定义2个变量,再相减就可以计算时间差了. 函数开头加 ...