iPhone十年越獄史:玻璃屏幕和金屬機(jī)身后的神奇

對(duì)于我們當(dāng)中的大多數(shù)人來(lái)說(shuō),2007年6月底能夠用上第一款iPhone,就相當(dāng)于是觸摸到未來(lái)了。畢竟我們都很想知道在那塊玻璃屏幕后面和金屬機(jī)身里面,到底隱藏著什么樣神奇的功能。
   獵云網(wǎng)3月9日?qǐng)?bào)道(編譯:田小雪)
  
  無(wú)論對(duì)手機(jī)應(yīng)用程序開(kāi)發(fā)員來(lái)說(shuō),還是對(duì)普通iPhone用戶來(lái)說(shuō),3月6日都是非常特殊的一天。因?yàn)榻衲甑倪@一天,是iPhone軟件開(kāi)發(fā)工具包(即Software Development Kit,以下簡(jiǎn)稱SDK)問(wèn)世的十周年紀(jì)念日。我個(gè)人認(rèn)為,說(shuō)它切實(shí)改變了許多人的生活也一點(diǎn)都不為過(guò)。不僅如此,它還給蘋(píng)果公司的業(yè)務(wù)發(fā)展帶來(lái)了很大影響。所以,今天我們就來(lái)回顧一下十年前iPhone SDK的開(kāi)發(fā)過(guò)程。(為了方便各位讀者理解,本文將盡量不使用專業(yè)的科技術(shù)語(yǔ)。)
  
  觸摸未來(lái)
  
  對(duì)于我們當(dāng)中的大多數(shù)人來(lái)說(shuō),2007年6月底能夠用上第一款iPhone,就相當(dāng)于是觸摸到未來(lái)了。畢竟我們都很想知道在那塊玻璃屏幕后面和金屬機(jī)身里面,到底隱藏著什么樣神奇的功能。
  
  雖然蘋(píng)果公司已經(jīng)向我們介紹了這款新產(chǎn)品的各項(xiàng)功能,但卻沒(méi)有告訴我們它是如何研發(fā)出這些功能的。也就是說(shuō),對(duì)于它的處理器、運(yùn)行速度、儲(chǔ)存空間、應(yīng)用程序開(kāi)發(fā),我們是一無(wú)所知。唯一能夠確定的,就是這款新設(shè)備像一個(gè)黑銀色的盒子。
 
iPhone十年越獄史:玻璃屏幕和金屬機(jī)身后的神奇
 
  作為開(kāi)發(fā)人員,我們很想知道這款設(shè)備到底有些什么功能,想知道軟件設(shè)計(jì)將會(huì)發(fā)生什么樣的改變。總之,我們很好奇,也很想學(xué)習(xí)那些尚未接觸過(guò)的新知識(shí)。隨即了解之后,我們便知道了,那叫越獄。
  
  越獄
  
  沒(méi)過(guò)多久,我們就有了新發(fā)現(xiàn)。全新的文件系統(tǒng),在短短幾個(gè)星期的時(shí)間內(nèi)就問(wèn)世了。又過(guò)了幾個(gè)月,我們解鎖了全部的本地應(yīng)用程序設(shè)計(jì)和使用體驗(yàn),形成了完整的開(kāi)發(fā)工具鏈,大家也都紛紛開(kāi)始為本地應(yīng)用程序編寫(xiě)安裝程序。
 
