android刷機腳本update-script經常使用語法說明

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
相關文章
相關標籤/搜索