天天看點

與專家面對面:Android開發入門問與答

【獨家專訪】随着移動網際網路和智能終端裝置的發展,移動應用開發也随之逐漸升溫。在專訪最牛iPhone開發團隊之後,51CTO為您帶來Android應用開發入門方面的訪談,這次我們有幸請到Android開發的先驅者、 《Android應用開發揭秘》 作者楊豐盛老師為大家講解Android入門、其他開發平台轉向Android平台以及Android開發中一些常見問題。

專家簡介 :楊豐盛,國内Android開發的先驅者,對Android開發優勢深入研究,實戰經驗極其豐富。精通Java、C、C++等語言,專注于移動通信軟體開 發,在機頂盒軟體開發和MTK平台軟體開發方面有非常深厚的積累。曾經參與過《三國群英傳說》、《大航海傳奇》、《養成計劃》等遊戲的開發,2007年榮獲中國軟體行業協會遊戲軟體分會(CGIA)認證及國際遊戲開發教育聯合會國際認證。著有 《Android應用開發揭秘》 等熱銷技術書籍(該書繁體版即将上市)。

與專家面對面:Android開發入門問與答

《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應用開發揭秘》 ,寫書時就征求了大量初級開發者的意見,是以比較适合初學者,該書目前也被佳魁資訊有限公司引入,即将出版繁體版,同時也感謝廣大讀者的支援與關注。

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的開源就是給開發者們最好的禮物!最好的資料!

繼續閱讀