iPhone十年越獄史:玻璃屏幕和金屬機(jī)身后的神奇
 
  當(dāng)然,所有這些成果之所以能夠順利取得,還是要感謝iPhone的研發(fā)工具。蘋(píng)果依靠的是與Mac操作系統(tǒng)一樣的基礎(chǔ)設(shè)施,他們選擇了一個(gè)類似的環(huán)境來(lái)不斷推進(jìn)開(kāi)發(fā)流程,不斷嘗試新的方法。正是這種相似性,使得我們這些“外人”能夠在最短時(shí)間內(nèi)大致掌握蘋(píng)果內(nèi)部的產(chǎn)品和程序研發(fā)流程。
  
  舉個(gè)例子,iPhone中的大多數(shù)軟件,都是利用Objective-C語(yǔ)言開(kāi)發(fā)出來(lái)的。而Mac開(kāi)發(fā)人員一直使用的是一款名為class-dump的逆向工程工具,主要用來(lái)展示一款應(yīng)用程序的不同組成部分,并且了解這些不同部分都是如何相互聯(lián)系、相互溝通的。在體驗(yàn)過(guò)首款iPhone中的應(yīng)用程序和基本框架之后,這款軟件就帶我們走進(jìn)了蘋(píng)果內(nèi)部編寫(xiě)代碼語(yǔ)言的世界。
  
  其中,最為重要的一個(gè)組成部分就是UIKit。它包含了所有的用戶界面部件,比如說(shuō)按鈕和表視圖等等。由于它們與我們?cè)贛ac上使用的部件較為類似,因而開(kāi)發(fā)一些點(diǎn)擊和滾動(dòng)項(xiàng)目也就不怎么費(fèi)事。
  
  另外,還有一個(gè)較為重要的組成部分,那就是操作系統(tǒng)Unix。蘋(píng)果選擇這一操作系統(tǒng)就意味著我們很快就能夠在iPhone上使用大量開(kāi)源軟件。我們可以用這些開(kāi)源軟件來(lái)開(kāi)發(fā)屬于自己的應(yīng)用程序,接著將它們放到其他手機(jī)上去。而且,或許還可以查看程序中最新崩潰列表的內(nèi)容。
  
  我還清楚地記得第一次使用當(dāng)前操作系統(tǒng)名稱查看系統(tǒng)信息時(shí)的情形。
  
  早期應(yīng)用程序開(kāi)發(fā)
  
  其實(shí),除了我還有很多其他開(kāi)發(fā)人員也認(rèn)為,蘋(píng)果公司新產(chǎn)品背后的開(kāi)發(fā)流程,與它顛覆性的外觀設(shè)計(jì)一樣神奇。所以,當(dāng)時(shí)出現(xiàn)針對(duì)iPhone的應(yīng)用程序開(kāi)發(fā)熱潮,也并不是一件稀奇事。
  
  對(duì)于新興技術(shù)開(kāi)發(fā)人員來(lái)說(shuō),最為重要的事件,無(wú)疑就是獨(dú)立開(kāi)發(fā)者大會(huì)C4。當(dāng)時(shí),那場(chǎng)大會(huì)的舉辦時(shí)間是2007年8月。不少參會(huì)者都拿著新款iPhone,認(rèn)真探索它的各種功能。而我們當(dāng)中的大多數(shù)人,都是有過(guò)Mac開(kāi)發(fā)經(jīng)驗(yàn)的研究員。但即便如此,我們還是認(rèn)為參加蘋(píng)果的全球開(kāi)發(fā)者大會(huì),聽(tīng)公司介紹新產(chǎn)品的研發(fā)和功能,是一件非常“幸福”的事。
  
  此外,公司還針對(duì)iPhone應(yīng)用程序編程接口舉辦了一場(chǎng)編碼比賽。用大會(huì)組織者Jonathan Rentzsch的話說(shuō),他希望我們能夠充分發(fā)揮自己的想象力和創(chuàng)造力,拿出新穎的想法和令人信服的產(chǎn)品。所幸,我們做到了。
  
  我自己是開(kāi)發(fā)了一款在Javascript中應(yīng)用圖形計(jì)算器的網(wǎng)頁(yè)應(yīng)用程序,當(dāng)時(shí)主要也是為了表達(dá)自己對(duì)于蘋(píng)果幾個(gè)月前所拿方案不太滿意。因?yàn)樵诋?dāng)時(shí)那個(gè)方案中,用戶界面比較過(guò)時(shí)、比較難用,而且運(yùn)行速度非常緩慢,并沒(méi)有達(dá)到我們當(dāng)中大多數(shù)人所期望的那種效果。
  
  另外,那些本地應(yīng)用程序也是讓我們大吃一驚。當(dāng)時(shí)比賽的冠軍得主,是開(kāi)發(fā)了一款視頻會(huì)議應(yīng)用程序的Glen Aspeslagh和Ken Aspeslagh二人。他們?cè)缣O(píng)果三年就研發(fā)出了帶有前置攝像頭的硬件設(shè)備,還自行編寫(xiě)了一些類似FaceTime的程序代碼。要知道,首款iPhone問(wèn)世時(shí)是沒(méi)有攝影機(jī)的,所以他們的研發(fā)成果著實(shí)讓人佩服。
  
  對(duì)于我個(gè)人而言,在比賽中拿到第二名的作品,才更好地代表了未來(lái)的發(fā)展方向。首先,那是一款游戲;其次,在移動(dòng)設(shè)備上的運(yùn)行效果非常好。而且,更為重要的是,它告訴我們,優(yōu)秀的設(shè)計(jì)和編程確實(shí)能夠?qū)F(xiàn)實(shí)生活中的具體事物融入電子設(shè)備當(dāng)中,在觸摸屏上實(shí)現(xiàn)流暢操作,并且在較大程度上優(yōu)化整體使用效果。
  
  在C4大會(huì)召開(kāi)的前幾天,Lucas Newman和Adam Betts二人開(kāi)發(fā)出了一款名為L(zhǎng)ights Off的應(yīng)用程序。在那之后,Lucas就開(kāi)始幫我開(kāi)發(fā)越獄工具。到后期階段,他還給了我源代碼,讓我能夠評(píng)估這些工具的使用效果。所幸的是,我還算比較擅長(zhǎng)備份和維護(hù)軟件。說(shuō)不定讀者現(xiàn)在手中使用的新款iPhone X,仍然用的是我們十年前就非常喜歡的代碼。
 
