<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                目前在研究framework框架,AIL是Android初始化語言,以下是根據官方文檔進行的翻譯有助于研究Android啟動過程: Android初始化語言包含了四種類型的聲明:Actions(行動)、Commands(命令)、Services(服務)和Options(選項)。 所有這些都是以行為單位的,各種記號由空格來隔開。C語言風格的反斜杠號可用于在記號間插入空格。雙引號也可用于防止字符串被空格分割成多個記號。行末的反斜杠用于折行。 注釋行以井號(#)開頭(允許以空格開頭)。 Actions和Services聲明一個新的分組。所有的命令或選項都屬于最近申明的分組。位于第一個分組之前的命令或選項將會被忽略。 Actions和Services有唯一的名字。如果有重名的情況,第二個申明的將會被作為錯誤忽略。(???我們是否應該以覆蓋來代替忽略) Actions(行動) ---------- Actions其實就是一序列的Commands(命令)。Actions都有一個trigger(觸發器),它被用于決定action的執行時間。當一個符合action觸發條件的事件發生時,action會被加入到執行隊列的末尾,除非它已經在隊列里了。 隊列中的每一個action都被依次提取出,而這個action中的每個command(命令)都將被依次執行。Init在這些命令的執行期間還控制著其他的活動(設備節點的創建和注銷、屬性的設置、進程的重啟)。 Actions的形式如下: ??? on <trigger> ?????? <command> ?????? <command> ?????? <command> Services(服務) ---------- Services(服務)是一個程序,他在初始化時啟動,并在退出時重啟(可選)。Services(服務)的形式如下: ??? service <name> <pathname> [ <argument> ]* ?????? <option> ?????? <option> ?????? ... Options(選項) ---------- Options(選項)是一個Services(服務)的修正者。他們影響Services(服務)在何時,并以何種方式運行。 critical(關鍵) 說明這是一個對于設備關鍵的服務。如果他四分鐘內退出大于四次,系統將會重啟并進入recovery(恢復)模式。 disabled(失效) 說明這個服務不會同與他同trigger(觸發器)下的服務自動啟動。他必須被明確的按名啟動。 setenv <name> <value> (設置環境變量) 在進程啟動時將環境變量<name>設置為<value>。 socket <name> <type> <perm> [ <user> [ <group> ] ] 創建一個Uinx域的名為/dev/socket/<name> 的套接字,并傳遞它的文件描述符給已啟動的進程。<type> 必須是 "dgram"或"stream"。User 和 group默認為0。 user <username> 在啟動這個服務前改變該服務的用戶名。此時默認為root。(???有可能的話應該默認為nobody)。當前,如果你的進程要求Linux capabilities(能力),你無法使用這個命令。即使你是root,你也必須在程序中請求capabilities(能力)。然后降到你想要的uid。 group <groupname> [ <groupname> ]* 在啟動這個服務前改變該服務的組名。除了(必需的)第一個組名,附加的組名通常被用于設置進程的補充組(通過setgroups())。此時默認為root。(???有可能的話應該默認為nobody)。 oneshot 服務退出時不重啟。 class <name> 指定一個服務類。所有同一類的服務可以同時啟動和停止。如果不通過class選項指定一個類,則默認為"default"類服務。 onrestart 當服務重啟,執行一個命令(下詳)。 Triggers(觸發器) ---------- Triggers(觸發器)是一個用于匹配特定事件類型的字符串,用于使Actions(行動)發生。 boot 這是init執行后的第一個被觸發的Triggers(觸發器)。(在 /init.conf (啟動配置文件)被裝載之后) <name>=<value> 這種形式的Triggers(觸發器)會在屬性<name>被設置為指定的<value>時被觸發。 device-added-<path> device-removed-<path> 這種形式的Triggers(觸發器)會在一個設備節點文件被增刪時觸發。 service-exited-<name> 這種形式的Triggers(觸發器)會在一個特定的服務退出時觸發。 Commands(命令) ----------???? exec <path> [ <argument> ]* 創建和執行一個程序(<path>)。在程序完全執行前,init將會阻塞。由于它不是內置命令,應盡量避免使用exec,它可能會引起init卡死。(??? 是否需要一個超時設置?) export <name> <value> 在全局環境變量中設在環境變量 <name>為<value>。(這將會被所有在這命令之后運行的進程所繼承) ifup <interface> 啟動網絡接口<interface> import <filename> 解析一個init配置文件,擴展當前配置。 hostname <name> 設置主機名。 chmod <octal-mode> <path> 更改文件訪問權限。 chown <owner> <group> <path> 更改文件的所有者和組。 class_start <serviceclass> 啟動所有指定服務類下的未運行服務。 class_stop <serviceclass> 停止指定服務類下的所有已運行的服務。 domainname <name> 設置域名。 insmod <path> 加載<path>中的模塊。 mkdir <path> [mode] [owner] [group] 創建一個目錄<path>,可以選擇性地指定mode、owner以及group。如果沒有指定,默認的權限為755,并屬于root用戶和root組。 mount <type> <device> <dir> [ <mountoption> ]* 試圖在目錄<dir>掛載指定的設備。<device> 可以是以?[mtd@name](http://blog.163.com/kissinger_1984/blog/static/168992520099121305590/mtd@name)?的形式指定一個mtd塊設備。<mountoption>包括 "ro"、"rw"、"remount"、"noatime"、 ... setkey 待完成......(暫時不可用) setprop <name> <value> 設置系統屬性 <name> 為 <value>值. setrlimit <resource> <cur> <max> 設置<resource>的rlimit(資源限制)。 start <service> 啟動指定服務(如果此服務還未運行)。 stop <service> 停止指定服務(如果此服務在運行中)。 symlink <target> <path> 創建一個指向<path>的軟連接<target>。 sysclktz <mins_west_of_gmt> 設置系統時鐘基準(0代表時鐘滴答以格林威治平均時(GMT)為準) trigger <event> 觸發一個事件。用于將一個action與另一個 action排列。(?????) write <path> <string> [ <string> ]* 打開路徑為<path>的一個文件,并寫入一個或多個字符串。 Properties(屬性) ---------- Init更新一些系統屬性以提供對正在發生的事件的監控能力: init.action? 此屬性值為正在被執行的action的名字,如果沒有則為""。 init.command 此屬性值為正在被執行的command的名字,如果沒有則為""。 init.svc.<name> 名為<name>的service的狀態("stopped"(停止), "running"(運行), "restarting"(重啟))??????????????? init.conf實例 ----------------- ~~~ # not complete -- just providing some examples of usage # on boot ?? export PATH /sbin:/system/sbin:/system/bin ?? export LD_LIBRARY_PATH /system/lib ?? mkdir /dev ?? mkdir /proc ?? mkdir /sys ?? mount tmpfs tmpfs /dev ?? mkdir /dev/pts ?? mkdir /dev/socket ?? mount devpts devpts /dev/pts ?? mount proc proc /proc ?? mount sysfs sysfs /sys ?? write /proc/cpu/alignment 4 ?? ifup lo ?? hostname localhost ?? domainname localhost ?? mount yaffs2?[mtd@system](http://blog.163.com/kissinger_1984/blog/static/168992520099121305590/mtd@system)?/system ?? mount yaffs2?[mtd@userdata](http://blog.163.com/kissinger_1984/blog/static/168992520099121305590/mtd@userdata)?/data ?? import /system/etc/init.conf ?? class_start default service adbd /sbin/adbd ?? user adb ?? group adb service usbd /system/bin/usbd -r ?? user usbd ?? group usbd ?? socket usbd 666 service zygote /system/bin/app_process -Xzygote /system/bin --zygote ?? socket zygote 666 service runtime /system/bin/runtime ?? user system ?? group system on device-added-/dev/compass ?? start akmd on device-removed-/dev/compass ?? stop akmd service akmd /sbin/akmd ?? disabled ?? user akmd ?? group akmd ~~~ 調試記錄 --------------- 在默認情況下,程序在被init執行時會將標準輸出和標準錯誤都重定向到/dev/null(丟棄)。若你想要獲得調試信息,你可以通過Andoird系統中的logwrapper程序執行你的程序。它會將標準輸出/標準錯誤都重定向到Android日志系統(通過logcat訪問)。 例如: service akmd /system/bin/logwrapper /sbin/akmd 如有問題請留言,轉載注明出處。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看