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 使用的重要變數。

讀者留言 (0)

留言功能維護中。將於近日重新開放。

連絡作者

Jollen Chen,Moko365(仕橙3G教室)講師,熱愛研究 Linux 與 Android 技術。曾為 Motorola、HTC、Foxconn、LG、OPPO、騰迅、廣達電腦、緯創、仁寶等超過 50 家企業講授課程。目前在 MokoVersity 擔任軟體工程師,撰寫 Node.js 程式,也在幾家科技廠兼任 Android Framework 研發顧問。您可透過電子郵件 <jollen (at) jollen (dot) org> 或這裡與我連絡。