學習android架構的步驟?

擁有c/c++,java基礎,了解android的部分控制項的使用,可以開發一些簡單的android應用,最近在啃Linux內核,想了解如何學習系統架構不走彎路,希望大牛指點迷津。


目前剛寫完一個系列的文章,App架構設計經驗談,供參考:

App架構設計經驗談:介面的設計

App架構設計經驗談:技術選型

App架構設計經驗談:數據層的設計

App架構設計經驗談:業務層的設計

App架構設計經驗談:展示層的設計

另外,還有,只講Android方面的:

Android項目重構之路:架構篇

Android項目重構之路:界面篇

Android項目重構之路:實現篇


打好基礎,弄清主線。


看我的博客:

Android的5層平台架構 - 世上只有一種英雄主義 - 博客頻道 - CSDN.NET


根據題主的描述,說白了,你是有基礎的,而且是有Android開發基礎的,這是你的一大優勢,學架構也夠格了。

但是沒有捷徑的,想要不走彎路是不可能,我們總是通過走彎路來成長的。還好,你沒有問出「如何系統地學習Android系統架構」這樣的問題。

學知識,自然是由簡入難,從基礎到高級,根本沒有什麼如何。買三本Android系統架構的書,把它們啃完,找一個系統架構的視頻,也把它啃完,知識消化了,也就學會了。

高煥堂老師(高煥堂_百度百科)出了一套Android架構設計的視頻(Android架構師_Android開發視頻教程),這是極權威的Android系統架構視頻,值得一看。


Android架構和特徵千呼萬喚始出來,猶抱琵琶半遮。 -- 《琵琶行》雖貴為富二代,但Android要是沒任何可圈點的地方,開不過70邁,在玲琅滿目的手機平台競爭中,充其量也就做幾個俯卧撐打一桶醬油,然後被落的遠遠的。說到底,出來混,靠的還是技術。

架構

從SDK文檔中,偷來一幅Android平台的架構圖,如上。在整個架構最底層紅彤彤的部分,是Linux Kernel在移動平台的一個移植,它隱藏了硬體、網路等相關的細節,為上層提供了一個相對純潔的統一介面。除非要做的是Android到不同設備的移植工作,否則對於大部分普通開發者而言,基本上是遠觀而不必褻玩的。Google一直強調,Android的底層實現異常NB,可移植性超強,暫沒有功夫研讀,實屬遺憾。

靠上一層,是一些核心的和擴展的類庫,它們都是原生的C++實現。在這一層,你可以看到很多熟悉的面孔,一如SQLite、WebKit、OpenGL,開源的力量與貢獻由此可見。如果,該層類庫需要被上層函數調用,就必須要通過JNI的導出相應的介面函數,否則就只能在層次內部自個把玩。

也是在這一層次上,還有為上層Java程序服務的運行時。Dalvik虛擬機,是Android的Java虛擬機,之所以不採用J2ME的虛擬機,一方面是因為J2ME的設計是為了低端機器而優化,而Dalvik則是為了高端一些的機器進行優化,提供更好的性能。另一方面,從商業角度來看,必須繞開J2ME虛擬機,Android才能徹底解放,想怎麼開源就怎麼開源,不再需要考慮License的問題。

再往上,終於有Java出沒了。首先是框架層,這裡包含所有開發所用的SDK類庫,另外還有一些未公開介面的類庫和實現,它們是整個Android平台核心機制的體現。

而在最上面,就是應用層了,系統的一些應用和第三方開發的所有應用都是位於這個層次上,也許要糾結兩者的差別,就是系統應用會用一些隱藏的類,而第三方的應用,總是基於SDK提供的東西來搞。

一般來說,Android開發,就是在SDK的基礎上,吭哧吭哧用Java寫應用。但自從有了NDK,一切有了寫小變化。NDK的出現意味著,最上面應用層的內容,可以穿越Java部署的框架層,直接和底層暴露出來的,或者自行開發的C++庫直接對話,當然在這些庫中需要包含JNI的介面。

人說,這就不是Android也可以用C++開發應用么,但其實,這樣的說法不夠確切,純C++應用,是無法被接受的。因為在Android中,大量的核心機制部署在框架層,它們都是用Java實現的,比如控制項庫,Activity的調度之類的。因此,沒了界面,沒了調度,還是只用C++做類庫比較合適,否則一切都亂了套了。

Android系統架構樓主可以看一下這些視頻,希望對你有所幫助。


有C基礎好說啊,Android 開發包括Android 應用開發、Android 系統開發、Android 底層開發,目前國內零基礎的入門性課程較多,如果自己是軟體開發相關專業或有較好的基礎的,可以去看看星創客的學習路線會明白。-星創客官網


推薦閱讀:

有人知道uber登錄界面那個視頻是怎麼實現的嗎?
程序員們平時都喜歡逛什麼論壇呢?
關於安卓5.0的升級問題,為啥手機rom升級就是那麼蛋疼?
Qt的前景如何?Qt for Android 好嗎?
為什麼Windows可以安裝在所有不同的PC上,而安卓刷機包必須對應機型?

TAG:Android開發 | 系統架構 |