android 初始化语言,Android Init Language(安卓初始化语言)
android源碼學習目錄
了解Android init進程的都知道,啟動 init進程之前會解析init.rc文件,init.rc是Android的配置文件腳本,它由一種被稱為"Android初始化語言"--Android init Language 編寫。
1. android init language(簡稱 AIL)組成
動作--(Actions)
命令--(Commands)
服務--(Services)
選項--(Options)
2. 語法特性
AIL是面向行的代碼,也就是每一行是一條語句,回車就是分隔符,一個語句包含若干個tokens, token之間需要有空格分割符,如果token中有空格需要通過c語言風格的反斜杠('\')來轉義,或者使用雙引號將整個token包裹起來。反斜杠出現在末尾表示下一行任屬于當前語句。
以#開始的行為注釋,
AIL編寫分成多個(Section), 每個部分的開頭需要指定Actions或Services,也就是每個Actions和Services都是一個Section,所有的Commands和Options只能屬于定義的這個Section,
Actions和Services的名稱必須唯一,如果多個一樣的名字,后面聲明的將被忽略為一個錯誤。
3. Actions
Actions是被命名的命令(command)序列,由觸發器來決定這個actions什么時候發生,當一個時間觸發了一個符合的action觸發器,這個action就會被添加到處理隊列尾部(它已經存在在對列除外)。
在處理隊列中沒一個action都按照排序出列,action中的command也按照順序執行,
Actions的結構
on
?
?
?
如上:Actions以關鍵字 on 開頭,然后跟一個觸發器,接下來是若干命令。
觸發器
觸發器是一個字符串,用于匹配特定的事件,
#這個是boot觸發器, 下面三行是command
on boot
ifup lo
hostname localhost
domainname localdomain
4.Services
服務是初始化程序init需要啟動的一些程序,初始化程序可能在這些程序退出后重啟他們
Services的形式
service [ ] *
?
?
5.Options
選項屬于服務,它將影響初始化程序運行服務的時機和方法。可能的選項如下
選項
說明
disabled
此服務不會自動從其類啟動。它必須按名稱顯式啟動。
socket [ [ ] ]
創建一個名為/dev/socket/的unix域套接字,并將其fd傳遞給啟動的進程。有效的值包括dgram和stream。用戶和組默認為0。
user
在執行此服務之前更改為用戶名。當前默認為root
group [ ]*
在執行此服務之前更改為groupname。第一個組之外的其他組名(這是必需的)用于設置進程的其他組(使用set groups())。當前默認為root
capability [ ]+
在執行此服務之前設置linux功能
class
指定服務的類名。命名類中的所有服務必須一起啟動和停止。如果服務不是通過類選項指定的,則將其視為類“默認”。
oneshot
退出時不要重新啟動服務。
6.觸發器
上文中介紹過觸發器,這里列舉init.rc有的幾個
觸發器
功能
boot
這是init啟動時(加載/init.conf之后)發生的第一個觸發器。
=
當屬性設置為特定值時,會觸發此觸發器
device-added-device-removed-
當添加或刪除設備節點時,會觸發這些觸發器。
service-exited-
當指定服務退出時,將觸發這些觸發器。
7.指令--Commands
command是Actions的一部分,用于執行一條命名
command
說明
exec [ ]*
創建并執行程序()。這將阻塞直到程序完成執行。盡量避免執行。與內置命令不同的是,它會冒著讓init“卡住”的風險。
export
將全局環境中的環境變量設置為(執行此命令后啟動的所有進程都將繼承該變量)。
ifup
使網絡接口在線。
import
解析init配置文件,擴展當前配置。導入文件
hostname
Set the host name.
class_start
如果指定類的所有服務尚未運行,請啟動它們。
class_stop
如果指定類的所有服務當前正在運行,請停止這些服務。
domainname
設置域名。
insmod
下載模塊到path
mkdir
Make a directory at .
mount [ ]*
嘗試在目錄中掛載已命名設備。它的格式可以是mtd@name,以便按名稱指定mtd塊設備。
setkey
-當前未定義-
setprop
將系統屬性設置為。
setrlimit
為資源設置一個限制。
start
Start a service running if it is not already running.
symlink
用在處創建link。
write [ ]*
打開path處文件,并使用write(2)向文件寫入一個或多個字符
8.配置屬性
初始化程序(Init)可以根據需要修改一些系統的屬性。
屬性
說明
init.action
等于當前正在執行的操作的名稱,如果沒有,則為“”
init.command
等于正在執行的命令,如果沒有,則為“”
init.svc.
服務的狀態("stopped", "running", or "restarting").
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的android 初始化语言,Android Init Language(安卓初始化语言)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 客快物流大数据项目(二十九):下载CDH
- 下一篇: android java 调试快捷键_A