Jollen 的 Android 系統管理雜記, #3: init.rc 與 setprop

jollen 發表於 April 24, 2010 9:57 PM

今天在上海進行「Android Framework & HAL 軟硬整合」培訓課程,課程中提到 init.rc 的用途,因此在此做一個紀錄。init.rc 是 Android 作業系統的 initial script,在開機時由 init 讀取並執行 init.rc 裡的命令。Android 的 init.rc 使用的的語法稱為 Android init language,有別於傳統 Embedded Linux 採用 shell script 的方式。

在 init.rc 裡找到類似以下的命令片斷:

on boot
    setprop ro.FOREGROUND_APP_ADJ 0
    setprop ro.VISIBLE_APP_ADJ 1
    setprop ro.SECONDARY_SERVER_ADJ 2
    ...

以上是一個動作(action)區段的設定,說明如下:

1. on boot 表示在開機時(boot)觸發此動作區段裡的所有命令。
2. setprop 是設定 Android property 的命令。

上述提及的「動作區段」設定格式如下:

on <trigger>
   <command>
   <command>
   <command>

當 "trigger" 為 "boot" 時,表示「開機觸發」。一個動作區段裡,可以有任意個命令(command),每個命令獨立於一行。最常見,也最重要的命令就是 'setprop'。'setprop' 用來設定 'property' 的值,property 有點像是系統的「環境變數(environment variable)」。其命令格式如下:

setprop <name> <value>

例如:

setprop ro.product.device dma6410xp

表示「ro.product.device = "dma6410xp"」的意思。Android 系統有非常多 property,這些 property 都是 Android 作業系統本身在使用的重要變數,例如:上例的「ro.product.board」就是給 HAL 使用的重要變數。

Jollen's Blog 使用 Github issues 與讀者交流討論。請點擊上方的文章專屬 issue,或 open a new issue

您可透過電子郵件 jollen@jollen.org,或是 Linkedin 與我連絡。更歡迎使用微信,請搜尋 WeChat ID:jollentw