任何一種移動開發(fā)生態(tài)系統(tǒng)其技術(shù)人員都是呈現(xiàn)金字塔式分布的。
也就是我們常說的大部分人都是開發(fā)人員,只有少數(shù)人是真正意義上的程序員。
android系統(tǒng)也是一樣,在龐大的android開發(fā)人員群體中,我認為可以由低到高分為以下四個層次:
1)應(yīng)用層開發(fā)
使用java語言,基于android的框架和類庫,進行應(yīng)用層程序的開發(fā)。
這類開發(fā)一般依賴于短期記憶,也就是我們所說的類庫王子。
這類人員,只要會UI布局,熟悉常用的widget,寫幾個消息回調(diào)函數(shù).
鼓搗以下網(wǎng)絡(luò)類,簡單的數(shù)據(jù)庫操作,調(diào)用一下播放器,發(fā)一下短消息。
再用一哈比如Gallery這樣外行看起來表面上比較炫的類。
這類開發(fā)人員一般自我感覺良好,比較自大,認為android開發(fā)也不過如此。
這類技術(shù)門檻很低,這類開發(fā)人員中的真正的熟手和高手,是充分熟悉官方文檔的,已經(jīng)過了什么都去GOOGLE的階段,達到了查什么都直接去查
http://developer.android.com/reference/packages.html 的地步。
而且在大腦中已經(jīng)形成了一個官方文檔的索引,查什么都能達到幾乎勻速的地步。
充分利用好官方文檔,全部類庫在大腦中有比較有條路的記憶,告別了短期雜亂無章的記憶。
成為了一個高級的“類庫王子”。
2)中間層開發(fā)
使用c/c++語言,基于NDK JNI方式的開發(fā).
需要對android的整體框架機制和android系統(tǒng)codebase非常熟悉.
一般都會自己自己下載android的系統(tǒng)源代碼,自己編譯IMAGE.
熟悉android系統(tǒng)的Custom Building System.
能修改和擴展Android的框架和 服務(wù).
移植和定制nativelibray 和框架 ,如opencore,opengl,webkit
定制一套系統(tǒng)的UI,制作點ROM
也就是我們國內(nèi)所謂的自主研發(fā)的手機操作系統(tǒng)。
這類開發(fā)人員一般屬于稍微資深一點的,一般都有強烈的技術(shù)饑餓感,覺得自己懂的很少,不停的去提高自己。
3)操作系統(tǒng)級別的開發(fā),系統(tǒng)定制
熟悉Linux驅(qū)動開發(fā),Linux內(nèi)核結(jié)構(gòu)
針對特定硬件的移植
這類開發(fā)的技術(shù)含量其實和中間層開發(fā)差不太多,從某種意義上還不如。
其實,驅(qū)動開發(fā)更主要的要求需要一定的硬件知識。
這類開發(fā)人員一般式各大手機廠家的開發(fā)人員,由于接觸的面比較窄,技術(shù)饑餓感不如中間層開發(fā)人員。
4)找出Android的不足,幫助Google持續(xù)改進Android
這種人是真正意義上的android程序員,他們會有選擇的去閱讀android框架源代碼,會認真的去閱讀dalvik的源代碼。
自身知識結(jié)構(gòu)也比較成熟,知識面比較廣。
會很多上面三類人都不具有的調(diào)試和跟蹤技巧。
這些多,多半也精通其他平臺,比如Symbian,Meego,IOS,WP
甚至Windows NT, Linux edition for Server.