Android核心分析 |
發(fā)布時間: 2012/8/27 16:48:52 |
為什么要研究Android,是因為它夠龐大,它夠復(fù)雜,他激起了我作為一個程序員的內(nèi)心的渴望,渴望理解這種復(fù)雜性。我研究的對象是作為手機開發(fā)平臺的Android軟件系統(tǒng)部分,而不是Dalvik虛擬機本身。 作為一個從其他平臺裝接過來的程序員,要從事Andoid平臺系統(tǒng)開發(fā),我的關(guān)于手機平臺上積累的知識已經(jīng)不能滿足需要了,Android為我們帶來了大量的新名詞,Activity,Manifest,INTENT,Service,Binder,Dalvik虛擬機,F(xiàn)ramework,Linux,Navtive ,JNI.....。通過在源代碼,在開發(fā)社區(qū),在開發(fā)博客,甚至在招聘過程中,我不斷的尋求Android是什么。經(jīng)過一定時間的沉淀,我慢慢的理解到Android不僅僅是一類手機的總稱,不僅僅是一個手機開發(fā)平臺,不僅僅是一個虛擬java操作系統(tǒng),不僅僅是一個開發(fā)社區(qū),一個開發(fā)標(biāo)準(zhǔn),不僅僅是一堆代碼,Android已經(jīng)成了一個新的潮流。 代碼多,系統(tǒng)復(fù)雜,縱觀社區(qū)中Android的研究者,一開始從源代碼分析Android就走向迷途,不斷的跋山涉水,向縱深沖刺,最終腦袋堆棧不夠用,迷失在開始的旅程,或者掛在半途中,鮮有通達者。我感覺到大部分的研究者總是忘記站在高山上向下望一望設(shè)計者的意圖,一味的隨著代碼的控制流走入繁雜的謎團,陷入到復(fù)雜性的深淵。 我的研究分析是從設(shè)計者的意圖出發(fā),從抽象的甚至從哲學(xué)的高度,從最簡單的系統(tǒng)原型開始,從設(shè)計猜想開始,而不是一開始就從代碼分析展開。首先理解Android大的運行框架,主干流程,系統(tǒng)原型,之后再用源代碼分析充實之。當(dāng)然我這里的設(shè)計者意圖并不是真正的Android設(shè)計者意圖,而是我以為的Android設(shè)計者意圖。 要理解設(shè)計者意圖,就需要抽象。我們需要在哲學(xué)意義空間中去考慮系統(tǒng)的描述,即系統(tǒng)在本質(zhì)上要表達什么。在邏輯空間上去考慮系統(tǒng)基本構(gòu)成和動態(tài)結(jié)構(gòu)。從現(xiàn)實到虛擬對象的映射去理解系統(tǒng)對象的組成,在從數(shù)據(jù)流的角度分析數(shù)據(jù)的產(chǎn)生者和消費者之間作用關(guān)系,從控制流的角度去分析對象之間的交互關(guān)系,從函數(shù)調(diào)用去分析具體的層次關(guān)系。 在系統(tǒng)設(shè)計上,原型是最能表達哲學(xué)空間和邏輯空間中系統(tǒng)本質(zhì)的東西,原型是事物本質(zhì)的第一層體現(xiàn)。我以為任何復(fù)雜的系統(tǒng)都一個簡潔的系統(tǒng)原型,都有它簡潔的意義。系統(tǒng)原型是設(shè)計者意圖的第一體現(xiàn),所以我們需要從幾個方向上去提煉系統(tǒng)原型: (1)從系統(tǒng)本質(zhì)和基本原理出發(fā) (2)從分析系統(tǒng)數(shù)據(jù)流和控制流分析出發(fā)。 從設(shè)計者意圖出發(fā),得出系統(tǒng)原型,提取到大的邏輯結(jié)構(gòu)和系統(tǒng)構(gòu)成是第一步。之后我們可以從設(shè)計者的角度考慮系統(tǒng)猜想系統(tǒng)設(shè)計,為什么要這樣設(shè)計,為什么要有這些構(gòu)成。這樣的基本原型是什么?系統(tǒng)的限制是什么,應(yīng)用場景有哪些,有些設(shè)計的引進還是系統(tǒng)收斂性而為之呢。我們還可以從代碼痕跡上去分析,這些概念是如何的得來的?從一定的抽象和高度去理解這些問題,遵循系統(tǒng)原型出發(fā)之原則,在深入分析代碼的時候,就不容易陷入細節(jié)中。我們就可以隨時跳出來想,這些代碼在整體上載表達一個什么概念,在描繪一個什么邏輯,他要構(gòu)成一個虛擬層嗎?他是在管理這個硬件嗎?他在 虛擬這個對象嗎?他在構(gòu)建管理機構(gòu)?還是在構(gòu)建一個對象管理?空間管理,為了快速引入了什么樣的復(fù)雜算法,實際上的原型算法應(yīng)該是什么樣的? 只有深入到這個抽象層次,我們才能很好的把握住系統(tǒng)的每一條線,每一個對象的意義。只用從原型出發(fā),我們才能把握住這個系統(tǒng)的實質(zhì)所在,在干什么?他要表達什么?設(shè)計者為什么要這樣想?最終極的想法是什么?這樣,代碼分析就變得簡單明了,讀代碼就變成了是在印證猜想,修正方向。 本文出自:億恩科技【mszdt.com】 服務(wù)器租用/服務(wù)器托管中國五強!虛擬主機域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |