Email me: jollen # jollen.org

more: Jollen 的 Embedded Linux 教育訓練

« March 2010 | (回到Blog入口) | May 2010 »

April 2010 歸檔

April 5, 2010

Jollen 的 Android 觀念解析, #1: Zygote Mode

Android 作業系統開機時,會經由 init.rc 來啟動許多外部程式,其中有一個最重要 process 稱為 Zygote。Zygote 是 Android 的 monitor process,它主要負責二項工作:

1. 啟動 system server
2. 執行 Android 應用程式

「System Server」是由 Zygote 所建立的另外一個 process,建立 system server 的方式是使用典型的 Linux system call - fork()。當 Zygote 成功建立 system server 後,便進入 socket listening 模式。在此模式下,zygote 會監聽(listen)由 socket 所傳入的「命令」,並依據命令的內容啟動 Android 應用程式。

Zygote 啟動外部 Android 應用程式的方式,同樣是使用 Linux kernel 所提供的 fork() system call。因此,在 socket 做 listening,並依據命令來 fork() 並執行外部 Android 應用程式,稱之為「Zygote Mode」。

April 24, 2010

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

今天在上海進行「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 使用的重要變數。

關於 April 2010

此頁面包含了在April 2010發表於Jollen's Blog的所有日記,它們從老到新列出。

前一個存檔 March 2010

後一個存檔 May 2010

更多信息可在 主索引 頁和 歸檔 頁看到。

Top | 授權條款 | Jollen's Forum: Blog 評論、討論與搜尋
Copyright(c) 2006 www.jollen.org