iPhone十年越獄史:玻璃屏幕和金屬機(jī)身后的神奇
 
  如果你是一位使用Xcode的開(kāi)發(fā)員,那是可以在GitHub上看到這一項(xiàng)目的。而且,Lucas當(dāng)時(shí)發(fā)給我的所有內(nèi)容和資料,也全都保存在了該項(xiàng)目的“越獄”文件夾中。Xcode項(xiàng)目適用于那套代碼,所以可以直接進(jìn)行開(kāi)發(fā)和運(yùn)行。除非必要,否則我們不會(huì)進(jìn)行任何改變。與原來(lái)的項(xiàng)目相比,Xcode運(yùn)行起來(lái)要更加容易一些。不過(guò),對(duì)分辨率的要求,就不要太高了。
  
  在所有代碼中,你將會(huì)看到所謂的根視圖控制器。要記住,當(dāng)時(shí)我們都在學(xué)習(xí)如何從零做起自主編寫(xiě)應(yīng)用程序。所以,對(duì)于故事板和資產(chǎn)目錄這類現(xiàn)在看來(lái)理所當(dāng)然的工具,當(dāng)時(shí)是完全缺乏的。
  
  當(dāng)然,如果你不用Xcode的話,那還有其他選擇。iPhone鐵粉Steve Troughton-Smith有一款加強(qiáng)版,在蘋(píng)果應(yīng)用商店中有售。我到現(xiàn)在還非常喜歡這款游戲,也經(jīng)常玩,它對(duì)iMore的Hall of Fame的入門(mén)介紹還是非常好的。說(shuō)到這里,工具有了,開(kāi)發(fā)志向也有了,接下來(lái)應(yīng)該做什么呢?
  
  Iconfactory的首批應(yīng)用程序
  
  2007年6月,我們剛剛針對(duì)Twitter發(fā)布了Mac應(yīng)用程序的2.1版本。按理說(shuō),有了它之后,將Cocoa代碼從一個(gè)平臺(tái)移到另一平臺(tái),就會(huì)變得容易許多,但其實(shí)不然。
  
  然而,在那一過(guò)程中,我還是學(xué)到了不少知識(shí),享受到了編碼和開(kāi)發(fā)的樂(lè)趣。iPhone的問(wèn)世吸引了各種各樣的程序員,其中就包括我們的軟件工程師Sean Heber。2007年,Sean主要負(fù)責(zé)的是網(wǎng)頁(yè)開(kāi)發(fā),對(duì)于Objective-C語(yǔ)言或Mac編程,可以說(shuō)是一無(wú)所知。但這些都沒(méi)有妨礙他了解和學(xué)習(xí),最后成功寫(xiě)出了自己的第一款應(yīng)用程序。
  
  后來(lái)到了同年11月,受到妻子的影響,他又立志每天都寫(xiě)出一款應(yīng)用程序,并且為之取名為iApp-a-Day,當(dāng)時(shí)在越獄社區(qū)中引起了不少關(guān)注。正是這股熱情和堅(jiān)持,讓他拿到了在Tapulous工作的機(jī)會(huì),從而能夠與那些負(fù)責(zé)Tap Tap Revenge游戲開(kāi)發(fā)的優(yōu)秀人才一同工作。
  
  在一個(gè)月中,Sean通過(guò)自己的探索發(fā)現(xiàn),只有你想不到的,沒(méi)有iPhone做不到的。當(dāng)然,它可以用來(lái)玩游戲,但同時(shí)也可以用來(lái)追蹤記錄自己的賬單,就連演奏一曲或者幫你掛畫(huà)也完全沒(méi)問(wèn)題。
 
