一起來學嵌入式Android系統 (第二章心得一)

在O’REILLY"嵌入式Android系統"這本書的第二章是Android內部機制入門;雖說是入門,但其實要討論的東西還不少;所以該章的心得分享會用多篇文章來進行。本次心得的大綱於下:

◎    應用程式開發者觀點

◎    整體架構

◎    Linux核心

在應用程式開發者觀點的部份,是說明Android在應用程式開發的概念,其實Android APP開發的書在市面上以如過江之鯽;這邊主要強調的:若要學習Android平台開發,還是要把Android APP應用開發的部份學過一遍。若要快速上手Android應用開發的基本知識,書中與我個人都建議研讀O’REILLY"Android學習手冊":

201

在這邊,請記得Android四大元件:Activity、Service(這個用詞在Android不同地方代表不同意義,再此是指APP Service)、Broadcast Receiver與Content Provider。

在整體架構的部份,書中用的架構圖與Google官方的架構圖不大相同,官方的架構圖(含HAL)如下圖所示(來源:http://www.jollen.org/blog/2009/10/android-hal-status-report.html):

202

上面這張圖的不同顏色是有各自的涵意:紅色是Linux Kernel(C語言)、綠色的是Native Library(C/C++語言)、黃色的是Dalvik VM(C/C++語言,虛擬機)與藍色的是Java Library與Application(JAVA語言)。當然書中認為官方版的圖比較是給APP開發者看的,書中的圖(圖2-1)強調於System Server的角色,是讓平台開發者能更瞭解系統間相互的關係;關於System Server的部份,在本章後面有相關介紹,同時相對應的文章會有額外的補充資料。

在Linux核心的部份,主要是說明在添加到Linux核心的主要"Android特性"的部份;當然Linux核心本身又是一個很大的課題,若想進一步瞭解Linux Kernel,書中與我個人都建議研讀"精通 Linux 核心開發 第三版":

203

當然目前SoC廠商(如全志)大半都提供Android所要使用的Linux Kernel Source Code;但我們還是要瞭解一下Android在Linux Kernel中添加了什麼。主要是添加了WakelockLow-Memory KillerBinderashmemalarmLogger等。這些添加的部份有些已經合併進主流的Linux核心之中,但有些則還待Google與Linux核心團隊進行整理,很多Android驅動程式都可以在/driver/staging/android目錄中找到。以下概略說明各Android添加功能。Wakelock部份主要是電源管理,由於手機跟電腦的在電源管理的需求不同,Wakelock引入了不同的開發模型進來,但其實作還是在Linux既有的電源管理之上;在Kernel端這部份還持續進展,例如early suspend的引入與新機制的部份,而電源管理的部份在本部落後續會有相關文章進行介紹。Low-Memory Killer則是在記憶體不足的情況下,會刪除長時間未使用且不具高優先權元件之行程(process);該機制奠基於Linux所提供的OOM調整機制。Binder是一種RPC/ICP機制,類似於Windows的COM,Binder試圖在典型的OS上提供遠端物件的呼叫能力;總結來說,Binder是Android架構的基石。ashmem的匿名共用記憶體,也是Android IPC的機制,在Framework中都透過IMemory介面,而在APP端使用的方式就是MemoryFile類別。alarm的部份建構在Linux現有的Real-Time Clock(RTC)與High-Resolution Timer(RTC)之上,主要是提供Android鬧鐘的機制。Logger的部份是平台與應用開發上最常用到的功能;所有在Android上的Log都是由它處理的,如我們在APP開發使用的android.util.Log類別;對於這部份要詳細閱讀書中的描述,並瞭解圖2-2的意義,在第六章談到logcat時會用到這些資訊。

廣告

1 關於 “一起來學嵌入式Android系統 (第二章心得一)” 的評論

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s