Android 升級指令碼updater-script 的函數簡介

來源:互聯網
上載者:User

Android 升級指令碼updater-script 的函數簡介

這是Android系統來運行updater-scripts中的函數介紹。

函數都是的Edify語言,當調用這些函數結束的時候,會返回資料給指令碼。當然,你也可以使用這些函數的來確認成功與否,例如:

ifelse(mount("yaffs2", "MTD", "system", "/system") == "system", ui_print("Successfully Mounted!"), ui_print("Mount Failed!");


這個命令會嘗試去掛載命名為“system”的“MTD”分區到“/system”。如果掛載成功,指令碼會顯示“Successfully Mounted!”,否則會顯示“Mount Failed!”。


現面是用在Edify的updater-script中的函數例子:


函數名稱: mount

函數文法: 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”


函數名稱: is_mounted

函數文法: is_mounted(mount_point)

參數詳解: mount_point-----------字串,檢查是否已經掛載的掛載點

作用解釋: 檢查檔案系統是否掛載

返回值:掛載成功則返回掛載點,失敗返回null

函數樣本:


函數名稱: unmount

函數文法: unmount(mount_point)

參數詳解: mount_point-----------字串,要解除掛載的掛載點

作用解釋: 解除檔案系統掛載

返回值:解除掛載成功則返回掛載點,失敗返回null

函數樣本: unmount("/system"); 卸載/system分區


函數名稱: format

函數文法: format(fs_type, partition_type, location)

參數詳解: fs_type-----------------字串,資料為"yaffs2"或 "ext4"

partition_type----------字串, "MTD" "EMMC"

location-----------------字串,分區(partition)磁碟機(device)

作用解釋: 格式化為指定的檔案系統

函數樣本: format("MTD", "system");格式化system分區


函數名稱: delete

函數文法: delete(file1, file2, ..., fileN)

參數詳解: 字串,要刪除的檔案

作用解釋: 刪除一個檔案。最少指定一個檔案;多個檔案可以做為多個參數指定

函數樣本: delete("/data/zipalign.log");刪除檔案/data/zipalign.log


函數名稱: delete_recursive

函數文法: delete_recursive(dir1, dir2,...,dirN)

參數詳解: 字串,要遞迴刪除的目錄

作用解釋: 刪除檔案夾及其包含的所有內容。最少指定1個目錄;多個目錄可以做為多個參數指定

函數樣本: delete_recursive("/data/dalvik-cache");刪除檔案夾/data/dalvik-cache


函數名稱: show_progress

函數文法: show_progress(frac, sec)

參數詳解: frac----------------------進度完成數值

Sec----------------------總秒數

作用解釋: 顯示在Recovery系統中進度

函數樣本: show_progress(0.1, 10);show_progress下面的操作可能進行10s,完成後進度條前進0.1(也就是10%)


函數名稱: set_progress

函數文法: set_prograss(frac)

參數詳解: frac---------------------進度數值

函數樣本:


函數名稱: 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)或 package_extract_file(package_path, destination_path)

參數詳解: package_path----------字串,升級包內要提取的檔案

destination_path-------字串,提取檔案的目標目錄

作用解釋: 提取升級包內的單個檔案到指定的目標目錄

函數樣本: package_extract_file("my.zip", "/system");解壓ROM包裡的my.zip檔案至/system


函數名稱: file_getprop

函數文法: file_getprop(file, key)

參數詳解: file----------------------字串,要檢查的檔案名稱

Key----------------------字串,返回資料中的檔案的鍵名字

作用解釋: 在格式"key"="value"的檔案中取得檔案屬性值

函數樣本:


函數名稱: symlink

函數文法: symlink(target, src1, src2, ..., srcN)

參數詳解: target-------------------字串,符號連結的目標

srcX ---------------------字串,要建立的符號連結的目標點

作用解釋: 在建立新的符號連結之前,要斷開已經存在的符號連結

函數樣本: symlink("toolbox", "/system/bin/ps");建立指向toolbox的符號連結/system/bin/ps


函數名稱: set_perm

函數文法: set_perm(uid, gid, mode, file1, file2, ..., fileN)

參數詳解: uid----------------------使用者ID(user id)

Gid----------------------使用者組ID(group id)

Mode--------------------許可權模式(permission mode)

fileX---------------------要設定經過授權的檔案(file to set permission on)

作用解釋: 設定單個檔案或一系列檔案的許可權,最少指定1個檔案,前4個參數是必須的

函數樣本: set_perm(0,2000,0550, "system/etc/init.goldfish.sh");設定手機system中的etc/init.goldfish.sh的使用者為root,使用者組為shell,所有者以及所屬使用者群組成員可以進行讀取和執行操作,其他使用者無操作許可權)

這裡0代表使用者為root
2000代表使用者組為shell
我們來說明0550這組資料,這組資料的最後三位550,分別代表“所有者\組使用者\其他使用者”的許可權,也就是我們在RE管理中“使用者\群組\其他”三行。我們以XXX來表示這三組許可權,其中:
×=4 讀的許可權
×=2 寫的許可權
×=1 執行的許可權
我們必須首先瞭解用數字表示的屬性的含義: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 ××× (每個人都有讀和寫以及執行的許可權)

