中國移動開發者社區專訪:學習Android的兩大法寶
本文為原創,如需轉載,請注明作者和出處,謝謝!
近日,接受了中國移動開發者社區的專訪,談了關于Android的一系列問題
http://dev.10086.cn/upload/developers_mag/vol8/index.htm?from=home
李寧近照
[背景資料]最近Android比較火,無論是摩托羅拉搭載 Android 2.2準備咸魚翻身,還是Android Market年底將在臺灣開市……這些消息足以讓人們為之振奮。但當人們看到Android的外表光鮮之時,更要注意到其潛在內涵,尤其對于廣大開發者, 一味盲目地崇拜并扎入其中并不實為理智之舉。本期,我們為您邀請到一位與代碼打了15年交道的李寧,以其親身經歷和開發經驗來為廣大開發者提出鑒言和忠 告。
15年演繹代碼與操作系統之戀
李寧1999年畢業于東北大學計算機專業,畢業后曾任東軟股份項目經理,2003年考入東北大學計算機專業讀研,2006年3月碩士畢業。從 1995年至今15年時間里,李寧幾乎一直與各種計算機語言和操作系統打交道。從最早接觸的DOS 3.3到后來的Windows 3.2、Windows 95、98、NT、2000乃至現在的Windows 7和Windows 2008,他對于計算機的學習歷程也正是經歷了微軟PC的鼎盛發展期和互聯網的20年。
李寧認為這一切都得益于其母親單位里有臺計算機,在上世紀90年代,在那個計算機并不普及的年代,使得他從小就有機會接觸到計算機并對其情有獨鐘,在1995年報考大學填報志愿時選擇了“計算機專業”,而在1996年他也擁有了自己的第一臺計算機。
對于開發語言,相信很多人已不再使用DOS了,而現在的孩子們也不能理解,在當時一張5寸容量僅為1.2M的軟盤曾經讓多少人為之癡迷。然而李寧是 從DOS下的Pascal開始學習編程語言,而后是C語言。最開始接觸的數據庫開發工具是DOS下的FoxPro 2.5,后來是Windows下的FoxPro3.0、FoxPro5.0.VB(Visual Basic)作為微軟第一款具有圖形界面的開發工具一經推出就曾引起不小的轟動,也為廣大開發者所使用。在快畢業時,李寧開始使用SQL Server 7.0,到后來的SQL Server 2008,作為上手比較容易的一種數據庫,也是李寧使用時間最長的,差不多已有10年時間。
接觸Linux則純屬偶然。大概是在三、四年前,李寧的Windows操作系統的電腦突然崩潰,很多軟件突然無法打開(有可能是中招了),而要重新 修復系統至少需要花費一個星期時間(因為系統里安裝的軟件實在是太多了,有的已很難找到安裝程序),不得已他安裝了Fedora Linux操作系統,并在Linux下繼續他的開發工作。而通過深入了解他發現,Linux在娛樂方面并不比Windows差,而單純對于技術人員來 講,Linux也比Windows更便于編程。一臺電腦安裝Windows 2008需占有2~3G的空間,而完全安裝Linux將占用8~9G空間,而且Linux所帶的工具大多都直接或間接地與開發有關,在完全安裝后基本就不 需要再安裝開發工具,所以更加適合開發人員使用。
熱戀還在Android:寫心得、出書投入十二分精神
提到移動應用開發,早在2003年李寧就嘗試過使用Symbian系統開發軟件,但當他開發完成準備安裝在手機上才發現,塞班系統安裝程序是需要購 買簽名,一年需要幾百至上千美元費用,這對于僅作娛樂考慮的李寧來說,不太現實,移動開發也就此擱置。到了2007年Google發布Android,這 在當時也沒能引起他太多注意,直到2008年底,世界上第一部支持Android的手機G1推出,這才讓李寧感覺到Android的猛烈攻勢,于是,他開 始嘗試Android軟件開發,雖然程序也需要簽名,但比較自由,在配置文件上配置即可,不需要購買。
關于智能手機操作系統,李寧認為目前是第二代智能操作系統時代,以塞班為首的第一代智能手機操作系統,面臨著屏幕小影響軟件表現、系統本身過于臃腫 (Symbian的源代碼超過2000萬行,相當于Windows XP的源代碼量)、用戶體驗不足等諸多弊端,現在新出的手機屏幕分辨率多在320*480之上,Android、iPhone和Windows Phone 7都支持大分辨率,還支持傳感器,如重力、光學傳感等。同時傳統的塞班代碼積累太多,2000多萬的代碼量在修改和加入新功能上比較困難,不太適合開發者 操作,而且在操作方式上并沒有帶來更好的用戶體驗。如果塞班不行,要有一個操作系統來取代的話,目前Android具有絕對優勢。雖然Android存在 版本太多的問題,但Google承諾,Android 3.0之后的版本將一年升級一次,雖然這樣做放緩了Android的升級速度,但卻給手機硬件廠商以及開發者留有足夠的時間來適應新的系統,從而也在很大 程度上解決了Android版本眾多的問題。據Google宣稱,將禁止第三方對Android 3.0及以上版進行擴展(如HTC Sense就是一種Android擴展),這樣可以使Android更加統一,從而可大大提升用戶體驗。
《Android/OPhone開發完全講義》
《人人都玩開心網:Ext JS + Android + SSH整合開發Web與移動SNS》
李寧看到,由于Android的支持廠商眾多,從低端到高端機型都有,因此,他決定從Android入手,挖掘在移動領域屬于他的第一批寶藏。由于 從事Android的時間比較早,也算是國內第一批Android開發人員,經歷了Android的幾乎所有的版本的變遷,親身體會了Android由弱 變強的過程。為了紀念首次進入移動領域以及Android,在2009年下半年開始,李寧用了四個月多的時間將他的經驗寫成了一本書 《Android/OPhone開發完全講義》,該書在上市近一個月以來,銷售排名一直在計算機類前10的位置,取得了不錯的成績。李寧還告訴我們,這本 書的版權目前已賣給臺灣的一家出版社,估計二個月后將會在臺灣市場銷售。李寧還寫了一本與Android相關的書籍:《人人都玩開心網:Ext JS + Android + SSH整合開發Web與移動SNS》。
結晶之作:“樂博Android客戶端”開發、升級
“樂博Android客戶端0.9”軟件界面
“樂博Android客戶端0.9”軟件界面
“樂博Android客戶端1.0”軟件開發中
在學習Android的過程中,寫書可能只是一部分,李寧還開發了一系列軟件,包括多功能日歷、樂博Android客戶端(用戶在Android手 機上管理微博)等。“樂博Android客戶端”這款軟件的開發,源于國內外有很多微博網站,而很多人在不同的微博都有帳號,這會在同步管理上帶來麻煩。 因此,樂博Android客戶端就是幫助用戶維護這些微博,并能實現同步發送。
2010年初李寧完成了第一個版本0.9版的開發,目前1.0版正在開發中,1.0版將基于Android 2.1開發,并完善多種功能。比如將支持超過10種微博(包括新浪、搜狐、Follow5、Twitter等),除了具有微博客戶端的基本功能(發布、瀏 覽、評論、轉發微博)外,還支持同步多種微博、自動翻譯(將微博內容翻譯成其他語言)、圖像編輯(支持多種圖像效果)、輔助輸入(輸入表情字符、節日祝賀 等)、快速發布(通過手機桌面上的功能圖標可以迅速調用輸入微博的界面)等功能。在未來的版本中還支持將指定的微博生成電子書、更高級的輔助輸入功能。
對于這款軟件,還要提及的是其圖片處理功能,因為一條微博只允許發布一張圖片,而李寧通過對拍照效果進行處理,對照片的后期處理,通過軟件將多張照片通過 橫豎合并在一張圖上等特殊效果處理,從而實現一條微博可以發布多張圖片的效果。相信這個功能會讓很多圍脖為此歡呼。
軟件開發完成,李寧打算將其發布在中國移動Mobile Market應用商場,之前也發布過但因移動MM不支持聯網應用而被駁回,所以希望到時可以通過審核并順利上架。
愛要理智:愛Android更要懂Android
我們關注李寧對Android投入的愛是否有所回報,他告訴我們并未直接帶來收益,不過已經從著作及參賽獎項中獲得一定回報。對于移動MM,他認為 MM是目前國內最大的手機軟件商店,但收費軟件和免費軟件的下載量差距很大,這可能是因為國人都不習慣花錢買軟件所造成的,希望MM可以為開發人員提供更 多的贏利機會。通過某些服務而不是賣軟件來贏利,例如,開放通信接口、植入性廣告、專業廣告等。對于軟件,產品銷售是一方面,后期服務也很關鍵。以移動的 角度看,可以進行培訓,培養更多的Android人才,畢竟現在靠軟件賣錢的時代已經快過去了(直接向用戶收費也不符合互聯網的精神),免費才是王道。而 通過開發免費軟件賺錢的人也不在少數,比如Foxmail作者張小龍,當Foxmail用戶達到幾千萬時,軟件也自然擁有巨大的市場價值,最終以2000 萬賣出;再比如來電通的作者蘇志宏也是一個例子。
在這個全球熱戀Android的時代,李寧不只愛著Android,更懂得Android,這對于很多癡迷著Android的開發者來說,尤為重 要。李寧認為,學好Android有兩大法寶:Android源代碼(包括Java和C/C++的源代碼)和Linux.他把新入門的新手分為二種類型, 一種是技術新手,一種是Android新手。
對于技術新手,李寧奉勸他們應該先從Java學起,至少需要幾個月甚至半年的熟悉這種語言,這是不可缺少的基本功練習。對于現在有的人急于求成,自認為Java不熟練但Android卻很精通,李寧用“拿著駕照但卻不會開車的馬路殺手”來形容這部分人。
當技術新手對Java有了一定掌握,并獨自編寫大量的代碼,對于一般的技術領域能駕輕就熟時,就可以開始Android的學習了,這時候的技術新手 才能晉升為Android新手。而對于Android新手,一般一、二天就能夠學會使用Android編寫程序,但要深入研究就需要些功夫。因為 Android是開源的,所以首先要研究Android的源代碼,雖然關于Android的書在國內已經有幾十本了,但書籍只能引導入門卻不能將你帶到一 定高度,如果要深入研究就必須研究源代碼,通過源代碼才能真正了解Android的內部構造。
李寧認為:“開發是一件很痛苦的事,但也是一件很快樂的事。就像一杯咖啡,雖然喝著感覺很苦,但隨后而來的卻是咖啡的香甜。”當然,這里所說的痛苦 并非開發本身,而是在開發過程中遇到無法解決的問題時,如果時間要求再緊,會更加郁悶。李寧記得2年前剛接觸Android時,雖然憑著多年的開發經驗, 應付一般的技術不成問題,但仍然還有很多Android技術問題無法得到解決。那時國內、外關于Android的技術論壇并不多,而且資源匱乏,除了 Android的官方文檔外,最大的資源就是Android的源代碼,而任何與Android相關的文檔(也包括官方文檔)永遠只能是入門或API列表, 永遠不能觸及實質的東西。因此,獲得我所需要的東西的唯一途徑就是直接查閱Android的源代碼(幸好源代碼很容易從網上獲得)。所以,要學好 Android最好的方法,也是最快的捷徑,就是盡可能理解Android的源代碼。同時,鑒于Android是基于Linux內核的,所以學習 Linux的相應API以及各種操作也是十分必要的。這就好比如果想要學習Windows Mobile就多研究下Windows的道理是一樣的。
當以上幾點都能夠達到基本上就是高手了。當我們問及李寧目前是處于哪個階段時,他很謙虛地告訴我們,正處在源代碼階段,他收集了1.7G的源代碼,正在仔細研究中。
附:李寧簡介
李寧,東北大學計算機專業碩士、CSDN博客專家、51CTO客座專家、中國移動開發者社區技術管理員、OPhone專家、ophonesdn版主 (Id:mobileguy)、eoeandroid版主(id:androidguy)。曾任東軟股份項目經理,領導并參與開發十幾個大中型項目。從 2005年進入寫作領域以來,為程序員、電腦編程技巧與維護、電腦報、IT168、天極網等平面媒體和網絡媒體撰寫了一百多篇原創技術和評論文章。并在個 人blog(http://nokiaguy.blogjava.net)上發表了大量的原創技術文章。
主要獎項:
1、2009年ophone原創技術征文大賽二等獎(獎品:dell mini 3i手機一部)
2、2010年獲得ophonesdn季度優秀版主(獎品:LG GW800手機一部)
3、《OPhone2.0之初體驗》博客征文最佳人氣博文二等獎
4、CSDN應用達人(獎品:微軟無線鼠標)
5、2007年獲得《電腦編程技巧與維護》優秀作者(獎品:U盤)
6、首屆.Net平臺創新編程征文比賽三等獎(2008年)(獎品:MP5)
7、第二屆微軟.net平臺應用程序開發征文大賽三等獎(2009年)(獎品:MP5)
8、MSN機器人大賽最佳人氣獎(獎品:價值1000元的無線鼠標和鍵盤)
主要著作:
《Android高薪之路:Android程序員面試寶典 》http://book.360buy.com/10970314.html
新浪微博:http://t.sina.com.cn/androidguy 昵稱:李寧_Lining
posted on 2010-08-25 05:45 銀河使者 閱讀(4993) 評論(2) 編輯 收藏 所屬分類: java 、 原創 、 圖書 、Android/OPhone