編輯:關於Android編程
init.rc 文件並不是普通的配置文件,而是由一種被稱為“Android初始化語言”(Android Init Language,這裡簡稱為AIL)的腳本寫成的文件。
AIL由如下4部分組成:
1. 動作(Actions)
2. 命令(Commands)
3.服務(Services)
4. 選項(Options)
這4部分都是面向行的代碼,也就是說用回車換行符作為每一條語句的分隔符。而每一行的代碼由多個符號(Tokens)表示。可以使用反斜槓轉義符在 Token中插入空格。雙引號可以將多個由空格分隔的Tokens合成一個Tokens。如果一行寫不下,可以在行尾加上反斜槓,來連接下一行。也就是說,可以用反斜槓將多行代碼連接成一行代碼。
AIL的注釋與很多Shell腳本一行,以#開頭。
AIL在編寫時需要分成多個部分(Section),而每一部分的開頭需要指定Actions或Services。也就是說,每一個Actions或 Services確定一個Section。而所有的Commands和Options只能屬於最近定義的Section。如果Commands和 Options在第一個Section之前被定義,它們將被忽略。
Actions和Services的名稱必須唯一。如果有兩個或多個Action或Service擁有同樣的名稱,那麼init在執行它們時將拋出錯誤,並忽略這些Action和Service。
下面來看看Actions、Services、Commands和Options分別應如何設置。
Actions的語法格式如下:
on
也就是說Actions是以關鍵字on開頭的,然後跟一個觸發器,接下來是若干命令。例如,下面就是一個標准的Action。
on boot
ifup lo
hostname localhost
domainname localdomain
其中boot是觸發器,下面三行是command
那麼init.rc到底支持哪些觸發器呢?目前init.rc支持如下5類觸發器。
1. boot
這是init執行後第一個被觸發Trigger,也就是在/init.rc被裝載之後執行該Trigger
2.
當屬性
on property:vold.decrypt=trigger_reset_main
class_reset main
3. device-added-
當設備節點被添加時觸發
4. device-removed-
當設備節點被移除時添加
5. service-exited-
會在一個特定的服務退出時觸發
Actions後需要跟若干個命令,這些命令如下:
1. exec
創建和執行一個程序(
2. export
在全局環境中將
3. ifup
啟動網絡接口
4. import
指定要解析的其他配置文件。常被用於當前配置文件的擴展
5. hostname
設置主機名
6. chdir
改變工作目錄
7. chmod
改變文件的訪問權限
8. chown
更改文件的所有者和組
9. chroot
改變處理根目錄
10. class_start
啟動所有指定服務類下的未運行服務。
11 class_stop
停止指定服務類下的所有已運行的服務。
12. domainname
設置域名
13. insmod
加載
14. mkdir
創建一個目錄
15. mount
試圖在目錄
16. setkey
保留,暫時未用
17. setprop
將系統屬性
18. setrlimit
設置
19. start
啟動指定服務(如果此服務還未運行)。
20.stop
停止指定服務(如果此服務在運行中)。
21. symlink
創建一個指向
22. sysclktz
設置系統時鐘基准(0代表時鐘滴答以格林威治平均時(GMT)為准)
23. trigger
觸發一個事件。用於Action排隊
24. wait
等待一個文件是否存在,當文件存在時立即返回,或到
25. write
向
Services (服務)是一個程序,他在初始化時啟動,並在退出時重啟(可選)。Services (服務)的形式如下:
service
例如,下面是一個標准的Service用法
service servicemanager/system/bin/servicemanager
class core
user system
group system
critical
onrestart restartzygote
onrestart restartmedia
onrestart restartsurfaceflinger
onrestart restartdrm
Services的選項是服務的修飾符,可以影響服務如何以及怎樣運行。服務支持的選項如下:
1. critical
表明這是一個非常重要的服務。如果該服務4分鐘內退出大於4次,系統將會重啟並進入 Recovery (恢復)模式。
2. disabled
表明這個服務不會同與他同trigger(觸發器)下的服務自動啟動。該服務必須被明確的按名啟動。
3. setenv
在進程啟動時將環境變量
4. socket
Create a unix domainsocketnamed /dev/socket/
its fd to thelaunchedprocess.
User and group default to0.
創建一個unix域的名為/dev/socket/
5. user
在啟動這個服務前改變該服務的用戶名。此時默認為 root。
6. group
在啟動這個服務前改變該服務的組名。除了(必需的)第一個組名,附加的組名通常被用於設置進程的補充組(通過setgroups函數),檔案默認是root。
7. oneshot
服務退出時不重啟。
8. class
指定一個服務類。所有同一類的服務可以同時啟動和停止。如果不通過class選項指定一個類,則默認為default類服務。
9. onrestart
當服務重啟,執行一個命Android中相機和相冊使用分析 歡迎轉載,但請尊重原創(文章來自不易,轉載請標明轉載出處,謝謝) 在手機應用程序中,使用自帶的相機拍照以及相冊選擇喜歡的圖片是
很開心的是經歷過兩個多月的努力,項目在11月份即將要交付使用,基礎功能已經完成,剩下的是系統設定界面沒有開發完畢,如下圖:很顯然要實現的功能是幾個界面要顯示很多數據,要依
Android Vitamio 庫Vitamio是一個android和ios上基於FFmpeg的開源項目。Vitamio為我們提供了一個清潔、簡單、全面、真
前言:看過很多精彩的文章,作者寫的非常好,但總覺得文字描述沒有圖片或圖表說明來得直觀,因為圖片可以化抽象為具體。語言是有區域性的,而圖片則是全世界通用的,即使語言不通,卻