文档章节

android刷机脚本update-script常用语法说明

江苏-柏灵
 江苏-柏灵
发布于 2012/04/12 13:28
字数 2354
阅读 3570
收藏 3
update-script脚本语法说明(根据android源代码中的recovery.c进行的定义):

文章来自各位网页发贴从中获取,非常感谢!

1.copy_dir

语法:copy_dir <src-dir> <dst-dir> [<timestamp>]

<src-dir>表示原文件夹,<dst-dir>表示目的文件夹,[<timestamp>]表示时间戳

作用:将<src-dir>文件夹中的内容复制到<dst-dir>文件夹中。<dst-dir>文件夹中的原始内容将会保存不变,除非<src-dir>文件夹中有相同的内容,这样<dst-dir>中的内容将被覆盖

举例:copy_dir PACKAGE:system SYSTEM:(将升级包中的system文件夹复制到手机中)


2.format

语法:format <root>

<root>表示要格式化的分区

作用:格式化一个分区

举例:format SYSTEM:(将手机/system分区完全格式化)

注意:格式化之后的数据是不可以恢复的


3.delete

语法:delete <file1> [... <fileN>]

<file1> [... <fileN>]表示要格式化的文件,可以是多个文件用空格隔开

作用:删除文件1,2到n

举例:delete SYSTEM:app/Calculator.apk(删除手机systen文件夹中app中的Calculator.apk文件)


4.delete_recursive

语法:delete_recursive <file-or-dir1> [... <file-or-dirN>]

<file-or-dir1> [... <file-or-dirN>]表示要删除的文件或文件夹,可以使多个,中间用空格隔开

作用:删除文件或者目录,删除目录时会将目录中的所有内容全部删除

举例:delete_recursive DATA:dalvik-cache(删除/data/dalvik-cache文件夹下的所有内容)


5.run_program

语法:run_program <program-file> [<args> ...]

<program-file>表示要运行的程序,[<args> ...]表示运行程序所加的参数

作用:运行终端程序

举例:run_program PACKAGE:install_busybox.sh(执行升级包中的install_busybox.sh脚本)


6.set_perm

语法:set_perm <uid> <gid> <mode> <path> [... <pathN>]

<uid>表示用户名称,<gid>表示用户组名称,<mode>,表示权限模式,<path> [... <pathN>]表示文件路径,可以使多个,用空格隔开

作用:设置单个文件或目录的所有者和权限,像linux中的chmod、chown或chgrp命令一样,只是集中在了一个命令当中

举例:set_perm 0 2000 0550 SYSTEM:etc/init.goldfish.sh(设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shell,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)


7.set_perm_recursive

语法:set_perm_recursive <uid> <gid> <dir-mode> <file-mode> <path> [... <pathN>]

<uid>表示用户,<gid>表示用户组,<dir-mode>表示文件夹的权限,<file-mode>表示文件的权限,<path> [... <pathN>]表示文件夹的路径,可以多个,用空格分开

作用:设置文件夹及文件夹中的文件的所有者和用户组

举例:set_perm_recursive 0 0 0755 0644 SYSTEM:app(设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作)


8.show_progress

语法:show_progress <fraction> <duration>

<表示一个小部分> <表示一个小部分的持续时间>

作用:为下面进行的程序操作显示进度条,进度条会根据<duration>进行前进,当操作时间是确定的时候会更快

举例:show_progress 0.1 0(显示进度条当操作完成后前进10%)


9.symlink

语法:symlink <link-target> <link-path>

<link-target>表示链接到的目标,<link-path>表示快捷方式的路径

作用:相当于linux中的ln命令,将<link-target>在<link-path>处创建一个软链接,<link-target>的格式应为绝对路径(或许相对路径也可以),<link-path>为“根目录:路径”的形式

举例:symlink /system/bin/su SYSTEM:xbin/su(在手机中system中的xbin中建立一个/system/bin/su的快捷方式)


10.assert <boolexpr>

作用:此命令用来判断表达式boolexpr的正确与否,当表达式错误时程序终止执行

※此作用有待验证



11.write_radio_image <src-image>

作用:将基带部分的镜像写入手机,<src-image>表示镜像文件

举例:write_radio_image PACKAGE:radio.img



12.write_hboot_image <src-image>

作用:将系统bootloader镜像写入手机,<src-image>表示镜像位置,此命令在直到在所有的程序安装结束之后才会起作用

举例:write_hboot_image PACKAGE:hboot.img



13.write_raw_image <src-image> <dest-root>

作用:将boot.img写入手机,里面包含了内核和ram盘

举例:write_raw_image PACKAGE:boot.img BOOT:


14.  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”


15. is_mounted(mount_point)
参数详解: mount_point-----------字符串,检查是否已经挂载的挂载点
作用解释: 检查文件系统是否挂载
返 回 值: 挂载成功则返回挂载点,失败返回null

16.unmount(mount_point)
参数详解: mount_point-----------字符串,要解除挂载的挂载点
作用解释: 解除文件系统挂载
返 回 值: 解除挂载成功则返回挂载点,失败返回null
函数示例: unmount("/system"); 卸载/system分区

17.  set_progress
函数语法: set_prograss(frac)
参数详解: frac---------------------进度数值

18. package_extract_dir(package_path, destination_path)
参数详解: package_path----------字符串,升级包内要提取的目录
        destination_path--------字符串,提取文件的目标目录
作用解释: 提取升级包内目录中的所有文件到指定的目标目录
函数示例: package_extract_dir("system", "/system");释放ROM包里system文件夹下所有文件和子文件夹至/system

19. 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

20. file_getprop(file, key)
参数详解: file----------------------字符串,要检查的文件名
        Key----------------------字符串,返回数据中的文件的键名字
作用解释: 在格式"key"="value"的文件中取得文件属性值

21.getprop(key)
参数详解: key---------------------字符串,想要系统返回的属性
作用解释: 这个函数是用来返指定的属性的值。它是用来从build.props文件中查询手机的信息的。

22. apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ..., sha1_x, patch1_x)
参数详解: srcfile-------------------字符串,要打补丁的源文件(要读入的文件)
        Tgtfile-------------------字符串,补丁文件要写入的目标文件
        tgtsha1-----------------字符串,写入补丁文件的目标文件的sha1哈希值
sha1_x------------------字符串,要写入目标文件的补丁数据的sha1哈希值 patch1_x----------------字符串,实际上应用到目标文件的补丁
作用解释: 这个函数是用来打补丁到文件。

23. apply_patch_check(file, sha1_1, ..., sha1_x)
参数详解: file----------------------字符串,要检查的文件
        sha1_x------------------要检查的哈希值
作用解释: 检查文件是否已经被打补丁,或者能不能被打补丁。需要检查“applypatch_check ”函数调用的源代码。

24. apply_patch_space(bytes)
参数详解: bytes-------------------检查的字节的数字
作用解释: 检查缓存来确定是否有足够的空间来写入补丁文件并返回一些数据。

25. read_file(filename)
参数详解: filename----------------字符串,要读取内容的文件名
作用解释: 这个函数返回文件的内容

26. sha1_check(data) 或 sha1_check(data, sha1_hex, ..., sha1_hexN)
参数详解: data---------------------要计算sha1哈希值的文件的内容-必须是只读文件格式
        sha1_hexN--------------文件数据要匹配的特定的十六进制sha1_hex哈希值字符串
作用解释: 如果只指定data参数,这个函数返回data参数的十六进制sha1_hex哈希值字符串。其他参数用来确认你检查的文件是不是列表中的哈希值的一个。 它返回匹配的哈希值,或者在没有匹配任何哈希值时返回空。 

27. ui_print(msg1, ..., msgN)
参数详解: msg----------------------字符串,要处理过程中输出给用户的信息
作用解释: 在脚本运行的时候,在控制台显示的信息。最少要指定1个参数,你可以指定额外的msg参数,并且它们会连接起来输了
函数示例: ui_print("It's ready!");屏幕打印It's ready!

28.  ifelse(condition, truecondition, falsecondition)
参数详解: condition----------------要运算的表达式
        Truecondition-----------当值为True时执行的 Edify脚本块
        Falsecodnition-----------当值为False时执行的 Edify脚本块
作用解释: 这是If-then结构的 Edify脚本语言。在真条件或非条件下语句可以是单条Edify命令或者脚本块。脚本块可以用圆括号来界定,用分号来隔开。

29. abort()
参数详解: 没有参数
作用解释: 中止脚本执行

30. 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




本文转载自:http://hi.baidu.com/mogoyu/blog/item/4c1f292a21bfda8d033bf6b1.html

江苏-柏灵
粉丝 1
博文 69
码字总数 7714
作品 0
南京
项目经理
私信 提问
加载中

评论(5)

江苏-柏灵
江苏-柏灵 博主

引用来自“孙延伟”的评论

我就是没有mount, delete不必mount吗,我的updater-script中删除 /system/app/下的apk包时没有 mount system分区,成功了的,挂载有什么后果,会不会重复挂载,小弟linux不怎的,还请指点

