为什么刷外国rom要替换刷机脚本错误

选择机型版块
三星/HTC/摩托罗拉
卓普/纽曼/锋达通/欧盛
查看: 959|回复: 2
求助----ROM内嵌刷机脚本出错
主题帖子积分
搞机新人, 积分 24, 距离下一级还需 56 积分
搞机新人, 积分 24, 距离下一级还需 56 积分
在线时间3 小时
ROM内嵌刷机脚本出错& && &&&尝试更换ROM解决& && &&&
刷14完整时也出错过,然后在贴吧下载的才刷上,21& &28升级包都出现上面问题,不知道什么情况,求助工作人员&&V967S&&
主题帖子积分
在线时间36 小时
&&rom内置脚本错误?&&是不是下载的时候中断造成的?&&
有蛙会更好!
主题帖子积分
搞机新人, 积分 24, 距离下一级还需 56 积分
搞机新人, 积分 24, 距离下一级还需 56 积分
在线时间3 小时
rom内置脚本错误?&&是不是下载的时候中断造成的?
没有中断,其他人也没有这种情况,刷了28完整包了,谢谢版主
乐蛙OS6勋章
参与乐蛙OS6换头像活动获取
关注乐蛙微信帐号您现在的位置: &
用刷机精灵刷机的时候显示失败并说ROM内嵌脚本错误
Lv3.初中生O粉
粉丝积分220经验213 精华0签到0天O币24
用刷机精灵刷机的时候显示失败并说ROM内嵌脚本错误是怎么回事儿,求大神告诉我
粉丝积分533经验517 精华0签到48天O币994
可能是刷机包有问题,或者就是你没有刷第三方recovery
Lv3.初中生O粉
粉丝积分100经验98 精华0签到0天O币0
Lv3.初中生O粉, 积分 100, 距离下一级还需 150 积分
我的手机也是,我想是我们删除了一些必备文件引起的
Lv3.初中生O粉
粉丝积分100经验98 精华0签到0天O币0
Lv3.初中生O粉, 积分 100, 距离下一级还需 150 积分
不知道哪里有得下载
8月19日 星期三7317人签到
我们总是在栀子花开的季节分离,怀着一丝紧张的期待,向往着新的生活。
颜值如此高的一枚自拍杆,怎么可以随随便便地用呢?一起来发现自拍杆的逗比玩法吧~
今天给大家带来一款很轻便的桌面软件,可以方便地快速切换,马上来看看吧~
强悍的激光对焦R7plus开箱与试拍《自拍神器来袭,有种放学别跑!》世界只因你而转,高颜值OPPO自拍杆逗比玩法1806人阅读
Android ROM 刷机脚本 updater-script 的基本流程和初级语句说明(转)
简单说说刷机脚本的相关知识, 以及简单的语句说明.
目的不是让你通过本帖学会如何做刷机脚本,那不是一下子可以做到的事情.
但是至少可以通过本帖子,让你对刷机脚本有一个初步的了解, 并且可以初步动手修改相对简单的内容, 例如制作升级包.
以下说明,都以我的Reflex S Data2Ext 2.0.2c 整包ROM为例子说明, 把update的过程流程化, 更加有助于理解.
首先说明刷机脚本的路径, 其实很多人,包括部分ROM作者, 都不知道这个文件的存在.位于刷机包的如下路径:
刷机过程其实很简单, 只要你理解了流程, 和相关的语句.
一般来说, 刷机就是如下的步骤:
大概步骤就这样, 这个过程非常明了和直接, 下面我具体举例说明各个步骤的做法.
1. 开始准备刷机.
开始最简单, 实际上就是就是检测硬件, 打印相关信息,提示开始刷机.
其中可能用到的部分函数做个简单介绍:
ui_print: 就是在recovery下打印文字给用户阅览.
getprop: 获取手机对应的属性
assert: 你可以理解为辅助执行多行脚本命令
例如如下我的部分开始代码:
首先开始答应一行空行,编译和之前的文字区别开来.
然后用assert完成对手机的产品设备型号的检测
最后打印, 开始安装该ROM.
这个过程是可选的,有的rom不需要wipe直接升级,就无需这个过程,有的ROM必须完全wipe才可以刷机,否则会出问题,那么rom作者为了担心
你因为没有wipe而导致出了问题, 就在脚本里面处理了,尽量帮助你避免产生问题.
例如我这个data2ext的ROM, 如果不wipe, 会产生一些问题, 例如FC, UID错误等, 就必须wipe, 但是为了不让用户的懒惰成为找我问问题的麻烦,我就主动帮他们”wipe”了所有必须wipe的内容.
其中可能用到的部分函数做个简单介绍:
fromat: 格式化相关区域的函数
delete_recursive: 可以直接删除一个目录.
如下我的部分代码摘抄如下:
首先打印我要开始清理cache了
然后格式化cache, 删除userdata下的dalvik-cache, 删除sd卡ext分区的dalvik-cache.
其实我这里代码还是有一些问题的,可能sdext都还没有挂载我就试图删除了.这个就属于脚本的隐患bug了.
3挂载和4释放文件, 我是按照区域来组合做的, 如下分别是userdata的处理和system的处理.
其中可能用到的部分函数做个简单介绍:
umount/mount: 分别是取消挂载和挂载相关的区域函数.
package_extract_dir: 你可以理解为复制刷机包内的指定目录到手机的指定区域.
为了避免出问题,首先取消挂载, 然后格式化该区域, 然后再挂载,确保挂载没有问题.
然后复制需要的文件.
5和6相比前面的一些内容,属于比较难懂一点的,需要有linux相关的知识, 不再更多阐述, 贴些代码,简单说下.
其中可能用上的部分函数介绍:
symlink: 所谓的符号链接, 当然, windows的用户不怎么容易了解, 建议多熟悉下Linux相关内容.
set_perm_recursive: 你可以理解为设置目录权限
如下代码, 连接../xbin/su到/system/bin/su这个程序.
如下代码,设置相关的权限.
至于刷入内核引导文件boot.img,
如下, 用assert函数实现了, 解压内核到临时区域, 写入内核文件, 删除临时文件的过程.
最后,结束, 取消挂载所有区域, 提示结束.
可能大家看了还是模模糊糊的, 没关系, 没有相关的知识, 确实不容易一下子看明白, 但是饭一口口吃, 知识也是一点点懂的, 抛砖引玉,希望给与大家一点点帮助
刷机过程其实很简单, 只要你理解了流程, 和相关的语句.
一般来说, 刷机就是如下的步骤:
大概步骤就这样, 这个过程非常明了和直接, 下面我具体举例说明各个步骤的做法.
1. 开始准备刷机.
开始最简单, 实际上就是就是检测硬件, 打印相关信息,提示开始刷机.
其中可能用到的部分函数做个简单介绍:
ui_print: 就是在recovery下打印文字给用户阅览.
getprop: 获取手机对应的属性
assert: 你可以理解为辅助执行多行脚本命令
例如如下我的部分开始代码:
首先开始答应一行空行,编译和之前的文字区别开来.
然后用assert完成对手机的产品设备型号的检测
最后打印, 开始安装该ROM.
这个过程是可选的,有的rom不需要wipe直接升级,就无需这个过程,有的ROM必须完全wipe才可以刷机,否则会出问题,那么rom作者为了担心
你因为没有wipe而导致出了问题, 就在脚本里面处理了,尽量帮助你避免产生问题.
例如我这个data2ext的ROM, 如果不wipe, 会产生一些问题, 例如FC, UID错误等, 就必须wipe, 但是为了不让用户的懒惰成为找我问问题的麻烦,我就主动帮他们”wipe”了所有必须wipe的内容.
其中可能用到的部分函数做个简单介绍:
fromat: 格式化相关区域的函数
delete_recursive: 可以直接删除一个目录.
如下我的部分代码摘抄如下:
首先打印我要开始清理cache了
然后格式化cache, 删除userdata下的dalvik-cache, 删除sd卡ext分区的dalvik-cache.
其实我这里代码还是有一些问题的,可能sdext都还没有挂载我就试图删除了.这个就属于脚本的隐患bug了.
3挂载和4释放文件, 我是按照区域来组合做的, 如下分别是userdata的处理和system的处理.
其中可能用到的部分函数做个简单介绍:
umount/mount: 分别是取消挂载和挂载相关的区域函数.
package_extract_dir: 你可以理解为复制刷机包内的指定目录到手机的指定区域.
为了避免出问题,首先取消挂载, 然后格式化该区域, 然后再挂载,确保挂载没有问题.
然后复制需要的文件.
5和6相比前面的一些内容,属于比较难懂一点的,需要有linux相关的知识, 不再更多阐述, 贴些代码,简单说下.
其中可能用上的部分函数介绍:
symlink: 所谓的符号链接, 当然, windows的用户不怎么容易了解, 建议多熟悉下Linux相关内容.
set_perm_recursive: 你可以理解为设置目录权限
如下代码, 连接../xbin/su到/system/bin/su这个程序.
如下代码,设置相关的权限.
至于刷入内核引导文件boot.img,
如下, 用assert函数实现了, 解压内核到临时区域, 写入内核文件, 删除临时文件的过程.
最后,结束, 取消挂载所有区域, 提示结束.
可能大家看了还是模模糊糊的, 没关系, 没有相关的知识, 确实不容易一下子看明白, 但是饭一口口吃, 知识也是一点点懂的, 抛砖引玉,希望给与大家一点点帮助.
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:86487次
积分:1514
积分:1514
排名:第14454名
原创:58篇
转载:24篇
(1)(1)(2)(1)(3)(1)(1)(8)(4)(9)(17)(1)(9)(8)(2)(7)(1)(6)【ROM修改教程】Android&ROM&刷机脚本&updater-script详细教程【收藏】
【内容来自安智骑士】什么是刷机脚本,为什么rom 是一个zip文件,确可以直接刷入?
为什么大家可以轻松做出补丁包,然后也可以刷入?为什么我直接把文件做成一个
zip包,却不行?因为zip包中有刷机脚本,指导着所有文件哪个该往哪儿放,哪个该删除,哪个目录什么权限,都说的明明白白,所以,,
刷机脚本都在哪儿呢?
细心的会发现,每一个软件或者刷机包,或者补丁包,都有一个目录,META-INF,
如果你动一个软件的刷机脚本,就是动了他的签名文件,必须重新签名(签名和给软件一样,简单的很,自己搜下)。
所以,CERT.RSA CERT.SF MANIFEST.MF 就没用了,先删除,签名之后生成新的。
我们要修改的东西主要是com-google-update-script我先贴出一个平时刷gapps补丁包时候用的最多的一个脚本大家看看,
ui_print("only for u");
show_progress(0.2, 0);
mount("ext4", "EMMC",
"/dev/block/mmcblk0p12", "/system");
show_progress(0.7, 0);
package_extract_dir("system",
"/system");
show_progress(0.1, 0);
unmount("/system");
忘了说一点,修改这个文件用 notepad++
这个文本软件,不多说,到处是。看上面第一句,ui_print("only for u8800
2.3");作用就是在你recovery刷机的时候显示 only for u8800
2.3引号内的内容可以自己随便修改。比如我自己的包中常用的:
第二句show_progress(0.2, 0);的意思就是
控制刷机时间和进度条,0 是自动,第二个都写0 就是了,前边的0.2是 进度条前进20% 这个无所谓,你都写0.1
也没有问题。甚至不写也行,就是你会看到 刷机的时候 进度条不动,然后嗖的一下 就刷完了。。
第三局:mount("ext4", "EMMC", "/dev/block/mmcblk0p12",
"/system");
意思是挂载system分区,也就是12分区,(13分区是data分区14分区是内置存储卡。)因为要往里面写入东西,当然需要先挂载,才能写入,对应的最后有一句是
卸载system分区unmount("/system"); 这是刷完机之后的。
第四句:真正起作用把文件刷入 系统中的是这句package_extract_dir("system",
"/system"); 意思就是 把手机中的system 插到你手机的system中(额,别想歪了)一个完整的system
包含很多个文件夹,如图。
你的目的如果是为了 把程序 增加到system,app中替换 那么只需要有system app
目录就行了,总之,你需要网手机中写入什么,就新建相对应的 文件夹名字,然后里面放入你要放的东西,如果手机中原来自带同名的,那么就覆盖。
当然不同的目录下需要有不同的权限,像是system-app下的程序需要 rw- r -r
就可以了,而有的不是,比如lib下,权限就要更高,就需要响应的脚本增加权限。后面会讲到。我刚开始举例子用的
补丁包是个gapps的补丁包,所有,目录只有system-app 如图。稍等来个完整的给大家看看。
再以dzo4.0为例 弄个完整的给大家看看,
里面所有的汉字都是我的解释。大家做刷机脚本的时候不需要有,我只是为了更好的给大家讲下,然后在后边列出各种命令的用法和格式,当然有些命令这个脚本中没有,比如删除文件等,灵活运用。
assert(getprop("ro.product.device") == "u8800"
|| getprop("ro.build.product") == "u8800" ||
getprop("ro.product.board") ==
"u8800");检查刷机包是不是给u8800用的
show_progress(0.);进度条前进百分之四十
format("ext4", "EMMC", "/dev/block/mmcblk0p12",
"0");格式化system分区
mount("ext4", "EMMC", "/dev/block/mmcblk0p12",
"/system");挂载system分区
mount("vfat", "EMMC", "/dev/block/mmcblk0p1",
"/cust");挂载cust(是为了最后写入boot.img的,因为boot单独在外边,不在system中而且也不是写入12分区的,写入boot.img的语句在倒数第五行)ui_print("Updating
SYSTEM...");
show_progress(0.5, 20);
package_extract_dir("system",
"/system");把刷机包中所有system下的目录和文件写入到12分区一下symlink的可以理解为创建快捷方式。
symlink("/factory/hdcp.keys",
"/system/vendor/firmware/hdcp.keys");
symlink("/persist/msm7630_qcom_wlan_nv.bin",
"/system/etc/firmware/wlan/volans/WCN1314_qcom_wlan_nv.bin");
symlink("Roboto-Bold.ttf",
"/system/fonts/DroidSans-Bold.ttf");
symlink("Roboto-Regular.ttf", "/system/fonts/DroidSans.ttf");
symlink("libwiperjni_v01.so", "/system/lib/libwiperjni.so");
symlink("mksh", "/system/bin/sh");
symlink("busybox", "/system/xbin/[", "/system/xbin/[[",
"/system/xbin/arp", "/system/xbin/ash", "/system/xbin/awk",
"/system/xbin/basename", "/system/xbin/bbconfig",
"/system/xbin/brctl",
"/system/xbin/bunzip2", "/system/xbin/bzcat",
"/system/xbin/bzip2",
"/system/xbin/cal", "/system/xbin/cat", "/system/xbin/catv",
"/system/xbin/chgrp", "/system/xbin/chmod",
"/system/xbin/chown",
"/system/xbin/chroot", "/system/xbin/cksum",
"/system/xbin/clear",
"/system/xbin/cmp", "/system/xbin/cp", "/system/xbin/cpio",
"/system/xbin/cut", "/system/xbin/date", "/system/xbin/dc",
"/system/xbin/dd", "/system/xbin/depmod",
"/system/xbin/devmem",
"/system/xbin/df", "/system/xbin/diff",
"/system/xbin/dirname",
"/system/xbin/dmesg", "/system/xbin/dnsd",
"/system/xbin/dos2unix",
"/system/xbin/du", "/system/xbin/echo", "/system/xbin/ed",
"/system/xbin/egrep", "/system/xbin/env",
"/system/xbin/expr",
"/system/xbin/false", "/system/xbin/fdisk",
"/system/xbin/fgrep",
"/system/xbin/find", "/system/xbin/fold",
"/system/xbin/free",
"/system/xbin/freeramdisk", "/system/xbin/fuser",
"/system/xbin/getopt",
"/system/xbin/grep", "/system/xbin/gunzip",
"/system/xbin/gzip",
"/system/xbin/head", "/system/xbin/hexdump",
"/system/xbin/id",
"/system/xbin/ifconfig", "/system/xbin/insmod",
"/system/xbin/install",
"/system/xbin/ip", "/system/xbin/kill",
"/system/xbin/killall",
"/system/xbin/killall5", "/system/xbin/length",
"/system/xbin/less",
"/system/xbin/ln", "/system/xbin/losetup", "/system/xbin/ls",
"/system/xbin/lsmod", "/system/xbin/lspci",
"/system/xbin/lsusb",
"/system/xbin/lzop", "/system/xbin/lzopcat",
"/system/xbin/md5sum",
"/system/xbin/mkdir", "/system/xbin/mke2fs",
"/system/xbin/mkfifo",
"/system/xbin/mkfs.ext2", "/system/xbin/mknod",
"/system/xbin/mkswap",
"/system/xbin/mktemp", "/system/xbin/modprobe",
"/system/xbin/more",
"/system/xbin/mount", "/system/xbin/mountpoint",
"/system/xbin/mv",
"/system/xbin/netstat", "/system/xbin/nice",
"/system/xbin/nohup",
"/system/xbin/nslookup", "/system/xbin/ntpd",
"/system/xbin/od",
"/system/xbin/patch", "/system/xbin/pgrep",
"/system/xbin/pidof",
"/system/xbin/ping", "/system/xbin/pkill",
"/system/xbin/printenv",
"/system/xbin/printf", "/system/xbin/ps", "/system/xbin/pwd",
"/system/xbin/rdev", "/system/xbin/readlink",
"/system/xbin/realpath",
"/system/xbin/renice", "/system/xbin/reset",
"/system/xbin/rm",
"/system/xbin/rmdir", "/system/xbin/rmmod",
"/system/xbin/route",
"/system/xbin/run-parts", "/system/xbin/sed",
"/system/xbin/seq",
"/system/xbin/setsid", "/system/xbin/sh",
"/system/xbin/sha1sum",
"/system/xbin/sha256sum", "/system/xbin/sha512sum",
"/system/xbin/sleep", "/system/xbin/sort",
"/system/xbin/split",
"/system/xbin/stat", "/system/xbin/strings",
"/system/xbin/stty",
"/system/xbin/swapoff", "/system/xbin/swapon",
"/system/xbin/sync",
"/system/xbin/sysctl", "/system/xbin/tac",
"/system/xbin/tail",
"/system/xbin/tar", "/system/xbin/tee",
"/system/xbin/telnet",
"/system/xbin/test", "/system/xbin/tftp",
"/system/xbin/time",
"/system/xbin/top", "/system/xbin/touch", "/system/xbin/tr",
"/system/xbin/traceroute", "/system/xbin/true",
"/system/xbin/tty",
"/system/xbin/tune2fs", "/system/xbin/umount",
"/system/xbin/uname",
"/system/xbin/uniq", "/system/xbin/unix2dos",
"/system/xbin/unlzop",
"/system/xbin/unzip", "/system/xbin/uptime",
"/system/xbin/usleep",
"/system/xbin/uudecode", "/system/xbin/uuencode",
"/system/xbin/vi",
"/system/xbin/watch", "/system/xbin/wc", "/system/xbin/wget",
"/system/xbin/which", "/system/xbin/whoami",
"/system/xbin/xargs",
"/system/xbin/yes",
"/system/xbin/zcat");
symlink("toolbox", "/system/bin/cat", "/system/bin/chmod",
"/system/bin/chown", "/system/bin/cmp", "/system/bin/date",
"/system/bin/dd", "/system/bin/df", "/system/bin/dmesg",
"/system/bin/getevent", "/system/bin/getprop",
"/system/bin/hd",
"/system/bin/id", "/system/bin/ifconfig",
"/system/bin/iftop",
"/system/bin/insmod", "/system/bin/ioctl",
"/system/bin/ionice",
"/system/bin/kill", "/system/bin/ln", "/system/bin/log",
"/system/bin/ls", "/system/bin/lsmod", "/system/bin/lsof",
"/system/bin/mkdir", "/system/bin/mount", "/system/bin/mv",
"/system/bin/nandread", "/system/bin/netstat",
"/system/bin/newfs_msdos", "/system/bin/notify",
"/system/bin/printenv",
"/system/bin/ps", "/system/bin/r", "/system/bin/reboot",
"/system/bin/renice", "/system/bin/rm", "/system/bin/rmdir",
"/system/bin/rmmod", "/system/bin/route",
"/system/bin/schedtop",
"/system/bin/sendevent", "/system/bin/setconsole",
"/system/bin/setprop", "/system/bin/sleep",
"/system/bin/smd",
"/system/bin/start", "/system/bin/stop", "/system/bin/sync",
"/system/bin/top", "/system/bin/touch", "/system/bin/umount",
"/system/bin/uptime", "/system/bin/vmstat",
"/system/bin/watchprops",
"/system/bin/wipe");
symlink("wiperiface_v01.so",
"/system/bin/wiperiface");下面的set_perm_recursive
是给文件夹赋予相应的权限。set_perm
是给文件赋予权限。大家自几看下不同文件夹和文件需要的权限,看到下面的数字是不是不懂什么意思?读r=4写w=2执行x=1对应的数相加
就是相应的权限。
【来自安卓阿木】注释:set_perm
【语法】set_perm(,
表示用户名称,表示用户组名称,,表示权限模式, [...
]表示文件路径,可以使多个,用空格隔开
【作用】设置单个文件或目录的所有者和权限,像linux中的chmod、chown或chgrp命令一样,只是集中在了一个命令当中
【举例】set_perm(0,,
"system/etc/init.goldfish.sh")(设置手机system中的etc/init.goldfish.sh的用户为root,用户组为shell,所有者以及所属用户组成员可以进行读取和执行操作,其他用户无操作权限)
【说明】在此命令中最难明白的是0 2000
0550这几组参数所代表的意思,我查了Linux相关的参数,具体如下:
这里0代表用户为root,2000代表用户组为shell。我们来说明0550这组数据,这组数据的最后三位550,分别代表所有者\组用户\其他用户的权限,也就是我们在RE管理中“用户\群组\其他”三行。
我们以XXX来表示这三组权限,其中:
执行的权限
我们必须首先了解用数字表示的属性的含义: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 &&& (每个人都有读和写以及执行的权限)
-rw------- (600)
-- 只有用户有读写权限。
-rw-r--r-- (644)
-- 只有用户有读写权限;而组用户和其他用户只有读权限。
-rwx------ (700)
-- 只有用户有读、写、执行权限。
-rwxr-xr-x (755)
-- 用户有读、写、执行权限;而组用户和其他用户只有读、执行权限。
-rwx--x--x (711)
-- 用户有读、写、执行权限;而组用户和其他用户只有执行权限。
-rw-rw-rw- (666)
-- 所有用户都有文件读、写权限。这种做法不可取。
-rwxrwxrwx (777)
-- 所有用户都有读、写、执行权限。更不可取的做法。
set_perm_recursive
【语法】set_perm_recursive
表示用户,表示用户组,表示文件夹的权限,表示文件的权限, [...
]表示文件夹的路径,可以多个,用空格分开
【作用】设置文件夹及文件夹中的文件的所有者和用户组
【说明】其中
分别代表目录和file的权限,具体参数如上述
【举例】set_perm_recursive 0 0 0755
SYSTEM:app(设置手机system/app文件夹及其中文件的用户为root,用户组为root,app文件夹权限为所有者可以进行读、写、执行操作,其他用户可以进行读取和执行操作,其中的文件的权限为所有者可以进行读写操作,其他用户可以进行读取操作)
下面是我们常用的两组修改权限的命令和截图:
一组是常规程序用RE管理器拷贝到system/app后修改的权限
命令如下:
set_perm(0,0,0644,"/system/app/Calendar.apk");
一组是我们要移动dalvik-cache到cache过程中拷贝修改mot_boot_mode.bin
命令如下:
set_perm(0,0,0755,"/system/bin/mot_boot_mode.bin");
以后自己做包的时候可以直接参考下面的内容
set_perm_recursive(0, 0, , "/system");
set_perm_recursive(0, , 0755, "/system/bin");
set_perm(0, , "/system/bin/diag_mdlog");
set_perm(0, , "/system/bin/iptables");
set_perm(0, , "/system/bin/netcfg");
set_perm(0, , "/system/bin/ping");
set_perm(0, , "/system/bin/run-as");
set_perm(0, , "/system/bin/tc");
set_perm_recursive(, ,
"/system/etc/bluetooth");
set_perm(0, 0, 0755, "/system/etc/bluetooth");
set_perm(, 0640,
"/system/etc/bluetooth/auto_pairing.conf");
set_perm(, 0444,
"/system/etc/bluetooth/blacklist.conf");
set_perm(, 0440, "/system/etc/dbus.conf");
set_perm(, 0550,
"/system/etc/dhcpcd/dhcpcd-run-hooks");
set_perm(0, , "/system/etc/init.goldfish.sh");
set_perm(, 0777, "/system/etc/init.qcom.sdio.sh");
set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
set_perm_recursive(0, 0, , "/system/etc/ppp");
set_perm_recursive(0, , 0644, "/system/vendor");
set_perm_recursive(0, , 0755, "/system/xbin");
set_perm(0, 0, 06755, "/system/xbin/librank");
set_perm(0, 0, 06755, "/system/xbin/procmem");
set_perm(0, 0, 06755, "/system/xbin/procrank");
set_perm(0, 0, 06755, "/system/xbin/su");
set_perm(0, 0, 06755, "/system/xbin/tcpdump");
show_progress(0.);
show_progress(0.);
ui_print("Updating BOOT Image...");
package_extract_file("boot.img",
"/cust/image/boot.img");这一行是写入boot.img
show_progress(0.1, 0);进度条走百分之十
unmount("/system");卸载system分区
unmount("/cust");卸载cust分区
ui_print("Installation complete!");显示安装结束
1、mount unmout 对应上面的就会了,后边无非是跟上地址
2、Format格式化,不解释了,一般只有一句,就是格式化下
system,上面讲了
删除命令,比如我做的本地补丁包,就用到了,这样可以不用格式化system
直接删除system中不用的响应程序比如,
delete("system/app/CMFM.apk");
delete("system/app/GooglePlayStore.apk");
delete("system/app/Email.apk");
delete("system/app/es.apk");
delete("system/app/Exchange.apk");
delete("system/app/GenieWidget.apk");
delete("system/app/Gmail.apk");
delete("system/app/GoogleBackupTransport.apk");
delete("system/app/GoogleCalendarSyncAdapter.apk");
delete("system/app/GoogleFeedback.apk");
delete("system/app/GoogleLoginService.apk");
4、delete_recursive删除文件夹的,用法同上例如:删除文件夹/data/dalvik-cache
5、show_progress 前面注释了很多次了
6、package_extract_dir 最常用的,写入东西的命令。前面
写入system就是用的这句,有印象吧,对应上面看看格式。
7、Symlink语法:symlink(, ,
,...);说明:建立指向target符号链接src1,src2,……例如:建立指向toolbox的符号链接/system/bin/ps8、set_perm
给文件赋予权限
8、set_perm(, ,,
);说明:设置文件的用户为uid,用户组为gid,权限为mode例如:设置文件/system/etc/dbus.conf的所有者为1002,所属用户组为1002,权限为:所有者有读权限,所属用户组有读权限,其他无任何权限。
9、set_perm_recursive给文件夹富裕权限,前面也说了语法:set_perm_recursive(,,,,);说明:设置文件夹和文件夹内文件的权限例如:设置/data/app的所有者和所属用户组为1000,app文件夹的权限是:所有者和所属组拥有全部权限,其他有执行权限;app文件夹下的文件权限是:所有者有读写权限,所属组有读权限,其他有读权限。
10、ui_print 不解释了吧。
11、run_program 这个是运行脚本的,比如我以前给大家增加的 bootloader,破解粉屏 的补丁,就是 执行了个
这个命令,运行脚本,写入文件的。语法:run_program();说明:运行脚本例如:运行installbusybox.sh脚本文件12、如果要让ROM自带的软件安装到DATA区
就必须挂载DATA区所以在刷机脚本里面要有挂载的命令刷机脚本的位置是\META-INF\com\google\android下的updater-script这个文件!format("ext3",
"EMMC", "/dev/block/mmcblk0p13");
这一行是格式格式化DATA分区的命令!!加入这行的话就不用机油去WIPE了直接刷就了事!!但是不包括CACHE!事实上无关大碍CACHE区基本没什么用!mount("ext3",
"EMMC", "/dev/block/mmcblk0p13", "/data");
挂载DATA区的命令package_extract_dir("data", "/data"); 将包里面的data 文件夹
覆盖DATA下!set_perm_recursive(, , "/data/app");
给/DATA/APP这个文件夹权限 !
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 内嵌刷机脚本出错 的文章

 

随机推荐