Android系統架構剖析(一),android系統架構剖析
要說剖析,可能這個詞可能用的太大了,下面對Android系統的介紹也就是從我個人理解來說吧。
曾經有人問我,Android是什嗎?當時這個問題問的我真的蒙了,我就簡單的回了一下:Android就是一個基於行動裝置的作業系統。時至今日,這個問題我才知道回答的太淺了,我想只有真正的做過開發之後,才能去回答這個問題。
那麼Android到底是什嗎?我覺得Android就是使用者與裝置之間的一個介面,從Android的體繫結構來看,Android分為4層,所以可以說Android是一個串連裝置軟體塊,但是卻並非是一些列組件的集合。
Android是一個移動開發平台,其軟體階層包括作業系統、中介軟體以及應用程式,整個體繫結構從下到上分為4層:
- 作業系統linux核心層
- 各種類庫、運行時
- 應用程式架構層
- 應用程式層
linux核心層包括了linux核心以及一些驅動模組,比如說usb驅動、藍牙堆疊、相機驅動等。
libraries層包括各種動態類庫(2D、3D映像引擎、嵌入式資料庫、網路瀏覽器核心等)、Android執行階段程式庫以及dalvik虛擬機器(dalvik虛擬機器在Android4.4之前用的,在4.4之後用的是art),從程式設計語言角度來看,這一層主要是c/c++寫的,所以也可以說這層是native層。
應用程式架構層,是一個應用程式的架構,用java語言寫的,是Android平台上java語言的基石,所以這一層主要嚮應用層的開發人員提供一些列的開發api,比如說各種ui控制項等。
應用程式層主要是使用者介面。Android系統本身內建了一些應用,像連絡人、簡訊、音樂播放器等應用,但是Android開發人員也可以利用應用程式架構層的api開發出屬於自己的個人化應用,我覺得這是Android開源巨大潛力的一種表現。
一般的android開發都用到了系統架構什層?
開發一個程式,android的系統架構是層層相扣,不能分開的。
應用程式層:
這個層主要指的就是用java語言編寫的運行在虛擬機器上的程式,Google在最開始時就 在android系統中捆綁了一些核心的應用(核心應用的編寫必須使用應用程式層序架構層的API架構),例如你android手機中SMS發送短訊息的程式,通訊錄等等。
應用程式架構層:
指的就是開發時所需要的API架構,開發人員是在遵守該架構的原則上,調用他們的,開發自己所需要的程式。
系統運行庫層:
用於支援應用程式框架層的各個組件的。就是說當開發人員使用android應用程式框架層時,android系統會通過一些C/C++庫來支援對我們使用的各個組件,使其能更好地為開發人員服務。
linux核心層:
android的核心系統服務如安全性、記憶體管理、進程管理、網路通訊協定棧和驅動模型等都依賴於Linux2.6核心,Linux核心同時也作為硬體和軟體棧之間的抽象層。
因此,你開發的程式是運行在應用程式層,開發中寫代碼調用的包,是基於應用程式框架層,而在應用程式框架中的各個組件是需要系統運行庫的支援的,例如,你要登陸查看的資訊就必須訪問到SQLite資料庫,SQLite就位於系統運行庫,再有,你登入要輸入資訊,肯定需要鍵盤驅動的支援,而各種驅動是依賴Linux核心的。
這個android系統架構怎寫?
首先,你要考慮在伺服器裡都需要儲存什麼資料,其中大概包括,使用者的資料,蔬菜的成長資料,交流聊天的記錄等等。
其次,要考慮用戶端app裡要顯示的內容都有什麼,要發送的內容都有什麼。
把這些都分類整理清楚了之後,最好整理出一個文檔,既可以給領導看,又可以作為開發的指導,再考慮實際開發工作。
然後,和公司裡的同事溝通,問清楚他們在哪方面的技術能給你以指導,你就開始在哪方面開始買(借)一些入門的書籍(如果公司沒有的話)看,(最好要快,能再幾天之內就入門最好,一個合適的方法是看書的同時按照書上的例子自己寫一遍代碼並執行),基本入門之後,到公司的資料庫裡或網上,去發掘可用的模組或函數(可以問同事)。(以上的活動最好在系統要求時間的10分之一到5分之一內完成)之後就可以試試開發了。
你以短短的幾句話,是沒人能給你完成一個系統架構的,樓上說的好,用心,現在網上有很多教程,不管是文檔的還是視頻的,可以在家裡多花點時間看看。公司給你工作不是打算把你趕走的,而是希望能給公司帶來效益,所以不要懊惱(也沒用不是嗎?),只要去做就是了。