查看: 4096|回复: 19
打印 上一主题 下一主题

[实用教程] 安卓刷机脚本updater-script 的讲解与详述

[复制链接]

34

主题

0

好友

400

积分

首席导师组

  • TA的每日心情
    擦汗
    2014-6-5 10:17
  • 签到天数: 2 天

    [LV.1]初来乍到

    G币
    6
    最后登录
    2016-12-7
    注册时间
    2009-10-17

    管理员

    IP 编辑 禁止 帖子 清理

    跳转到指定楼层
    楼主
    发表于 2014-3-17 14:28 |只看该作者 |倒序浏览
    最近很多机油在问刷机脚本的问题,表示刷机脚本不会写,刷机脚本的详细解释本身网上就很详细了,这里我个人整理了一下,如有不妥之处还望指正。
    1. # 显示进度条的进度
    2. show_progress(1.000000, 0);
    3. # ui_print刷机时显示的提示,算是注释吧
    4. ui_print("Photon 4G MB855");
    5. ui_print("Formatting system.");
    6. # format格式化命令,EMMC百度百科去找吧。"ext3"文件系统,"/dev/block/mmcblk0p12"路径 这里根据不同机型分区也不一样
    7. format("ext3" ,"EMMC", "/dev/block/mmcblk0p12");
    8. # mount挂载命令,应该是挂载为可读 将"ext3" , "EMMC" , "/dev/block/mmcblk0p12"几个参数挂载为/system路径。通俗点就是说把"/dev/block/mmcblk0p12"改为了/system
    9. mount("ext3" , "EMMC" , "/dev/block/mmcblk0p12" , "/system");
    10. set_progress(0.050000);
    11. ui_print("Formatting data.");
    12. # 同上但是这里没有设置format命令,所以刷机后不会丢失用户数据,但也可以加入format命令。
    13. mount("ext3", "EMMC", "/dev/block/mmcblk0p16", "/data");
    14. set_progress(0.150000);
    15. ui_print("Installing data.");
    16. # 拷贝命令,将刷机包根目录的tmp拷贝到机器的/tmp
    17. package_extract_dir("tmp", "/tmp");
    18. # 设置/tmp/check_data_app的权限为777超级权限,以便后面的run_program运行命令
    19. set_perm(0, 0, 0777, "/tmp/check_data_app");
    20. # run_program运行命令,一般用来运行一些脚本命令。比如我可以把本刷机脚本精简只保留必要的,其他命令可以建一个脚本文件放倒刷机包,用这个命令运行,可达到同样效果
    21. run_program("/tmp/check_data_app");
    22. # 同上为拷贝命令,拷贝data到/data,一般需要内置可卸载apk时才用他
    23. package_extract_dir("data", "/data");
    24. # 删除文件命令,我刷机包/data/app下有一个placeholder文件,这个文件没有任何作用,只是能让/data/app文件夹不空不消失,刷机后用命令删除这个文件
    25. delete("/data/app/placeholder");
    26. # 设置权限,比上面的多了_recursive,可理解为设置文件夹及其下的文件的权限,两个1000分别是UID和GID,0771文件夹的权限设置,0644其下文件的权限,0644是机器里使用最多的。这里可以不用管,所有安卓系统的/data/app文件夹都是这个设置
    27. set_perm_recursive(1000, 1000, 0771, 0644, "/data/app");
    28. set_progress(0.300000);
    29. ui_print("Installing system.");
    30. # 同上,还是拷贝
    31. package_extract_dir("system", "/system");
    32. set_progress(0.400000);
    33. ui_print("Symlink.");
    34. # symlink软链接命令,可以理解为建立快捷方式吧?
    35. # 第一行,刷机包和机器里并没有cp这个文件,但是如果这个文件刷机会出错,不过现在使用的updater-script脚本可忽略大部分错误
    36. # 链接指向为motobox,motobox是什么我也不知道
    37. symlink("motobox", "/system/bin/cp");
    38. symlink("motobox", "/system/bin/[");
    39. symlink("motobox", "/system/bin/format");
    40. symlink("motobox", "/system/bin/masterclear");
    41. symlink("motobox", "/system/bin/md5sum");
    42. symlink("motobox", "/system/bin/ptf");
    43. symlink("motobox", "/system/bin/test");
    44. set_progress(0.450000);
    45. # toolbox同motobox一样的道理
    46. symlink("toolbox", "/system/bin/cat");
    47. symlink("toolbox", "/system/bin/chmod");
    48. symlink("toolbox", "/system/bin/chown");
    49. symlink("toolbox", "/system/bin/cmp");
    50. symlink("toolbox", "/system/bin/date");
    51. symlink("toolbox", "/system/bin/dd");
    52. symlink("toolbox", "/system/bin/df");
    53. symlink("toolbox", "/system/bin/dmesg");
    54. symlink("toolbox", "/system/bin/getevent");
    55. symlink("toolbox", "/system/bin/getprop");
    56. symlink("toolbox", "/system/bin/hd");
    57. symlink("toolbox", "/system/bin/id");
    58. symlink("toolbox", "/system/bin/ifconfig");
    59. symlink("toolbox", "/system/bin/iftop");
    60. symlink("toolbox", "/system/bin/insmod");
    61. symlink("toolbox", "/system/bin/ioctl");
    62. symlink("toolbox", "/system/bin/ionice");
    63. symlink("toolbox", "/system/bin/kill");
    64. symlink("toolbox", "/system/bin/ln");
    65. symlink("toolbox", "/system/bin/log");
    66. symlink("toolbox", "/system/bin/ls");
    67. symlink("toolbox", "/system/bin/lsmod");
    68. symlink("toolbox", "/system/bin/lsof");
    69. symlink("toolbox", "/system/bin/mkdir");
    70. symlink("toolbox", "/system/bin/mount");
    71. symlink("toolbox", "/system/bin/mv");
    72. symlink("toolbox", "/system/bin/nandread");
    73. symlink("toolbox", "/system/bin/netstat");
    74. symlink("toolbox", "/system/bin/newfs_msdos");
    75. symlink("toolbox", "/system/bin/notify");
    76. symlink("toolbox", "/system/bin/printenv");
    77. symlink("toolbox", "/system/bin/ps");
    78. symlink("toolbox", "/system/bin/reboot");
    79. symlink("toolbox", "/system/bin/renice");
    80. symlink("toolbox", "/system/bin/rm");
    81. symlink("toolbox", "/system/bin/rmdir");
    82. symlink("toolbox", "/system/bin/rmmod");
    83. symlink("toolbox", "/system/bin/route");
    84. symlink("toolbox", "/system/bin/schedtop");
    85. symlink("toolbox", "/system/bin/sendevent");
    86. symlink("toolbox", "/system/bin/setconsole");
    87. symlink("toolbox", "/system/bin/setprop");
    88. symlink("toolbox", "/system/bin/sleep");
    89. symlink("toolbox", "/system/bin/smd");
    90. symlink("toolbox", "/system/bin/start");
    91. symlink("toolbox", "/system/bin/stop");
    92. symlink("toolbox", "/system/bin/sync");
    93. symlink("toolbox", "/system/bin/top");
    94. symlink("toolbox", "/system/bin/umount");
    95. symlink("toolbox", "/system/bin/uptime");
    96. symlink("toolbox", "/system/bin/vmstat");
    97. symlink("toolbox", "/system/bin/watchprops");
    98. symlink("toolbox", "/system/bin/wipe");
    99. set_progress(0.500000);
    100. ui_print("Symlink PDS.");
    101. # 这里和上面的不同,我也无法理解工作原理。还是解释一下吧
    102. # 我的包里有pds这个文件,/pds/wifi已经不是上面的命令了,是一个路径,对pds文件使用此命令后,pds文件会变为文件夹,到底为什么我也不清楚,而且pds文件夹下会多一个文件
    103. symlink("/pds/wifi", "/system/etc/firmware/wifi/pds");
    104. ui_print("Symlink macxvi350.bin.");
    105. # 这个命令好解释,将/system/etc/wimax/mfg/macxvi350.bin的链接指向设置为它上层目录的macxvi350.bin,它的上层目录也就是/system/etc/wimax/mfg
    106. symlink("../macxvi350.bin", "/system/etc/wimax/mfg/macxvi350.bin");
    107. ui_print("Symlink preinstall.");
    108. # 这个貌似我只有在MOTO机器里才看到的,看意思是预安装,其实可以不用这个命令。但是我还是按照img文件给它建立了
    109. symlink("/preinstall", "/system/preinstall");
    110. # 这个权限设置一定要在最前,归递设置,慢慢体会吧!
    111. set_perm_recursive(0, 0, 0755, 0644, "/system");
    112. # 下面这些都是权限设置,就不解释了。肯定有人要问为什么数值不一样?因为他们所需的权限不同。具体要设置上面权限,得按照IMG文件来决定
    113. set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    114. set_perm(0, 1000, 00740, "/system/bin/encryption_test");
    115. set_perm(0, 3003, 02750, "/system/bin/netcfg");
    116. set_perm(0, 3004, 02755, "/system/bin/ping");
    117. set_perm(0, 2000, 06750, "/system/bin/run-as");
    118. set_perm(0, 1001, 04770, "/system/bin/pppd-ril");
    119. set_perm(0, 2000, 0755, "/system/etc/12m_files_copy.sh");
    120. set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    121. set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    122. set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    123. set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    124. set_perm(0, 0, 0755, "/system/etc/bluetooth");
    125. set_perm(1002, 1002, 0440, "/system/etc/bluetooth/audio.conf");
    126. set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
    127. set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
    128. set_perm(1002, 1002, 0440, "/system/etc/bluetooth/input.conf");
    129. set_perm(1002, 1002, 0440, "/system/etc/bluetooth/main.conf");
    130. set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    131. set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    132. set_perm(1000, 1000, 0755, "/system/xbin/sysro");
    133. set_perm(0, 0, 04755, "/system/bin/bash");
    134. #下面这行只有在增加nano功能的时候才会用到,官方原包是没有
    135. symlink("/system/bin/bash", "/system/bin/sh");
    136. set_perm(0, 0, 04755, "/system/xbin/nano");
    137. set_perm(0, 0, 04755, "/system/xbin/sysrw");
    138. set_perm(0, 0, 04755, "/system/xbin/sysro");
    139. set_perm(0, 0, 06755, "/system/bin/su");
    140. # su,ROOT需要它,还有上面那行权限
    141. symlink("/system/bin/su", "/system/xbin/su");
    142. set_progress(0.750000);
    143. set_perm(0, 1000, 0755, "/system/xbin/busybox");
    144. symlink("/system/xbin/busybox", "/system/bin/busybox");
    145. set_perm(0, 0, 0777, "/tmp/installbusybox");
    146. # 运行installbusybox脚本,里面包含busybox的安装脚本,安装后会产生很多链接符,这些链接符也可以用本脚本代替,但是这样多方便,工具自动生成。
    147. run_program("/tmp/installbusybox");
    148. set_progress(0.850000);
    149. ui_print("Installing boot.");
    150. # IMG写入命令一组,第一行拷贝,第二行写入,第三行删除;mmcblk0p11更具机型而定
    151. assert(package_extract_file("boot.img", "/cache/boot.img"),
    152. write_raw_image("/cache/boot.img", "/dev/block/mmcblk0p11"),
    153. delete("/cache/boot.img"));
    154. set_progress(0.970000);
    155. # unmount解除挂载命令
    156. unmount("/cache");
    157. unmount("/data");
    158. unmount("/system");
    159. ui_print("Installation is complete.");
    复制代码
    2

    查看全部评分

    分享到:
    i997报价  小魔仙连连看

    189

    主题

    3

    好友

    3682

    积分

    荣誉会员

    Rank: 3Rank: 3

  • TA的每日心情

    2016-11-26 09:32
  • 签到天数: 676 天

    [LV.9]以坛为家II

    G币
    7877
    最后登录
    2016-11-26
    注册时间
    2011-11-13

    IP 编辑 禁止 帖子 清理

    沙发
    发表于 2014-3-17 14:30 |只看该作者
    沙发                                          
    驯龙记下载  data interface驱动

    2

    主题

    0

    好友

    845

    积分

    GR 团队

    Rank: 3Rank: 3

  • TA的每日心情
    无聊
    2014-3-3 06:38
  • 签到天数: 7 天

    [LV.3]偶尔看看II

    G币
    739
    最后登录
    2016-9-7
    注册时间
    2011-12-18

    IP 编辑 禁止 帖子 清理

    板凳
    发表于 2014-3-17 14:44 |只看该作者
    做不了沙发了
    优酷视频播放器  中国专利下载

    241

    主题

    6

    好友

    6413

    积分

    副叫兽

    Rank: 13Rank: 13Rank: 13Rank: 13

  • TA的每日心情
    擦汗
    2017-1-22 11:12
  • 签到天数: 580 天

    [LV.9]以坛为家II

    G币
    5244
    最后登录
    2017-1-22
    注册时间
    2013-1-1

    IP 编辑 禁止 帖子 清理

    地板
    发表于 2014-3-17 14:47 |只看该作者
    支持啊,必须的
    盗版必究
    阿尔萨斯壁纸  三星s4吧

    4

    主题

    0

    好友

    634

    积分

    GR 团队

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    2016-12-22 12:58
  • 签到天数: 34 天

    [LV.5]常住居民I

    G币
    174
    最后登录
    2017-1-4
    注册时间
    2009-12-24

    IP 编辑 禁止 帖子 清理

    5
    发表于 2014-3-17 15:17 |只看该作者
    来学*了 感谢c大
    手机qq2.2  魅族mx3电池怎么样

    318

    主题

    1

    好友

    3442

    积分

    GR 团队

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    2016-11-14 12:35
  • 签到天数: 242 天

    [LV.8]以坛为家I

    G币
    3583
    最后登录
    2017-1-11
    注册时间
    2011-11-3

    IP 编辑 禁止 帖子 清理

    6
    发表于 2014-3-17 15:41 |只看该作者
    感谢分享
    ................................................................
             
    ................................................................
    憨憨居居去买面  类似dnf的网络游戏 

    1

    主题

    0

    好友

    146

    积分

    GR 团队

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    2016-6-7 00:12
  • 签到天数: 5 天

    [LV.2]偶尔看看I

    G币
    108
    最后登录
    2016-8-2
    注册时间
    2011-9-11

    IP 编辑 禁止 帖子 清理

    7
    发表于 2014-3-17 16:05 |只看该作者
    感谢分享!
    .................................
    gti9300  qq老是自动关闭 

    3

    主题

    0

    好友

    316

    积分

    GR 团队

    Rank: 3Rank: 3

  • TA的每日心情
    慵懒
    2016-1-11 15:13
  • 签到天数: 10 天

    [LV.3]偶尔看看II

    G币
    29
    最后登录
    2016-12-5
    注册时间
    2013-12-19

    IP 编辑 禁止 帖子 清理

    8
    发表于 2014-3-17 16:29 |只看该作者
    顶~~~~~
    跳蚤街 淘宝   手机解锁图案破解

    19

    主题

    0

    好友

    494

    积分

    GR 团队

    Rank: 3Rank: 3

  • TA的每日心情
    开心
    2014-2-28 20:35
  • 签到天数: 1 天

    [LV.1]初来乍到

    G币
    76
    最后登录
    2016-8-27
    注册时间
    2012-1-22

    IP 编辑 禁止 帖子 清理

    9
    发表于 2014-3-17 17:39 |只看该作者
    支持,好东西,慢慢看
    cm是什么意思   miui4.0

    9

    主题

    0

    好友

    205

    积分

    大学专科

    Rank: 5Rank: 5

  • TA的每日心情
    开心
    2014-6-2 13:57
  • 签到天数: 12 天

    [LV.3]偶尔看看II

    G币
    38
    最后登录
    2016-8-2
    注册时间
    2013-11-1

    IP 编辑 禁止 帖子 清理

    10
    发表于 2014-4-29 04:40 来自手机 |只看该作者
    来看看。
    明星衣橱  3d宅男
    高级模式
    B Color Image Link Quote Code Smilies @朋友 |上传

    举报|手机版|机锋网 ( 京ICP备15020343号 | 京公网安备11010802020450号

    GMT+8, 2017-1-24 21:35

    Powered by Discuz! X2.5

    © 2001-2012 Comsenz Inc.

    回顶部