iPhone十年越獄史:玻璃屏幕和金屬機(jī)身后的神奇
 
  至于當(dāng)時(shí)的開(kāi)發(fā)記錄和成果,我和Sean到現(xiàn)在都還保存著。雖然到最后編寫(xiě)出來(lái)的代碼比較糟糕,但對(duì)于我們來(lái)說(shuō),探索的過(guò)程遠(yuǎn)比簡(jiǎn)單的代碼要有意義得多??粗切┯涗?,能夠讓我們回想起當(dāng)初那段渴望學(xué)習(xí)新知識(shí)、努力探索新未來(lái)的美好青春時(shí)光。
  
  其實(shí),UIKit的早期版本中,還是有很多驚喜之處的。不過(guò),想要找出XML語(yǔ)法分析程序,需要耗費(fèi)大量時(shí)間。甚至可能永遠(yuǎn)無(wú)法找到,因?yàn)樗宦裨诹薕fficeimport基礎(chǔ)框架下面。另外,還一些很重要的東西也遺失了。比如說(shuō),我們可能無(wú)法找到可行的方式來(lái)用Objective-C語(yǔ)言恢復(fù)浮點(diǎn)數(shù)。
  
  而且,過(guò)程中還出現(xiàn)了一些讓人想不通的工程決策。舉個(gè)例子,原本你可以隨意將HTML放進(jìn)文本視圖中,即便是只用<b>這類簡(jiǎn)單標(biāo)簽也完全沒(méi)問(wèn)題。但沒(méi)想到,卻用了一些更加復(fù)雜的標(biāo)簽。視圖拼合的時(shí)候,則使用的是LKLayer。雖然它與Mac OS Leopard全新Core Animation有些類似,但并非一模一樣。在表格方面,也是引入了一個(gè)全新的“cell reuse”概念。雖然可以實(shí)現(xiàn)快速滾動(dòng),但卻比較復(fù)雜、難以操作。最后,如果視圖控制器能夠選擇針對(duì)AppKit發(fā)布的那些,那產(chǎn)生的效果應(yīng)該會(huì)更為驚艷。
  
  雖然所有這些都沒(méi)有阻止我們不斷嘗試和不斷學(xué)習(xí)的腳步,但沒(méi)過(guò)多久我們還是停下來(lái)了。
  
  真正的SDK
  
  首款iPhone問(wèn)世后,我們當(dāng)中一些編寫(xiě)越獄應(yīng)用程序發(fā)現(xiàn),這款產(chǎn)品存在一些不足之處,但當(dāng)時(shí)大家都沒(méi)有在意。
  
  對(duì)于新產(chǎn)品,大家都非常興奮。但很快,興奮勁兒過(guò)去之后,不禁開(kāi)始思考接下來(lái)應(yīng)該做些什么呢?或許是受越獄愛(ài)好者的影響,又或許是蘋(píng)果自己原本的計(jì)劃,總之當(dāng)喬布斯在iPhone問(wèn)世5個(gè)月之后正式對(duì)外宣布SDK的時(shí)候,我們?nèi)几吲d壞了。
  
  按照計(jì)劃,iPhone SDK應(yīng)該是要在2008年2月問(wèn)世的。但考慮到任務(wù)量比較大,所以當(dāng)蘋(píng)果宣布推遲幾天的時(shí)候,大家也都沒(méi)有表示失望。當(dāng)時(shí),發(fā)布會(huì)是在市政廳和另一場(chǎng)活動(dòng)一同舉辦的。
  
  十年前的3月6日,我們第一次知道什么叫做模擬器,第一次知道Xcode中還有其他一些變化,第一次接觸到Core Location和OpenGL這些新鮮有趣的框架,以及前所未見(jiàn)、聞所未聞的應(yīng)用商店,能夠直接把我們開(kāi)發(fā)出來(lái)的產(chǎn)品送到消費(fèi)者手中。Jason Snell還轉(zhuǎn)錄了當(dāng)時(shí)的Macworld活動(dòng),到現(xiàn)在也還保存有視頻資料。
  
  成為真正的應(yīng)用程序開(kāi)發(fā)王者
  
  興奮過(guò)后,我們開(kāi)始考慮一些比較實(shí)際的問(wèn)題。雖然并不清楚還剩多少時(shí)間,但總歸還是要加快速度的。
  
  最后,我們花了大概四個(gè)月的時(shí)間把應(yīng)用程序完全準(zhǔn)備好。好在還有當(dāng)時(shí)在Iconfactory的越獄工作經(jīng)驗(yàn),所以我們?cè)谂宄O(shè)計(jì)和開(kāi)發(fā)問(wèn)題之后,就有了一個(gè)順利的開(kāi)頭。不過(guò),當(dāng)時(shí)開(kāi)發(fā)Twitter的應(yīng)用程序還是花了不少時(shí)間的。
  
  就在蘋(píng)果應(yīng)用商店正式上線之前,公司還在一年一度的設(shè)計(jì)大賽儀式上增加了一些全新的應(yīng)用程序種類。而我們很榮幸拿到了大獎(jiǎng),從而成為了應(yīng)用商店中的第一批應(yīng)用程序,并且排名還算比較靠前。
  
  當(dāng)時(shí),Iconfactory首款移動(dòng)應(yīng)用程序進(jìn)駐應(yīng)用商店的時(shí)候,應(yīng)用程序總數(shù)也就不過(guò)幾百個(gè)。而現(xiàn)在,都已經(jīng)超過(guò)200萬(wàn)了。我們不僅開(kāi)發(fā)面向消費(fèi)者的移動(dòng)應(yīng)用程序,也開(kāi)發(fā)面向設(shè)計(jì)師和開(kāi)發(fā)員的工具。
  
  十年可以發(fā)生很多事情,但有一點(diǎn)沒(méi)有改變,那就是我們整個(gè)團(tuán)隊(duì)都很自豪能夠成為整個(gè)系統(tǒng)中的一個(gè)組成部門(mén),并且為之做出自己的貢獻(xiàn)。相信接下來(lái)的十年,我們還會(huì)取得更好的成績(jī)。
讀者們,如果你或你的朋友想被手機(jī)報(bào)報(bào)道,請(qǐng)狠戳這里尋求報(bào)道
相關(guān)文章
熱門(mén)話題
推薦作者
熱門(mén)文章
  • 48小時(shí)榜
  • 雙周榜
熱門(mén)評(píng)論