專家解讀Android開發(fā)學習之路
之前曾經寫過一篇文章,題目為《Android開發(fā)的入門之路》。在那篇文章中,我對于Android的市場情況談了談自己的看法,也對如何學習Android開發(fā)提了一些建議。限于篇幅,上次的文章中,對Android的具體學習過程和相關經驗沒有做太多的說明,今天就這個話題,結合華清遠見3G學院的“3G Android系統(tǒng)開發(fā)班”就業(yè)培訓課程再展開談談,希望能夠給更多朋友以幫助和建議,歡迎拍磚。
在討論Android學習之前,我們先來關心一下從上篇文章到現(xiàn)在2個多月近3個月時間內和Android相關的2條重要新聞。
Android行業(yè)新動態(tài)
最近和Android相關的新聞,從重要性來說,當然就是Android 4(Ice Cream Sandwich)的發(fā)布。在這個全新的平臺中,Android不再將手機和平板分成2個分支,而是將其合二為一。這對于開發(fā)者來說,無疑是非常有利的,同時這也充分說明了移動開發(fā)領域的發(fā)展趨勢和日益廣闊的應用領域。另外,它在溝通和共享、多媒體支持、網絡連接能力、UI組件等方面都有令人興奮的更新。另外,就是Google終于又宣布Android4將重新開源。
搭載Android 4.0的Galaxy Nexus
Android業(yè)內另一件大事,雖然很轟動,但很多人并沒有將它跟Android聯(lián)系起來,那就是Amazon在9月28日推出自己的平板電腦——Kindle Fire,它是一款基于Android的深度定制的平板電腦。在蘋果和喬布斯的光芒掩蓋之下,估計很多人對此并不以為然。但是別忘了,這是一家怎么樣的公司:它2010年的收入比Google還多20億美元,而且,更重要的是,經過多年的發(fā)展,他已經建立起了世界上最龐大的網絡電影和電視商店以及電子書庫、擁有僅次于蘋果的在線音樂商店,并且,它有自己的Android應用程序商店,擁有超過一萬款付費應用?,F(xiàn)在它推出了自己的硬件,其令人吃驚和驕人的業(yè)績是,在Kindle Fire發(fā)布的第五天,其預定人數(shù)已經超過25萬!這和iPad 2推出時的情形非常類似,這意味著什么,我想大家應該都能想到——一個類似于蘋果的、基于Android的生態(tài)系統(tǒng)正在形成,而這對于我們開發(fā)者來說,無疑也是非常有利的。
Amazon Kindle Fire
聊完最近的一些Android市場動態(tài)信息,我們進入正題,接著上次的文章談談如何學習Android開發(fā)。
如何做好Android學習前的準備?
如果你已經確定了學習Android的目標,那么,應該提前做好哪些工作、先打下哪些基礎呢?[!--empirenews.page--]
首先,你最好先熟悉一門編程語言,現(xiàn)在大學里面和計算機相關的專業(yè)甚至理工類專業(yè)一般都會開設C語言課程,只是很多同學在大學期間并沒有好好學習,如果對它掌握的不太好或者很久沒用了,建議先從將其好好復習一下,將其基本的語法再好好回顧一下,最好能搭建一個環(huán)境來運行、調試它。如果沒有學過,不妨也提前學習一下,可以參考清華大學出版社出版的譚浩強老師的《C語言程序設計》,推薦這本書的原因,一是它已經經過了多年的考驗,應該說還是比較嚴謹?shù)模黄浯尉褪谴蟛糠值母咝K_設的C語言使用的教材都是用它作為教材,因此無論是購買還是借閱,都容易找到。另外,華清遠見網站上也有一些這方面的教學視頻,可以結合來看。
其次,如果你后續(xù)有志于游戲方面的開發(fā),你最好具備一定的數(shù)據結構和算法基礎知識。這一點是我在華清遠見的講臺上,給學員們堅持強調的。雖然現(xiàn)代的高級編程語言中,其類庫中已經幫我們實現(xiàn)了大部分的數(shù)據結構,一般情況下,我們直接使用即可。但如果你能對其原理有所了解,當你需要在這些數(shù)據結構和算法中間的時候,你可以能更加的清楚到底應該選擇那個數(shù)據結構或者算法。另外,在圖形圖像處理上面,線性代數(shù)的作用也非常重要,如果能掌握一點這方面的基礎知識,無疑也會在后續(xù)的學習中如虎添翼。舉個例子,在Android中,有一個用于圖形變換的類Matrix,用起來稍有點難。其實它的理論基礎就是線性代數(shù)中的矩陣,如果你了解矩陣的基本算法,這個類的使用可以說就易如反掌了。
第三,因為Android應用的開發(fā)語言用的是Java語言,并且在Android中也用到了Java核心類庫的大量的類,因此,在學習Android開發(fā)之前,可以先把Java基本語法和Java SE的基礎類庫好好學習一下,例如:Java中的IO、網絡、線程、List、Map、Tree等數(shù)據結構?,F(xiàn)在的大學里也有不少的院系開設了Java課程,教材和圖書也非常豐富,如果你所在的院系沒有開設,也可以從其他開設了這個專業(yè)的院系同學那里借閱一下,并認真完成他們所布置的作業(yè),爭取自己能動手編寫出一些簡單的Java應用。如果自己購買圖書,可以購買《Java核心技術,卷1(原書第8版)》這本圖書來學習。
第四,因為在Android中,會用到數(shù)據庫來存儲數(shù)據,因此,也可以提前對數(shù)據庫知識做相關的儲備。在Android所使用的SQLite中,其語法是遵循標準的SQL-92語法的(當然和企業(yè)級數(shù)據庫如Oracle等比較,功能上要弱很多),有條件的話,最好也能安裝一個數(shù)據庫來進行實際的操作。從易用性和資料完備性來說,建議大家使用Microsoft SQL Server或者MySQL就可以了。它們都是我們學習數(shù)據庫的好平臺。另外,如果曾經學習過數(shù)據庫原理或者關系代數(shù),那么,在學習數(shù)據庫的過程中,也可以再好好地復習一下這些基礎知識,對我們理解數(shù)據庫大有裨益。
Android開發(fā)學習方法
最后,我們結合華清遠見3G學院的“3G Android系統(tǒng)開發(fā)就業(yè)培訓班課程體系”來談談Android開發(fā)的學習方法。
Android是一個比較龐大的體系,從底層的Linux內核到上層的應用層,各部分的內容跨度也比較大。因此,一個好的學習方法對我們學習Android開發(fā)很重要。因此在華清遠見的課程體系設計中采取了循序漸進、將大目標分解成多個小目標,逐步達成對Android開發(fā)從應用層到底層系統(tǒng)及驅動開發(fā)全面掌握的目的。例如,可以先從Android的應用開發(fā)開始,等到對應用掌握的比較熟悉了,開始慢慢閱讀一些Android 應用框架層的源代碼,然后再漸漸往下去了解Android的JNI、Libraries、Dalvik虛擬機、HAL層、硬件驅動、Linux內核、ARM技術體系架構等,雖然近期Intel宣稱要讓Intel芯片支持Android系統(tǒng),但在可預見的時期內,在移動設備上,ARM的優(yōu)勢應該還是不可撼動的。具體來說,可以先通過在開發(fā)板上構建一個自己的Android系統(tǒng),了解Android系統(tǒng)的整體架構和啟動過程,由此先對Android有一個初步的了解;接下來,學習Android的應用開發(fā),在這里可以先學習Android的幾個主要組件、UI組件,先對Android應用開發(fā)有一個感性認識。在能夠熟練搭建用戶界面后,再逐漸來豐富應用的功能,例如:加上事件處理,使其能夠和用戶互動;加上數(shù)據存儲功能;加上聯(lián)網功能等等。在學完應用后,在此基礎上來學習游戲編程,先了解游戲設計的基本思路,然后開始從小的游戲、小的模塊開始做起,到最后能完成一個類似于現(xiàn)在熱門的《捕魚達人》這樣的游戲。在掌握了這些應用層級的內容后,可以去了解如何在Android應用中通過JNI去調用C/C++的接口,再往下學習Linux的內核和驅動開發(fā)如字符設備驅動、Flash設備驅動、網絡設備驅動等等;再在此基礎上,去學習Android驅動開發(fā)、HAL(硬件抽象層)開發(fā)、ARM體系架構和指令等等內容,這樣,Android開發(fā)的整個體系就都貫穿起來了。當然,因為時間有限,而底層部分的內容比較龐雜,因此,在真正去做這部分工作之前,我們只需要對其基本原理有所了解,做好相關知識的儲備,能夠根據老師的指導來完成相關的實驗。這樣在后續(xù)的工作中,就可以方便的往這方面發(fā)展,讓自己的事業(yè)更上一層樓。如果各位朋友希望了解更多關于Android從應用層到底層開發(fā)的學習路線,可以到華清遠見的官方上下載相應的視頻。