google了張圖,android原來是個大雜包啊!
打眼一看,分了5大塊啊! 從應用程式到底層作業系統核心,真夠雜的!!!
仔細一看,第一層直接撇了! 拿個安卓手機開機後就能找到。
如此一來:
這下看著省心一點了!
再看最下面Linux Kernel, 這麼高深的東西,看不了啊! 再說了作業系統應該都差不多,一堆的驅動包! 幹掉!
這回基本上都是乾貨了! 應該是需要研究的了!
再繼續看,中左下角那一堆,外觀管理器,多媒體架構,SQLite(竟然整合了資料庫?),OpenGL ES(老聽搞遊戲的人說但是不瞭解!),FreeType位元影像,向量字型渲染,WebKit(據說很牛的瀏覽器核心),SGL(碰到GL 就範暈),SSL(我猜是安全性通訊協定之類的)至於最不起眼的那個libc,據說C/C++大牛可是對他們情有獨鐘,能用他們搞搞Linux核心,動動驅動啥的,可對我來說天方夜譚啊!!!
據說這些都是用C/C++整的類庫API,向來玩不了這兩種語言,敬而遠之吧!
所以,我再砍!!!
雖然圖撕的難看一點,不過總算把沒用的給去掉了,可以靜心研究這張殘圖了,希望能從這張圖找到通往寶藏的神秘之路!!!!
只有兩大塊了,應用程式架構+應用程式運行環境!
現在從頭想想,原來Android就是一個雜包啊,裡面有作業系統,作業系統上附帶了一些移動終端常用的應用軟體,如果你是高手,估計你可以不用這些軟體,自己寫了替換他們。
當然和java一樣,他們最佳化了一個虛擬機器,Java的JVM瘦身了,因為移動終端沒有電腦個大啊,主要是最佳化了記憶體使用量到最小,就變成了Dalvik 虛擬機器,不知道為什麼叫這個名字? 這個小虛擬機器可以執行個體化? 可以同時運行多個?
JAVA 虛擬機器JVM,只是聽說過,沒用過,也不知道啥樣? JVM有可執行檔嗎?
Dalvik說它有,而且有個標誌性的尾碼.pex, 說他能運行java寫的類,但是需要通過java的編譯器編譯,用dx轉換。 不明白!
不管怎樣,它還是不能脫離Linux核心的支援,比如底層的記憶體管理,線程管理之類的。
它是做什麼的呢?
它的上面還有個core Libraries, 跟應用程式架構裡面的組件一個顏色,說明都是Java語言開發的,當然,人家說了那個Dalvik是個可執行檔檔案,是什麼語言,不關我的事了。
每個應用程式都有一個自己的進程和相應的Dalvik VM執行個體為之服務!!!!--- 這話對嗎?
Dalvik可以隨便執行個體化? 得進一步研究!
目前先理解為一個Android的應用程式會有一個單獨的進程和一個專門為他建立的Dalvik VM執行個體為之服務。
Core libraries 核心類庫,在android 運行時環境中,介紹說它就是剛才撕掉的Libraries 在android 運行環境中被java封裝的介面類庫。
再看應用程式架構裡面,我靠7個當官的啊!!!還有一個服務商,View成了獨立系統了!!!
這7個Manager們,不用說都是搞管理的! 供應商Provider,這是搞服務的! View獨立了嗎? 自成體系了!
據說這是Android為了讓我們developer開發application時有個標準,特意封裝的組件單位。
我們developer編寫application難道都靠這些官員和供應商嗎,對了還有個自稱系統的傢伙!!!
看看曾經坐在他們上面的Contacts ,Phone,Browser ... 都是application, 估計應該是這樣了!
他們都是藍色的,應該都是java寫的, 據說android已經基本覆蓋了java的所有核心類庫,希望不是吹的。
啊呀,不看了,太晚了,睡覺!