文章轉(zhuǎn)載自深入Android 【一】?
序
攜來百侶曾游,憶往昔崢嶸歲月稠。 -- 《沁園春·長沙》
????? 對于Android,我也算是老人了,所謂,有文有真想。正由于這段玩票經(jīng)歷,使得我在畢業(yè)后,鬼使神差的成為移動平臺的一名碼工,再次有機會放肆的擁抱Android。
????? 2010開年,手上突然有了一把閑散時間,有機會進一步總結(jié)和學(xué)習(xí)Android。于是想再一次為Android寫一系列的東西,這些東西來自于一些開發(fā)經(jīng)驗,對源碼的學(xué)習(xí)和對Android的淺薄認(rèn)識,也算是鞭笞自己學(xué)習(xí)的一種手段。
????? 其下所有內(nèi)容,預(yù)計有十?dāng)?shù)篇,抑或更多。基本和技術(shù)相關(guān),也許會配有一些其他相關(guān)比較閑淡的話題。可能會有一些具象實例,但更多的可能是自己的一些理解和認(rèn)知。所有一切,源自于妄自挖掘,難免有疏漏或誤解,觀者淡定。
以此為序,有心者,望共勉。
Android簡史
人生若只初識,何事秋風(fēng)悲畫扇。 -- 《木蘭辭》
????? 要說當(dāng)今移動平臺的當(dāng)紅辣子雞,Android說它是第二,也許沒有別家敢認(rèn)這個第一(好吧,iPhone,有意見就說...)。了解Android開發(fā)平臺的過去和現(xiàn)狀,除了往下看,另有便捷的方式就是在WikiPedia中鍵入Android,在這里,特此鳴謝GFW友情放生。
誕生
????? 早在2005年7月,Google舞動著手中的美刀,收下了由Andy Rubin(傳說中的Android之父...)等人創(chuàng)立的一家小公司,他們當(dāng)時做的就是基于Linux內(nèi)核的手機操作系統(tǒng),也就是小時候的Android。經(jīng)過Google多年打磨,Android在07年末,正二八經(jīng)的粉墨登場開門接客。
????? 自打一出生,Android便被釘板在富二代的角色上,不僅是因為老爹有錢的令人發(fā)指,也是因為其后有一幫金光閃耀的叔伯們保駕護航。這個叔伯群,便是響當(dāng)當(dāng)?shù)拈_放手機聯(lián)盟OHA(Open Handset Alliance)。這個聯(lián)盟涵蓋了中國移動、T-Mobile、Sprint這樣的移動運營商,也包括HTC、Motolora、三星這些的手機制造商,同時還有以Google為代表的手機軟件商,以Inter、Nvidia為標(biāo)志的底層硬件廠商和Astonishing Tribe這樣的商業(yè)運作公司(這公司是啥我也不曉得...)。作為后援團,他們理論上的任務(wù),是各盡其長,全力捧紅Android,實際上的任務(wù)是齊心協(xié)力,借Android東風(fēng)賺一個盆缽滿響。
????? 當(dāng)然,Android自所以被萬眾矚目一炮走紅,不僅僅是丫實在太有背景,同時,它也有這太多的新鮮的概念。Android是一個開源的平臺(恩,真正的全面開源,是在發(fā)布后很久以后了...),它給那些捂著自家平臺源碼當(dāng)寶的競爭對手們一記當(dāng)頭棒喝。Android自行研發(fā)了一套Java虛擬機,當(dāng)時僅提供JavaAPI的支持(NDK是更久以后的事情了...),號稱為專為高端智能設(shè)計。Android開發(fā)環(huán)境支持所有主流操作系統(tǒng)平臺,包括Windows,Linux,Mac,即便到今天,在手機開發(fā)中也是極其罕見的。Android的帶頭人Google,本身是做網(wǎng)絡(luò)起家,Android內(nèi)嵌大量Google網(wǎng)絡(luò)應(yīng)用,聽上去就顯得很酷。這所有的一切,共同造就了Android那鶴立雞群,不染風(fēng)塵的少俠形象。
造勢
????? 推出伊始,Google還有一個很震撼的推廣舉動,就是舉行所謂的Android程序挑戰(zhàn)賽(Android Developer Challenge,ADC)。整個比賽分成兩場,第一場(ADC1)比賽,在沒有任何真機問世,SDK還是個雛形的狀況下,便鳴金開鑼了。
????? 比賽套路是無差別的群毆,基本概念是無論你來自何方(還是要滿足美國法律要求和避嫌要求的),無論你想做些什么,也不管你是光桿司令還是流氓團伙,只要提交一個能在模擬器上跑起來的程序,就可參賽。而比賽只是對你作品進行參觀評比,作品的所有權(quán)依然放在開發(fā)者的口袋中。當(dāng)然,這還不算什么創(chuàng)新,NB的是無比豐厚的獎金,整個ADC的獎金高達(dá)1千萬美刀,每場各半,基本上首輪入圍獎(前50)已經(jīng)超越了那時候一般程序比賽的頭名獎金,這對很多小公司和個人而言,無疑是具有很強吸引力的。于是,各路打醬油好手蜂擁而至,各論壇、博客、網(wǎng)站也七嘴八舌的討論開來,一時間,滿城風(fēng)雨。ADC1我也很厚顏無恥的參加了,結(jié)果當(dāng)然可以預(yù)想,一毛錢都沒摸上。回想整個過程,差距最大的并不是在技術(shù)上,而是認(rèn)知上,我們玩的產(chǎn)品是人家?guī)啄昵巴媸O碌模f創(chuàng)新只是一抹笑談。
????? 當(dāng)時覺著,Google太NB了,ADC這種車馬未動糧草先行的招太華麗了,就這動靜,不論比出來個啥結(jié)果,這1千萬刀也掏值了。但時過境遷,現(xiàn)在回頭來想,也許一切并不是看上去那么美。由于沒有扎扎實實的真機擺出來,大家普遍抱著一種玩票的心理,真的敢不顧一切舍下身家性命押寶在Android上的盡在少數(shù),這就鍛造了Android平臺很長一段時間的只見雷不見雨的局面。而等喧囂過后,很多人熱情消退,Google真端出Android真機的時候,還需要重新熱場再來一次,也許,真的有些得不償失。
困境
????? 所有的東西現(xiàn)在來說,都是事后諸葛亮,只能聽個響不能當(dāng)個真。而真實的狀況是ADC1很快進入囧境,由于架構(gòu)設(shè)計上的種種原因,Google花了比預(yù)想多的多的時間做Android的優(yōu)化工作,ADC1比賽被迫不斷延期,徹底淪為懶婆娘的裹腳布。各路曾熱捧Android的媒體,也不失時機的倒戈,親手在自己畫上的感嘆號后面,重重畫上了個大大的問號。
????? 禍不單行,同樣是由于Android的性能問題,雖然各路高手把Android移植到了不同的手機平臺上,但傳說中的GPhone一直難產(chǎn)中,使得人們不免有了胎死腹中的猜測。與此同時,其他對手可一點也沒閑著。iPhone很快宣布開放SDK,以此來勾引純情的開發(fā)人員。Symbian被Nokia徹底收購,成為Nokia的自留地,開源計劃也很快浮出水面。所有景象,對Android而言都猶如夢魘。
破繭
????? 所有一切困境,都在G1發(fā)布后,漸漸消散了。2008年10月,第一款搭配Android平臺的真機,搭載著無限光榮與夢想的HTC Dream正式發(fā)售,這就是注定要載入史冊的G1。雖然比之當(dāng)時絕代風(fēng)華的iPhone,粗陋的G1猶如村姑遇上公主一般,但無論如何,G1讓人們真真切切的看到了Android。這就猶如你家買的跳票N久的期房,終于見著了個毛胚房,那種感覺,除了踏實,找不到更適合的詞匯了。
????? 好事當(dāng)然也會成雙,G1它不是一個人在戰(zhàn)斗。ADC1總算是落下帷幕,Android Market的也順理成章的破繭而出,早期的應(yīng)用,大都來自于ADC1的貢獻。Android也結(jié)束了偽開源的歷史旅程,正式開發(fā)SDK的源碼實現(xiàn),搭配的是Apache的License,這種坦誠相見的感覺看上去很不錯。忠心耿耿的HTC,更是再接再勵,在G1后,陸續(xù)發(fā)布了Magic(G2)和Hero(G3)。尤其是Hero的現(xiàn)身,惹得一陣小驚艷,HTC為Hero搭配的是基于Android改造UI的Sense系統(tǒng),以華麗的界面風(fēng)格賺足了眼球,也創(chuàng)了改造Android的先河。
????? 在HTC高歌猛進的同時,貓在螳螂后的一群黃雀,也敵在動我也動了。摩托羅拉,三星,LG,華為,戴爾,聯(lián)想等一干手機廠商紛紛跟進,各式各樣的Android蜂擁而至。與此同時,其他嵌入式廠商也推陳出新,愛可視(Archos)發(fā)布了基于Android的平板設(shè)備,明基的Android上網(wǎng)本也是箭在弦上,而基于Android的手持電子書閱讀設(shè)備也不斷的被推出,龐大的Android聯(lián)盟初現(xiàn)崢嶸。
????? 為了避免同質(zhì)化,各個廠商紛紛對Android進行的改造,摩托羅拉推出了Cliq,打得是SNS整合牌,三星的新系統(tǒng)也是被廣泛期待,而中移動的OMS丑媳婦也要見婆娘了,打著整合移動服務(wù)牌@_@的OMS,以丑陋的外貌、低下的SDK版本和雷死人不償命的宣傳文案(絕口不提Android,只說自己做了大量很NB的工作,其實...,哎,咋就那么小家子氣呢...)也算是招來大量眼球。
????? 而還是沒能耐住寂寞的Google,聯(lián)手HTC,一同推出了至今只為止最重量級的Android手機:Nexus One。江湖有云:天下武功,無快不破。搭載了全新的Android 2.1,1G的CPU,史上最清晰的手機屏幕的Nexus One,快的是一塌糊涂迅雷不掩耳盜鈴小叮當(dāng),在單機層面,第一次使得Android手機與iPhone掰手腕的能力(之前與iPhone的比較,都需要依靠集團力量,三英戰(zhàn)呂布...)。
????? 在各家廠商努力的同時,Android本身也沒有閑著,版本從1.1,一步步進階到了2.1,SDK的升級,伴隨著大量性能、接口的改進,和功能的豐富,Android變得越來越快,越來越省電,越來越豐富,越來越多Google服務(wù)被嵌入@_@。由于Android SDK是基于Java的,即便虛擬機做的很是NB,在某些情況下,性能也是無法與原生的C++代碼相提并論,于是,從1.5版起,除了SDK,Android還擁有了NDK(Native Develop Kit),它提供了一些C++的庫和編譯環(huán)境(庫是真的很少...),開發(fā)人員可以基于C++寫底層庫,用Java寫上層邏輯,通過混編的方式,兼得魚和熊掌。
????? Android Market的發(fā)展也甚為迅猛,雖然和其鼻祖App Store相比,應(yīng)用的規(guī)模和盈利能力還顯得比較幼齒,但其漲勢兇猛,發(fā)展趨勢遠(yuǎn)勝于前輩。國內(nèi)一些比較著名的手機軟件,也紛紛擁有了Android版本的小弟,比如網(wǎng)易有道的出品的有道詞典Android版(好吧,這是在插播廣告,歡迎大家進行圍觀并提寶貴意見...)。
起飛
????? 種種跡象表明,2010,也許就是姍姍來遲的Android元年。三星,moto,LG,HTC等多家手機制造廠商,都為2010年將推出的半數(shù)以上的手機搭配了Android。在國內(nèi),移動的OPhone,丑媳婦要正式揭開蓋頭了,慘烈是慘烈了一點,但聊勝于無,除了水貨,2010畢竟至少多了條購買Android手機的道路。
?????? 軟件開發(fā)方面,大家也從抱著雙臂冷眼旁觀的狀態(tài),進入到了一種伺機而動的戰(zhàn)略準(zhǔn)備階段。前不久召開的moto開發(fā)者大會,驚現(xiàn)國內(nèi)各領(lǐng)域的公司,試水開始,可見一斑。國內(nèi)各個山寨的Market的,也越來越貨源充足,下載量穩(wěn)步上升,升溫,就在當(dāng)下。而隨著G2為首的Android水機價格火速下調(diào),身邊路邊地鐵邊,可以看到越來越多的人,把玩著各式各樣的Android手機,狀況尤為喜人。
所以,2010,如果你有心,就做好準(zhǔn)備吧。