<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 189,comments - 115,trackbacks - 0
    創(chuàng)建一個刷機包,update-script腳本語法說明
    http://products.mobileuncle.com/viewthread.php?action=printable&tid=65251

    目前有好幾種方法來安裝軟件或是庫文件到你的Android手機上。你可以使用市場程序來查找并安裝軟件,也可以使用adb命令行工具來安裝或是發(fā)送文件到你的Android文件系統(tǒng)中。這些方法對于操作單個文件來說都挺方便的,但是如果你需要一次性安裝多個軟件或是庫文件時,那么最為方便的方法大概就是使用update.zip(也就是刷機包)文件了。Android系統(tǒng)使用恢復工具(recovery)來安裝這個update.zip文件中的軟件或庫文件到Android文件系統(tǒng)中。而一個ROM或是主題開發(fā)者通常都是使用這個方式來發(fā)布他們的作品(刷機包)。
          創(chuàng)建一個update.zip文件是很簡單的事情,你所需要做的就是將文件放置到與Android文件系統(tǒng)中相對應的文件夾中,然后編寫一個用來復制這些文件到手機對應位置的updater-script, 文件。作為舉例,本文會安裝Calculator.apk到system/app文件夾,復制libsec-ril.so文件到system/lib文件夾:新建一個空文件夾(本文例:C:\android)新建用來放置Calculator.apk的文件夾C:\android\system\app以及用來放置libsec-ril.so的文件夾C:\android\system\lib。創(chuàng)建用來放置update-script文件的文件夾C:\android\META-INF\com\google\android。
          創(chuàng)建一個名為updater-script的文件,其內(nèi)容如下:
    show_progress 0.1 0

    copy_dir PACKAGE:system SYSTEM:

    show_progress 0.1 10
    復制代碼
    行1和行5:顯示進度條
    行3:復制刷機包中的system文件夾到Android的/system
    注意:你應該在文件的最末尾多添加一個空行(也就是行6)將C:\android壓縮中的所有內(nèi)容壓縮為zip包(千萬記住:是壓縮android這個文件夾中的內(nèi)容,不是android文件夾本身)為android.zip簽名
    注意:你可以在這個帖子中找到為刷機包簽名的教程和工具將update.zip文件復制到SD卡中,然后手機進入recovery界面來刷入這個刷機包

    一. 基礎語法篇
    1.copy_dir
    語法:copy_dir <src-dir> <dst-dir> [<times**p>]
    <src-dir>表示原文件夾,<dst-dir>表示目的文件夾,[<times**p>]表示時間戳
    作用:將<src-dir>文件夾中的內(nèi)容復制到<dst-dir>文件夾中。<dst-dir>文件夾中的原始內(nèi)容將會保存不變,除非<src-dir>文件夾中有相同的內(nèi)容,這樣<dst-dir>中的內(nèi)容將被覆蓋
    舉例:copy_dir PACKAGE:system SYSTEM:(將升級包中的system文件夾復制到手機中)

    2.format
    語法:format <root>
    <root>表示要格式化的分區(qū)
    作用:格式化一個分區(qū)
    舉例:format SYSTEM:(將手機/system分區(qū)完全格式化)
    注意:格式化之后的數(shù)據(jù)是不可以恢復的

    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>]表示要刪除的文件或文件夾,可以使多個,中間用空格隔開
    作用:刪除文件或者目錄,刪除目錄時會將目錄中的所有內(nèi)容全部刪除
    舉例:delete_recursive DATA:dalvik-cache(刪除/data/dalvik-cache文件夾下的所有內(nèi)容)

    5.run_program
    語法:run_program <program-file> [<args> ...]
    <program-file>表示要運行的程序,[<args> ...]表示運行程序所加的參數(shù)
    作用:運行終端程序
    舉例:run_program PACKAGE:install_busybox.sh(執(zhí)行升級包中的install_busybox.sh腳本)

    6.set_perm
    語法:set_perm <uid> <gid> <mode> <path> [... <pathN>]
    <uid>表示用戶名稱,<gid>表示用戶組名稱,<mode>,表示權(quán)限模式,<path> [... <pathN>]表示文件路徑,可以使多個,用空格隔開
    作用:設置單個文件或目錄的所有者和權(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)限)

    7.set_perm_recursive
    語法:set_perm_recursive <uid> <gid> <dir-mode> <file-mode> <path> [... <pathN>]
    <uid>表示用戶,<gid>表示用戶組,<dir-mode>表示文件夾的權(quán)限,<file-mode>表示文件的權(quán)限,<path> [... <pathN>]表示文件夾的路徑,可以多個,用空格分開
    作用:設置文件夾及文件夾中的文件的所有者和用戶組
    舉例:set_perm_recursive 0 0 0755 0644 SYSTEM:app(設置手機system/app文件夾及其中文件的用戶為root,用戶組為root,app文件夾權(quán)限為所有者可以進行讀、寫、執(zhí)行操作,其他用戶可以進行讀取和執(zhí)行操作,其中的文件的權(quán)限為所有者可以進行讀寫操作,其他用戶可以進行讀取操作)

    8.show_progress
    語法:show_progress <fraction> <duration>
    <表示一個小部分> <表示一個小部分的持續(xù)時間>
    作用:為下面進行的程序操作顯示進度條,進度條會根據(jù)<duration>進行前進,當操作時間是確定的時候會更快
    舉例:show_progress 0.1 0(顯示進度條當操作完成后前進10%)

    9.symlink
    語法:symlink <link-target> <link-path>
    <link-target>表示鏈接到的目標,<link-path>表示快捷方式的路徑
    作用:相當于linux中的ln命令,將<link-target>在<link-path>處創(chuàng)建一個軟鏈接,<link-target>的格式應為絕對路徑(或許相對路徑也可以),<link-path>為“根目錄:路徑”的形式
    舉例:symlink /system/bin/su SYSTEM:xbin/su(在手機中system中的xbin中建立一個/system/bin/su的快捷方式)
    10.assert 
    語法:assert <boolexpr>
    作用:此命令用來判斷表達式boolexpr的正確與否,當表達式錯誤時程序終止執(zhí)行※此作用有待驗證

    11.package_extract_file/dir語法:package_extract_file(file/dir,file/dir)
    作用:提取包中文件/路徑
    舉例:package_extract_dir("system", "/system");
            package_extract_file("system/bin/modelid_cfg.sh", "/tmp/modelid_cfg.sh");


    12.write_radio_image
    語法:write_radio_image <src-image>
    作用:將基帶部分的鏡像寫入手機,<src-image>表示鏡像文件
    舉例:write_radio_image PACKAGE:radio.img

    13.write_hboot_image
    語法:write_hboot_image <src-image>
    作用:將系統(tǒng)bootloader鏡像寫入手機,<src-image>表示鏡像位置,此命令在直到在所有的程序安裝結(jié)束之后才會起作用
    舉例:write_hboot_image PACKAGE:hboot.img
    14.write_raw_image語法:write_raw_image <src-image> <dest-root>
    作用:將boot.img寫入手機,里面包含了內(nèi)核和ram盤
    舉例:write_raw_image PACKAGE:boot.img BOOT:


    二、根目錄以及分區(qū)的定義(在Android源代碼的root.c文件中定義)
    根目錄:        Linux 塊設備        /掛載點/        文件系統(tǒng)        大小        描述
    BOOT:        /dev/mtdblock[?]        /        (RAM)        Raw        內(nèi)核、內(nèi)存盤和引導配置。
    DATA:        /dev/mtdblock5        /data/        yaffs2        91904kb        用戶、系統(tǒng)配置,軟件配置以及軟件(沒有a2sd的話)
    CACHE:        /dev/mtdblock4        /cache/        yaffs2        30720kb        OTA緩存,recovery/更新配置及臨時文件夾
    MISC:        /dev/mtdblock[?]        N/A                Raw,[?]kb        (等待添加)
    PACKAGE:        (相對于刷機包)        N/A                        刷機包的偽文件系統(tǒng)。
    RECOVERY:        /dev/mtdblock[?]        /        (RAM)        Raw,[?]kb        recovery和更新環(huán)境的內(nèi)核和內(nèi)存盤。類似于BOOT:。
    SDCARD:        /dev/mmcblk0(p1)        /sdcard/        fat32        32MB-32GB        TF卡。通常刷機包就放在這里。
    SYSTEM:        /dev/mtdblock3        /system/        yaffs2        92160kb        系統(tǒng)分區(qū),靜態(tài)且是只讀的。
    TMP:                /tmp/        (RAM)        標準的Linux臨時文件夾        在關機/重啟時清空。

    三. 實例分析進階篇

    呵呵,大家來看看這段代碼是不是有種熟悉的感覺啊
    assert(getprop("ro.product.device") == "swift" || getprop("ro.build.product") == "swift" || getprop("ro.product.board") == "swift");
    package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
    set_perm(0, 0, 0777, "/tmp/backuptool.sh");
    run_program("/tmp/backuptool.sh", "backup");
    show_progress(0.500000, 0);
    format("yaffs2", "MTD", "system");
    mount("yaffs2", "MTD", "system", "/system");
    package_extract_dir("recovery", "/system");
    package_extract_dir("system", "/system");
    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("iwmulticall", "/system/xbin/iwconfig", "/system/xbin/iwgetid",
            "/system/xbin/iwlist", "/system/xbin/iwpriv",
            "/system/xbin/iwspy");
    symlink("toolbox", "/system/bin/cat", "/system/bin/cmp",
            "/system/bin/date", "/system/bin/dd", "/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/log", "/system/bin/lsmod",
            "/system/bin/mkdir", "/system/bin/nandread", "/system/bin/netstat",
            "/system/bin/newfs_msdos", "/system/bin/notify", "/system/bin/printenv",
            "/system/bin/ps", "/system/bin/reboot", "/system/bin/renice",
            "/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/uptime",
            "/system/bin/vmstat", "/system/bin/watchprops",
            "/system/bin/wipe");
    set_perm_recursive(0, 0, 0755, 0644, "/system");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/bin");
    set_perm(0, 3003, 02750, "/system/bin/netcfg");
    set_perm(0, 3004, 02755, "/system/bin/ping");
    set_perm(0, 2000, 06750, "/system/bin/run-as");
    set_perm_recursive(1002, 1002, 0755, 0440, "/system/etc/bluetooth");
    set_perm(0, 0, 0755, "/system/etc/bluetooth");
    set_perm(1000, 1000, 0640, "/system/etc/bluetooth/auto_pairing.conf");
    set_perm(3002, 3002, 0444, "/system/etc/bluetooth/blacklist.conf");
    set_perm(1002, 1002, 0440, "/system/etc/dbus.conf");
    set_perm(1014, 2000, 0550, "/system/etc/dhcpcd/dhcpcd-run-hooks");
    set_perm_recursive(0, 2000, 0755, 0750, "/system/etc/init.d");
    set_perm(0, 0, 0755, "/system/etc/init.d");
    set_perm(0, 2000, 0550, "/system/etc/init.goldfish.sh");
    set_perm(0, 0, 0544, "/system/etc/install-recovery.sh");
    set_perm_recursive(0, 0, 0755, 0555, "/system/etc/ppp");
    set_perm_recursive(0, 2000, 0755, 0755, "/system/xbin");
    set_perm(0, 0, 06755, "/system/xbin/hcitool");
    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.200000, 0);
    show_progress(0.200000, 10);
    package_extract_file("system/bin/backuptool.sh", "/tmp/backuptool.sh");
    set_perm(0, 0, 0777, "/tmp/backuptool.sh");
    run_program("/tmp/backuptool.sh", "restore");
    package_extract_file("system/bin/modelid_cfg.sh", "/tmp/modelid_cfg.sh");
    set_perm(0, 0, 0777, "/tmp/modelid_cfg.sh");
    run_program("/tmp/modelid_cfg.sh");
    package_extract_file("system/bin/verify_cache_partition_size.sh", "/tmp/verify_cache_partition_size.sh");
    set_perm(0, 0, 0777, "/tmp/verify_cache_partition_size.sh");
    run_program("/tmp/verify_cache_partition_size.sh");
    show_progress(0.200000, 10);
    assert(package_extract_file("boot.img", "/tmp/boot.img"),
           write_raw_image("/tmp/boot.img", "boot"),
           delete("/tmp/boot.img"));
    show_progress(0.100000, 0);
    unmount("/system");

    posted on 2011-09-19 17:47 MEYE 閱讀(889) 評論(0)  編輯  收藏 所屬分類: Android3D
    主站蜘蛛池模板: 免费观看无遮挡www的视频| 日韩毛片在线免费观看| 羞羞漫画在线成人漫画阅读免费 | 国产免费直播在线观看视频| 亚洲日韩精品无码专区| 在线视频免费国产成人| 日本激情猛烈在线看免费观看 | 无码囯产精品一区二区免费 | 18禁美女黄网站色大片免费观看| ASS亚洲熟妇毛茸茸PICS| 成年午夜视频免费观看视频| 亚洲av无码日韩av无码网站冲| 亚洲精品无码日韩国产不卡?V| 国产又黄又爽胸又大免费视频 | a级毛片免费高清毛片视频| 亚洲综合激情六月婷婷在线观看| 在线免费观看污网站| 中文字幕不卡高清免费| 免费福利资源站在线视频| 亚洲AV日韩综合一区| 亚洲日韩AV一区二区三区中文| 亚洲日韩乱码久久久久久| 亚洲男女内射在线播放| 哒哒哒免费视频观看在线www| 久久久免费精品re6| 免费人成又黄又爽的视频在线电影| 亚洲人AV在线无码影院观看| 亚洲乱理伦片在线观看中字| 亚洲欧洲专线一区| 亚洲国产成人无码AV在线| 亚洲国产精品久久久久婷婷软件| 久久久久久99av无码免费网站 | 亚洲国产V高清在线观看| 24小时在线免费视频| 5g影院5g天天爽永久免费影院| 99免费在线观看视频| 久久成人国产精品免费软件| 波多野结衣在线免费视频| jizz免费在线观看| 亚洲中文无码亚洲人成影院| 国产精品亚洲а∨无码播放|