mount 在开机都是必须做的,只不过都配置好了,你不知道在哪,在刷机过程中,就是一个什么都没有挂载的空的东西交给你,所以在脚本中要先挂载都能操作,想要操作什么就必须挂载什么,基本上就三个位置,/SYSTEM /data /sdcard
孙延伟
孙延伟
我就是没有mount, delete不必mount吗,我的updater-script中删除 /system/app/下的apk包时没有 mount system分区,成功了的,挂载有什么后果,会不会重复挂载,小弟linux不怎的,还请指点
江苏-柏灵
江苏-柏灵 博主

引用来自“孙延伟”的评论

Samsung GT-S5660 S5660ZCKP9 Android 2.3.6 updater-script中使用 delete_recursive("/data/data/com.android.email")不起作用,兄台可知怎么解决?

先要Mount data区才行:
mount("ext4", "EMMC", "/dev/block/mmcblk0p26", "/data"); 这是4.0.4的,你找下2.3的分区格式
孙延伟
孙延伟
/data/data/com.android.email文件夹还存在,用 delete_recursive不起作用
孙延伟
孙延伟
Samsung GT-S5660 S5660ZCKP9 Android 2.3.6 updater-script中使用 delete_recursive("/data/data/com.android.email")不起作用,兄台可知怎么解决?
Android中文联系人排序及检索补丁的原理

Android中文联系人排序及检索补丁的原理(090819更新) 2009年4月26日,更新了源码和相关文件 很久以前做了这个补丁,有幸的是朋友们都还算喜爱它,没白费功夫。不少朋友来信问它的原理,现在...

LiSteven
2012/12/26
580
0
Android ROM DIY之MTK平台手机通用移植

在之前的文章中,我们讨论过ROM刷机原理,修改ROM包以及如何让ROM包获取root权限。那么接下来,我们谈谈MTK平台手机ROM移植的话题。如果你是ROM小白,那么建议可以先看看之前的文章。 ROM刷机...

MK_ROM
2015/10/27
2.1K
0
Android源代码为Galaxy nexus 编译

Android源代码为Galaxy nexus 编译 作者:JAROD 发布时间:JULY 29, 2012 分类:原创技术 google发布了Android 4.1的代码,但是不包含蓝牙、wifi、显卡等驱动,google将这些驱动单独提供下载...

天志雪狼
2013/05/26
997
0
简单易懂的Android ROM定制与修改教程

简单易懂的Android ROM定制与修改教程 每个人对手机都有不同的要求,这里我想谈谈我的修改ROM的方法,其中大部分是总结于论坛中其他帖子,有一小部分是自己总结的经验。玩Android手机可为个层...

庸人谷
2012/12/07
11K
2
Android系统Recovery工作原理之使用update.zip升级过程分析(八)---解...

Android系统Recovery工作原理之使用update.zip升级过程分析(八)---升级程序update_binary的执行过程 一、update_binary的执行过程分析 上一篇幅中的子进程所执行的程序binary实际上就是upd...

lxp198837
2012/06/26
733
0

没有更多内容

加载失败,请刷新页面

加载更多

springboot2.0 maven打包分离lib,resources

springboot将工程打包成jar包后,会出现获取classpath下的文件出现测试环境正常而生产环境文件找不到的问题,这是因为 1、在调试过程中,文件是真实存在于磁盘的某个目录。此时通过获取文件路...

陈俊凯
今天
5
0
BootStrap

一、BootStrap 简洁、直观、强悍的前端开发框架,让web开发更加迅速、简单 中文镜像网站:http://www.bootcss.com 用于开发响应式布局、移动设备优先的WEB项目 1、使用boot 创建文件夹,在文...

wytao1995
今天
10
0
小知识:讲述Linux命令别名与资源文件的区别

别名 别名是命令的快捷方式。为那些需要经常执行,但需要很长时间输入的长命令创建快捷方式很有用。语法是: alias ppp='ping www.baidu.com' 它们并不总是用来缩短长命令。重要的是,你将它...

老孟的Linux私房菜
今天
8
0
《JAVA核心知识》学习笔记(6. Spring 原理)-5

它是一个全面的、企业应用开发一站式的解决方案,贯穿表现层、业务层、持久层。但是 Spring 仍然可以和其他的框架无缝整合。 6.1.1. Spring 特点 6.1.1.1. 轻量级 6.1.1.2. 控制反转 6.1.1....

Shingfi
今天
8
0
Excel导入数据库数据+Excel导入网页数据【实时追踪】

1.Excel导入数据库数据:数据选项卡------>导入数据 2.Excel导入网页数据【实时追踪】:

东方墨天
今天
11
1

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部