函數名稱: set_perm_recursive

函數文法: set_perm_recursive(uid, gid, dirmode, filemode, dir1, dir2, ...dirN)

參數詳解: uid----------------------使用者ID(user id)

Gid----------------------使用者組ID(group id)

Dirmode----------------指定目錄內的目錄的許可權

Filemode---------------指定目錄內的檔案的許可權

dirX---------------------要設定許可權的目標

作用解釋: 設定單個目錄或一系列目錄的裡面的所有檔案的許可權,最少指定1個目錄,5個參數都是必須的

函數樣本: set_perm_recursive 0 0 0755 0644 SYSTEM:app;設定手機system/app檔案夾及其中檔案的使用者為root,使用者組為root,app檔案夾許可權為所有者可以進行讀、寫、執行操作,其他使用者可以進行讀取和執行操作,其中的檔案的許可權為所有者可以進行讀寫操作,其他使用者可以進行讀取操作


函數名稱: getprop

函數文法: getprop(key)

參數詳解: key---------------------字串,想要系統返回的屬性

作用解釋: 這個函數是用來返指定的屬性的值。它是用來從build.props檔案中查詢手機的資訊的。

函數樣本:


函數名稱: write_raw_image

函數文法: write_raw_image(file, partition)

參數詳解: file----------------------字串,要讀取的Img源檔案

Partition-----------------字串,要寫入Img檔案的目標資料分割

作用解釋: 這個函數是用來寫Img檔案到分區

函數樣本: write_raw_image("/tmp/boot.img", "boot")將yaffs2格式的boot包直接寫入boot分區


函數名稱: apply_patch

函數文法: apply_patch(srcfile, tgtfile, tgtsha1, tgtsize, sha1_1, patch_1, ..., sha1_x, patch1_x)

參數詳解: srcfile-------------------字串,要打補丁的源檔案(要讀入的檔案)

Tgtfile-------------------字串,補丁檔案要寫入的目標檔案

tgtsha1-----------------字串,寫入補丁檔案的目標檔案的sha1雜湊值

sha1_x------------------字串,要寫入目標檔案的補丁資料的sha1雜湊值

patch1_x----------------字串,實際上應用到目標檔案的補丁

作用解釋: 這個函數是用來打補丁到檔案。

函數樣本:


函數名稱: apply_patch_check

函數文法: apply_patch_check(file, sha1_1, ..., sha1_x)

參數詳解: file----------------------字串,要檢查的檔案

sha1_x------------------要檢查的雜湊值

作用解釋: 檢查檔案是否已經被打補丁,或者能不能被打補丁。需要檢查“applypatch_check ”函數調用的原始碼。

函數樣本:


函數名稱: apply_patch_space

函數文法: apply_patch_space(bytes)

參數詳解: bytes-------------------檢查的位元組的數字

作用解釋: 檢查緩衝來確定是否有足夠的空間來寫入補丁檔案並返回一些資料。

函數樣本:


函數名稱: read_file

函數文法: read_file(filename)

參數詳解: filename----------------字串,要讀取內容的檔案名稱

作用解釋: 這個函數返迴文件的內容

函數樣本:


函數名稱: sha1_check

函數文法: sha1_check(data) sha1_check(data, sha1_hex, ..., sha1_hexN)

參數詳解: data---------------------要計算sha1雜湊值的檔案的內容-必須是唯讀檔案格式

sha1_hexN--------------檔案資料要匹配的特定的十六進位sha1_hex雜湊值字串

作用解釋: 如果只指定data參數,這個函數返回data參數的十六進位sha1_hex雜湊值字串。其他參數用來確認你檢查的檔案是不是列表中的雜湊值的一個。它返回匹配的雜湊值,或者在沒有匹配任何雜湊值時返回空。

函數樣本:


函數名稱: ui_print

函數文法: ui_print(msg1, ..., msgN)

參數詳解: msg----------------------字串,要處理過程中輸出給使用者的資訊

作用解釋: 在指令碼啟動並執行時候,在控制台顯示的資訊。最少要指定1個參數,你可以指定額外的msg參數,並且它們會串連起來輸了

函數樣本: ui_print("It's ready!");螢幕列印It's ready!


函數名稱: run_program

函數文法: run_program(prog, arg1, .., argN)

參數詳解: prog--------------------字串,要執行的程式

argN--------------------字串,要執行的程式的運行參數

作用解釋: 以指定的參執行程式

函數樣本: run_program("/system/xbin/installbusybox.sh");運行installbusybox.sh指令檔


函數名稱: ifelse

函數文法: ifelse(condition, truecondition, falsecondition)

參數詳解: condition----------------要運算的運算式

Truecondition-----------當值為True時執行的 Edify指令碼塊

Falsecodnition-----------當值為False時執行的 Edify指令碼塊

作用解釋: 這是If-then結構的 Edify指令碼語言。在真條件或非條件下語句可以是單條Edify命令或者指令碼塊。指令碼塊可以用圓括弧來界定,用分號來隔開。

函數樣本:


函數名稱: abort

函數文法: abort()

參數詳解: 沒有參數

作用解釋: 中止指令碼執行

函數樣本:


函數名稱: assert

函數文法: 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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.