51CTO獨(dú)家專訪:Android開發(fā)入門問與答
原創(chuàng)【51CTO獨(dú)家專訪】隨著移動(dòng)互聯(lián)網(wǎng)和智能終端設(shè)備的發(fā)展,移動(dòng)應(yīng)用開發(fā)也隨之逐漸升溫。在專訪最牛iPhone開發(fā)團(tuán)隊(duì)之后,51CTO為您帶來(lái)Android應(yīng)用開發(fā)入門方面的訪談,這次我們有幸請(qǐng)到Android開發(fā)的先驅(qū)者、《Android應(yīng)用開發(fā)揭秘》作者楊豐盛老師為大家講解Android入門、其他開發(fā)平臺(tái)轉(zhuǎn)向Android平臺(tái)以及Android開發(fā)中一些常見問題。
專家簡(jiǎn)介:楊豐盛,國(guó)內(nèi)Android開發(fā)的先驅(qū)者,對(duì)Android開發(fā)優(yōu)勢(shì)深入研究,實(shí)戰(zhàn)經(jīng)驗(yàn)極其豐富。精通Java、C、C++等語(yǔ)言,專注于移動(dòng)通信軟件開發(fā),在機(jī)頂盒軟件開發(fā)和MTK平臺(tái)軟件開發(fā)方面有非常深厚的積累。曾經(jīng)參與過《三國(guó)群英傳說》、《大航海傳奇》、《養(yǎng)成計(jì)劃》等游戲的開發(fā),2007年榮獲中國(guó)軟件行業(yè)協(xié)會(huì)游戲軟件分會(huì)(CGIA)認(rèn)證及國(guó)際游戲開發(fā)教育聯(lián)合會(huì)國(guó)際認(rèn)證。著有《Android應(yīng)用開發(fā)揭秘》等熱銷技術(shù)書籍。
1、我們知道Android是使用Java語(yǔ)言進(jìn)行應(yīng)用開發(fā)的,對(duì)于一個(gè)入門者,想要開發(fā)Android應(yīng)用,對(duì)Java知識(shí)有哪些要求?需要哪些知識(shí)儲(chǔ)備?
答:對(duì)于該問題確實(shí)有不少人咨詢過,始終有一點(diǎn)可以肯定,那就是Java基礎(chǔ)越好,學(xué)習(xí)Android應(yīng)用開發(fā)就越容易,越輕松!沒有Java基礎(chǔ)也可以同時(shí)學(xué)習(xí)Java和Android(這需要根據(jù)自身情況來(lái)看,我個(gè)人不推薦這種方式)。因?yàn)锳ndroid應(yīng)用程序使用Java語(yǔ)言來(lái)編寫,使用JDK中的Javac編譯器進(jìn)行編譯,從而產(chǎn)生Java字節(jié)碼(.class文件)。然后,這些文件還要被轉(zhuǎn)化成Android的.dex文件,這部分轉(zhuǎn)換工作包括一些優(yōu)化和壓縮等技術(shù),由Dalvik虛擬機(jī)來(lái)完成,應(yīng)用開發(fā)人員只需要使用Android提供的API來(lái)完應(yīng)用程序編寫即可;Android 引用了很大一部分的Java API(很多都是編寫Java程序經(jīng)常使用的),但是也省略了一些,比如界面部分(Java.awt包)等,所以在學(xué)習(xí)Java基礎(chǔ)時(shí)就可以針對(duì)Android所引入的這部分來(lái)學(xué)習(xí),概括一下就是:Java標(biāo)準(zhǔn)語(yǔ)法規(guī)則、Java提供的一些工具內(nèi)庫(kù)。另外,Android的界面布局使用xml語(yǔ)法規(guī)則,所以有必要了解一下xml相關(guān)的知識(shí)。
2、已經(jīng)有一定經(jīng)驗(yàn)的Java開發(fā)者,想要走進(jìn)Android進(jìn)行應(yīng)用或者游戲的開發(fā),需要重新學(xué)習(xí)哪些知識(shí)?
答:Android引入了大部分Java API及其規(guī)則,其實(shí)在Android平臺(tái)中很多應(yīng)用程序功能的實(shí)現(xiàn)是既可以使用標(biāo)準(zhǔn)的Java API,也可以使用Android API,比如網(wǎng)絡(luò)通信、I/O模塊等都能同時(shí)兼容,但是Android也增加了一部分專門使用于Android的API,比如圖形圖形,IPC機(jī)制等。那么對(duì)于有Java經(jīng)驗(yàn)的開發(fā)者所要學(xué)習(xí)就主要在Android所新增這部分API及其工作原理。其實(shí)我在寫《Android應(yīng)用開發(fā)揭秘》時(shí)就考慮了這部分有一定Java經(jīng)驗(yàn)的開發(fā)者,同時(shí)對(duì)應(yīng)用和游戲進(jìn)行了分別講解,幾乎介紹了Android平臺(tái)所新增的API的使用,另外該書還特別適用于有一定J2ME經(jīng)驗(yàn)的開發(fā)者。
3、之前進(jìn)行.NET或者PHP開發(fā)的程序員轉(zhuǎn)向Android開發(fā)有什么快速的方法嗎?
答:這個(gè)問題就好比我已經(jīng)可以駕駛小橋車了,該如何去駕駛大客車或者大貨車呢?因此需要學(xué)習(xí)的就是大客車或者大貨車與小橋車之間的不同即可。Android是一個(gè)操作系統(tǒng),因此其應(yīng)用程序編寫的規(guī)則、工作原理和機(jī)制都需要符合其系統(tǒng)要求,所以這部分開發(fā)者應(yīng)該從該平臺(tái)不同的規(guī)則、構(gòu)架、原理和機(jī)制出發(fā),學(xué)習(xí)Android所提供的API。對(duì)于PHP轉(zhuǎn)Android的稍微麻煩一點(diǎn)兒,需要首先學(xué)習(xí)面向?qū)ο蟮木幊蹋▽W(xué)習(xí)Java)。
4、Android開發(fā)是針對(duì)移動(dòng)設(shè)備的,與傳統(tǒng)的軟件開發(fā)相比有哪些不一樣的地方需要我們注意?
答:這個(gè)問題,我覺得用“靈活”兩個(gè)字來(lái)回答再好不過了,傳統(tǒng)的軟件開發(fā)受到諸多因素的影響,比如:設(shè)備、API限制等,而Android本身就是一個(gè)開放源碼的操作系統(tǒng),這樣就使得開發(fā)者可以很輕松的通過源碼來(lái)解決很多傳統(tǒng)軟件開發(fā)中遇到的非常痛苦的問題。說實(shí)話,我在當(dāng)初接觸Android的時(shí)候,第一感覺就是這個(gè)系統(tǒng)太靈活了,是一個(gè)適合開發(fā)者根據(jù)自己的思路來(lái)創(chuàng)新的平臺(tái),比如:對(duì)于某些功能的實(shí)現(xiàn),他并沒有限定開發(fā)者必須使用某種方式或者某個(gè)API來(lái)完成,而是讓開發(fā)者自由的發(fā)揮,這就是與傳統(tǒng)軟件開發(fā)最大的不同,但是需要注意,在開發(fā)過程中,我們要始終保持不違背Android系統(tǒng)的權(quán)限、機(jī)制和原則。
5、能不能為Android開發(fā)的初學(xué)者推薦一條學(xué)習(xí)路線?在這條線路中有哪些重點(diǎn)需要關(guān)注?
答:對(duì)于一個(gè)初學(xué)者首先應(yīng)該學(xué)習(xí)Java基礎(chǔ),熟悉Java這種編程語(yǔ)言,這部分比較重要將直接關(guān)系到學(xué)習(xí)Android的時(shí)間進(jìn)度,當(dāng)你能夠獨(dú)立寫出部分Java程序時(shí),可以開始進(jìn)入Android的學(xué)習(xí)了,進(jìn)入Android的學(xué)習(xí)應(yīng)該首先掌握Android的系統(tǒng)結(jié)構(gòu),應(yīng)用程序框架,應(yīng)用程序必須的各個(gè)模塊,當(dāng)然這部分內(nèi)容可以直接參考官方提供的開發(fā)入門文檔,當(dāng)入門之后可以開始深入Android各個(gè)模塊進(jìn)行學(xué)習(xí),了解各模塊的功能、機(jī)制,從而對(duì)其提供的API接口進(jìn)行熟練且靈活的運(yùn)用。對(duì)于Android的學(xué)習(xí)流程,大家可以參考最受初中級(jí)讀者歡迎的《Android應(yīng)用開發(fā)揭秘》,寫書時(shí)就征求了大量初級(jí)開發(fā)者的意見,因此比較適合初學(xué)者,該書目前也被臺(tái)灣佳魁資訊有限公司引入,即將出版繁體版,同時(shí)也感謝51CTO及廣大讀者的支持與關(guān)注。
#p#
6、這樣的路線走下來(lái)大概需要多長(zhǎng)時(shí)間?從事應(yīng)用開發(fā)和游戲開發(fā)的學(xué)習(xí)路線和重點(diǎn)是否會(huì)有所不同?
答:時(shí)間的問題就需要根據(jù)個(gè)人的不同情況來(lái)衡量,一般對(duì)于沒有任何Java基礎(chǔ)的開發(fā)者來(lái)說至少需要2月以上來(lái)學(xué)習(xí)Java,因?yàn)檫@也將直接影響后期對(duì)Android的學(xué)習(xí),有了Java基礎(chǔ),對(duì)于Android的學(xué)習(xí)就簡(jiǎn)單很多了,幾天時(shí)間都能完成Android入門。入門簡(jiǎn)單,但是入門之后的深入需要一個(gè)長(zhǎng)期的經(jīng)驗(yàn)積累。對(duì)于應(yīng)用方向的開發(fā)者需要重點(diǎn)掌握Android的各個(gè)組件(包括各個(gè)組件的組合運(yùn)用)、網(wǎng)絡(luò)通信、音頻和視頻這些模塊,對(duì)于游戲開發(fā)方向則應(yīng)該把重點(diǎn)放在圖形圖像方面包括2D和3D(Opengl ES)渲染。對(duì)于3D游戲的開發(fā)我們和華章培訓(xùn)網(wǎng)一起推出了《Android 3D游戲引擎實(shí)現(xiàn)》視頻教程,全面的介紹了使用Opengl ES來(lái)開發(fā)3D游戲。
7、Android的應(yīng)用程序本身與傳統(tǒng)Java程序有什么不同之處?搭配Eclipse和ADT,開發(fā)效率如何?
答:首先從運(yùn)行環(huán)境層次來(lái)分析,Java程序在擁有Java虛擬機(jī)的情況下就能運(yùn)行,而Android應(yīng)用程序不僅需要Dalvik虛擬機(jī)來(lái)解釋,而且需要很多系統(tǒng)組件及API的支持。另外每個(gè)Android應(yīng)用程序都是相對(duì)獨(dú)立的,不能在一個(gè)應(yīng)用程序中調(diào)用另一個(gè)應(yīng)用程序。因此這些都是傳統(tǒng)Java程序開發(fā)者需要注意的地方,Java編程的IDE和工具確實(shí)比較多,但是Google選擇了Eclipse并提供了基于Eclipse的插件ADT使得應(yīng)用程序的開發(fā)變得非常方便,相信大家都知道,開發(fā)應(yīng)用最困難的就是Debug了吧,在Android平臺(tái)除了Eclipse本身的調(diào)試工具之外,ADT還提供了眾多輔助調(diào)試的功能,比如:ddms,模擬器工具等。同時(shí),如果我們的應(yīng)用程序需要使用NDK來(lái)開發(fā)原生程序,那么Eclipse也可以很方便的集成C\C++開發(fā)環(huán)境等,總的說來(lái)使用Eclipse和ADT來(lái)開發(fā)應(yīng)用程序是個(gè)非常完美的組合,當(dāng)然不排除可以使用其他的工具來(lái)開發(fā)!
8、能不能從項(xiàng)目管理的角度為我們介紹一下,一個(gè)Android項(xiàng)目的具體開發(fā)流程,在移動(dòng)軟件的項(xiàng)目開發(fā)中需要注意哪些問題?
答:這個(gè)問題比較大了,那么我就自己開發(fā)Android項(xiàng)目的流程來(lái)說說,首先Android目前的應(yīng)用程序雖然不像iPhone上那么多,但是其項(xiàng)目的同質(zhì)化越來(lái)越嚴(yán)重,因此在最初對(duì)項(xiàng)目的定義階段非常重要,將直接影響產(chǎn)品的生命周期,客戶(玩家)需要一個(gè)獨(dú)特的,新穎的、便于操作的產(chǎn)品,這都是我們?cè)诙x項(xiàng)目的過程中需要考慮的,在確定了項(xiàng)目就需要對(duì)項(xiàng)目進(jìn)行規(guī)劃、執(zhí)行和跟蹤,該過程主要確定產(chǎn)品的開發(fā)周期、涉及技術(shù)人員,技術(shù)問題如何來(lái)避免和解決,在開發(fā)過程中葉需要定期的對(duì)項(xiàng)目進(jìn)行測(cè)試,包括測(cè)試其視覺感、體驗(yàn)感、兼容性等等,對(duì)發(fā)現(xiàn)的問題及時(shí)的進(jìn)行處理。最后項(xiàng)目開發(fā)完成,測(cè)試通過之后我們的項(xiàng)目其實(shí)并沒有完,還有更加重要的工作要做,收集客戶反饋的信息(可以在開發(fā)中嵌入相關(guān)程序或其他),對(duì)項(xiàng)目進(jìn)行更新及其完善。^ _^說了這么多,也不知道說清楚沒有!
9、目前除了Android SDK,還有NDK。NDK主要應(yīng)用在哪類項(xiàng)目的開發(fā)?是否值得我們關(guān)注和學(xué)習(xí)?
答,Android平臺(tái)的第三方應(yīng)用程序均是依靠基于Java的Dalvik特制虛擬機(jī)進(jìn)行開發(fā)的。原生SDK(NDK)的可以讓開發(fā)者更加直接的接觸Android系統(tǒng)資源,并使用傳統(tǒng)的C或C++語(yǔ)言編寫程序,并在程序封包文件(.apks)中直接嵌入原生庫(kù)文件。NDK主要用于一些具有大量邏輯計(jì)算和高性能的圖像渲染的工作,比如我們要開發(fā)款大型的3D游戲,那么如果使用Android SDK通過Java來(lái)開發(fā),速度和性能上很難滿足我們的要求,這是就可以使用NDK通過C\C++來(lái)開發(fā)原生的程序來(lái)處理這些渲染,可以極大的提高我們游戲的性能。所以我們很有必要對(duì)NDK進(jìn)行學(xué)習(xí)。
10、最后,有哪些比較好的Android社區(qū)向開發(fā)者推薦?
答:隨著Android的發(fā)布,一個(gè)又一個(gè)的Android技術(shù)社區(qū)誕生了,甚至以前一些大型的社區(qū)也有開放了Android板塊,因此開發(fā)者能夠找到學(xué)習(xí)資源的社區(qū)也就很多,除了非常優(yōu)秀的51CTO移動(dòng)開發(fā)頻道之外,下面幾個(gè)是比較典型的可以推薦給大家。
◆Google Android主站:http://code.google.com/Android/
◆Android官方文檔:http://code.google.com/Android/documentation.html
◆Android中國(guó)開發(fā)者團(tuán)隊(duì): http://groups.google.com/group/Android-developers-zh
◆Androidev社區(qū):http://anddev.org/
◆EoeAndroid社區(qū):http://www.eoeAndroid.com/
最后,大家不要忘了,Android的開源就是給開發(fā)者們最好的禮物!最好的資料!
51CTO推薦Android開發(fā)詳解專題
【51CTO.com獨(dú)家特稿,非經(jīng)授權(quán)謝絕轉(zhuǎn)載,合作媒體轉(zhuǎn)載請(qǐng)注明原文作者及出處!】
【編輯推薦】
- 專訪最牛iPhone開發(fā)團(tuán)隊(duì):走進(jìn)移動(dòng)開發(fā)
- 外媒評(píng)出五款最佳Android企業(yè)級(jí)應(yīng)用
- 在Ubuntu下建立Eclipse的Android開發(fā)環(huán)境
- Intent,Android應(yīng)用核心探秘
- Android應(yīng)用程序開發(fā)的四個(gè)重要組成部分