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