|
Android系統(tǒng)recovery刷機腳本updater-script語法說明
這篇教程部分說明來源于網(wǎng)絡,主要為了讓大家了解updater-script語法和使用,以及熟悉權(quán)限的定義和如何使用
unmount
- unmount(mount_point);
- mount_point---是mount設置產(chǎn)生的值。作用與掛載相對應,卸載分區(qū)或設備。此函數(shù)與mount配套使用。
- unmount("/system"); 卸載/system分區(qū)
復制代碼
- format
- format(type, location);
- type="MTD" location=partition(分區(qū)),location參數(shù)代表分區(qū)。
- format("MTD", "system"); 格式化system分區(qū)
復制代碼
- mount
- mount(type, location, mount_point);
- type="MTD" location="" 掛載yaffs2文件系統(tǒng)分區(qū);type="vfat" location="/dev/block/" 掛載設備。
- mount("MTD", "system", "/system"); 掛載system分區(qū),返回值"/system”
- mount("ext4", "/dev/block/mmcblk1p2", "/system"); 掛載/dev/block/mmcblk1p2,返回值"/system”/system分區(qū)格式為ext4
- mount("vfat", "/dev/block/mmcblk1p2", "/system"); 掛載/dev/block/mmcblk1p2,返回值"/system”/system分區(qū)格式為vfat
復制代碼
- Delete
- delete();刪除文件
- delete("/data/zipalign.log"); 刪除文件/data/zipalign.log
復制代碼
- delete_recursive
- delete_recursive();刪除文件夾
- delete_recursive("/data/dalvik-cache");刪除文件夾/data/dalvik-cache
復制代碼
- show_progress
- show_progress(,);為下面進行的程序操作顯示進度條,進度條會根據(jù)設置的參數(shù)前進
- show_progress(0.1, 10);show_progress下面的操作可能進行10s,完成后進度條前進0.1(也就是10%)
復制代碼
- 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, destination_path);解壓package_path文件到destination_path目錄
- package_extract_dir("my.zip", "/system"); 解壓ROM包里的my.zip文件到/system目錄
復制代碼
- Symlink
- symlink(...);建立指向target符號鏈接src1,src2,也就是軟鏈接
- symlink("toolbox", "/system/bin/ps");建立指向toolbox的符號鏈接/system/bin/ps
復制代碼
- set_perm
- set_perm(...);設置文件的用戶為uid,用戶組為gid,權(quán)限為mode
- set_perm(1002, 1002, 0440, "/system/etc/dbus.conf"); 設置文件/system/etc/dbus.conf的所有者為1002,所屬用戶組為1002,權(quán)限為:所有者有讀權(quán)限,所屬用戶組有讀權(quán)限,其他無任何權(quán)限。
復制代碼
【語法】set_perm(<uid>,<gid>,<mode>, "<path>");
<uid>表示用戶名稱
<gid>表示用戶組名稱
<mode>表示權(quán)限模式
<path> 表示文件路徑,可以使多個,用空格隔開
【作用】設置單個文件或目錄的所有者和權(quán)限,像linux中的chmod、chown或chgrp命令一樣,只是集中在了一個命令當中
【舉例】set_perm(0,2000,0550,"system/etc/init.goldfish.sh")(設置手機system中的etc/init.goldfish.sh的用戶為root,用戶組為shell,所有者以及所屬用戶組成員可以進行讀取和執(zhí)行操作,其他用戶無操作權(quán)限)
【說明】在此命令中最難明白的是0 2000 0550這幾組參數(shù)所代表的意思,這是Linux相關的參數(shù)
具體如下:0代表用戶為root,2000代表用戶組為shell。0550這組數(shù)據(jù)的最后三位550,分別代表所有者\組用戶\其他用戶的權(quán)限,也就是我們在RE管理中“用戶\群組\其他”三行。
我們以XXX來表示這三組權(quán)限,其中:
×=4 讀的權(quán)限
×=2 寫的權(quán)限
×=1 執(zhí)行的權(quán)限
我們必須首先了解用數(shù)字表示的屬性含義:0表示沒有權(quán)限,1表示可執(zhí)行權(quán)限,2表示可寫權(quán)限,4表示可讀權(quán)限,然后將其相加。所以數(shù)字屬性的格式應為3個從0到7的八進制數(shù)。
例如:想讓某個文件的屬性有"讀/寫"兩種權(quán)限,需要把4(可讀)+2(可寫)=6(讀/寫)。若要rwx屬性則4+2+1=7;若要rw-屬性則4+2=6;若要r-x屬性則4+1=5。
常用修改權(quán)限的命令:
Set_perm 0 0 0600 ××× (只有所有者有讀和寫的權(quán)限)
Set_perm 0 0 0644 ××× (所有者有讀和寫的權(quán)限,組用戶只有讀的權(quán)限)
Set_perm 0 0 0700 ××× (只有所有者有讀和寫以及執(zhí)行的權(quán)限)
Set_perm 0 0 0666 ××× (每個人都有讀和寫的權(quán)限)
Set_perm 0 0 0777 ××× (每個人都有讀和寫以及執(zhí)行的權(quán)限)
范例 :
-rw------- (600) -- 只有用戶有讀寫權(quán)限。
-rw-r--r-- (644) -- 只有用戶有讀寫權(quán)限;而組用戶和其他用戶只有讀權(quán)限。
-rwx------ (700) -- 只有用戶有讀、寫、執(zhí)行權(quán)限。
-rwxr-xr-x (755) -- 用戶有讀、寫、執(zhí)行權(quán)限;而組用戶和其他用戶只有讀、執(zhí)行權(quán)限。
-rwx--x--x (711) -- 用戶有讀、寫、執(zhí)行權(quán)限;而組用戶和其他用戶只有執(zhí)行權(quán)限。
-rw-rw-rw- (666) -- 所有用戶都有文件讀、寫權(quán)限。這種做法不可取。
-rwxrwxrwx (777) -- 所有用戶都有讀、寫、執(zhí)行權(quán)限。更不可取的做法。
- set_perm_recursive
- set_perm_recursive(...);設置文件夾和文件夾內(nèi)文件的權(quán)限
- set_perm_recursive(1000, 1000, 0771, 0644, "/data/app"); 設置/data/app的所有者和所屬用戶組為1000,app文件夾的權(quán)限是:所有者和所屬組擁有全部權(quán)限,其他有執(zhí)行權(quán)限;
- app文件夾下的文件權(quán)限是:所有者有讀寫權(quán)限,所屬組有讀權(quán)限,其他有讀權(quán)限。
復制代碼
【語法】set_perm_recursive <uid> <gid> <dir-mode> <file-mode> <path> [...<pathN>]
<uid>表示用戶,<gid>表示用戶組,<dir-mode>表示文件夾的權(quán)限,<file-mode>表示文件的權(quán)限,<path> [... <pathN>]表示文件夾的路徑,可以多個,用空格分開
【作用】設置文件夾及文件夾中的文件的所有者和用戶組
【說明】其中<dir-mode> <file-mode>分別代表目錄和file的權(quán)限,具體參數(shù)如上述
【舉例】set_perm_recursive 0 0 0755 0644 SYSTEM:app(設置手機system/app文件夾及其中文件的用戶為root,用戶組為root,app文件夾權(quán)限為所有者可以進行讀、寫、執(zhí)行操作,其他用戶可以進行讀取和執(zhí)行操作,其中的文件的權(quán)限為所有者可以進行讀寫操作,其他用戶可以進行讀取操作)
下面是我們常用的兩組修改權(quán)限的命令:
一組是常規(guī)程序用RE管理器拷貝到system/app后修改的權(quán)限命令如下:
set_perm(0,0,0644,"/system/app/Calendar.apk");
一組是我們要移動dalvik-cache到cache過程中拷貝修改mot_boot_mode.bin命令如下:
set_perm(0,0,0755,"/system/bin");
- ui_print
- ui_print("pwelyn");屏幕打印輸出"pwelyn"
- ui_print("GR[GreatRom/GfanRom]"); 屏幕打印GR[GreatRom/GfanRom]
復制代碼
- run_program
- run_program();運行shell腳本
- run_program("/system/xbin/installbusybox.sh"); 運行installbusybox.sh腳本文件
復制代碼
- write_raw_image
- write_raw_image(, partition);寫入至partition分區(qū)
- write_raw_image("/tmp/boot.img", "boot")將boot.img直接寫入boot分區(qū)
復制代碼
- assert
- assert(...);如果執(zhí)行sub1不返回錯誤則執(zhí)行sub2,如果sub2不返回錯誤則執(zhí)行sub3一次類推。
- assert(package_extract_file("boot.img", "/tmp/boot.img"),
- write_raw_image("/tmp/boot.img", "boot"),
- delete("/tmp/boot.img")); 執(zhí)行package_extract_file,如果不返回錯誤則執(zhí)行write_raw_image,如果write_raw_image不出錯則執(zhí)行delete
復制代碼
- 刷機后自動重啟
- run_program("/sbin/sleep", "3");
- run_program("/sbin/reboot");
復制代碼
- 結(jié)束
教程結(jié)束感謝大家支持
|
上一篇: 安卓4.2設置背景白底黑字教程下一篇: android源碼中ccache使用及原理簡介
|