我們CSDN的活動(dòng)前面已經(jīng)連續(xù)舉辦了8期,加上還有和一些合作伙伴做的會(huì)議,大概有17期。前面的話題有涉及到產(chǎn)品、設(shè)計(jì),還有推廣運(yùn)營(yíng)方面的,也有技術(shù)的。這次我們回到了開(kāi)發(fā)者所關(guān)注的技術(shù)平臺(tái)的本身,然后跟大家分享一些大家關(guān)注的iOS5升級(jí)的問(wèn)題,還有技術(shù)路線選擇的問(wèn)題。
上海改變科技CTO李亮
以下為上海改變科技CTO李亮的演講實(shí)錄:
我演講的題目是“移動(dòng)開(kāi)發(fā)中的技術(shù)路線選擇”,主要講的內(nèi)容是關(guān)于目前,大家都知道現(xiàn)在是移動(dòng)互聯(lián)網(wǎng)風(fēng)起云涌的時(shí)代,比起以前,以前應(yīng)用、開(kāi)發(fā)也都存在,那時(shí)候大多集中在塞班上面。我要講的就是基本能夠提一下現(xiàn)在的這些移動(dòng)的平臺(tái),然后各個(gè)平臺(tái)有一些什么特點(diǎn),或者他有什么一些好的或者不好的地方。
今天來(lái)的應(yīng)該多數(shù)都是做iOS開(kāi)發(fā)的人,除了iOS是非常重要的平臺(tái),Android也是非常大的平臺(tái)。我們?cè)谧鲩_(kāi)發(fā)的時(shí)候,有些時(shí)候我們需要考慮到在各個(gè)平臺(tái)之間的不同點(diǎn),以及對(duì)技術(shù)路線的選擇,我們要做一些決策。
各個(gè)平臺(tái)的現(xiàn)狀和特性
現(xiàn)在這個(gè)移動(dòng),整個(gè)業(yè)界是什么樣的情況?有哪些平臺(tái)存在,各個(gè)平臺(tái)之間,目前是什么狀態(tài)?我們這個(gè)時(shí)代可以稱(chēng)之為一個(gè)新的移動(dòng)時(shí)代。以前的時(shí)代可以稱(chēng)之為舊的時(shí)代,以前就是移動(dòng)并沒(méi)有顯得這么熱門(mén)。換句話說(shuō),我們拿手機(jī)上網(wǎng),都沒(méi)有現(xiàn)在這么順暢,手機(jī)的處理能力不會(huì)像現(xiàn)在這樣的好。這個(gè)新的時(shí)代,是什么時(shí)候開(kāi)始?基本上是07年,是Apple推出了iPhone,大家都知道,iPhone基本上屬于開(kāi)創(chuàng)了一個(gè)新的移動(dòng)的整個(gè)時(shí)代。隨后谷歌發(fā)布了Android,當(dāng)然現(xiàn)在還包括平板,整個(gè)移動(dòng)產(chǎn)業(yè)是基本上跟原來(lái)完全變了一個(gè)樣子,這個(gè)不僅僅是是設(shè)備,或者是技術(shù)設(shè)備,很快應(yīng)用開(kāi)發(fā),技術(shù)平臺(tái),這個(gè)涉及到整個(gè)產(chǎn)業(yè)界跟互聯(lián)網(wǎng),跟甚至PC上的軟件,其實(shí)都發(fā)生了一個(gè)很大的變化。
那么,我覺(jué)得有一點(diǎn),我們能夠趕上一個(gè)新的時(shí)代的開(kāi)端是一個(gè)非常幸運(yùn)的事情。前一段時(shí)間,是在整個(gè)互聯(lián)網(wǎng)的熱潮其他的時(shí)候,那時(shí)候把我們對(duì)于軟件,對(duì)于計(jì)算機(jī)能力的認(rèn)識(shí)有了一個(gè)非常大的變化。我想,這次我們所面臨的一個(gè)新的移動(dòng)時(shí)代,其實(shí)不壓于當(dāng)初互聯(lián)網(wǎng)的變化,就在于我們手里有一個(gè)新式武器,我們的計(jì)算變得無(wú)處不在。在這個(gè)過(guò)程當(dāng)中,有很多不會(huì)變化,廠商、設(shè)備,系統(tǒng)。因?yàn)橄到y(tǒng)是我們應(yīng)用開(kāi)發(fā)所賴(lài)以進(jìn)行的一個(gè)基礎(chǔ),在這個(gè)系統(tǒng),或者這個(gè)平臺(tái)上我們能夠做哪些事情?
在整個(gè)移動(dòng)互聯(lián)網(wǎng)這個(gè)產(chǎn)業(yè)開(kāi)始的時(shí)候,自然就是涌現(xiàn)出了很多廠商,廠商又出現(xiàn)了非常多的設(shè)備。我們大家可以看到,雖然說(shuō)我們大家覺(jué)得蘋(píng)果的東西不是特別多,很簡(jiǎn)單,一個(gè)iPhone,一個(gè)iPad,作為他移動(dòng)設(shè)備的東西。但是,在另外一方面,在蘋(píng)果以外,在Android的世界里,就有無(wú)數(shù)不同的廠商,產(chǎn)生出了不同尺寸的,甚至性能有高有第的設(shè)備,這是非常多樣性的情況,系統(tǒng)也是一樣。雖然我們今天經(jīng)過(guò)一段時(shí)間的發(fā)展,可以說(shuō)我們現(xiàn)在這個(gè)時(shí)間段已經(jīng)是移動(dòng)互聯(lián)網(wǎng)這個(gè)產(chǎn)業(yè)從剛開(kāi)始成長(zhǎng)到成熟的階段,目前應(yīng)該說(shuō)邁入了成熟的階段。
在這樣一個(gè)階段大家都可以看到,我們系統(tǒng)最主流的就是兩種,一個(gè)就是iOS,一個(gè)就是Android,還有一些其他系統(tǒng),但是那些都不稱(chēng)之為主流。在現(xiàn)在這個(gè)移動(dòng)互聯(lián)網(wǎng)的時(shí)代里面,有一個(gè)非常明顯的特點(diǎn)。我們大家說(shuō)到手機(jī),我們會(huì)說(shuō)這個(gè)手機(jī)是iPhone的還是Android的,不會(huì)說(shuō)我這個(gè)手機(jī)是HTC的還是三星的。也就是說(shuō),你生產(chǎn)廠商比起你這個(gè)系統(tǒng)的品牌來(lái)說(shuō),顯得無(wú)關(guān)緊要了,系統(tǒng)更重要。我們無(wú)論是開(kāi)發(fā)應(yīng)用還是使用應(yīng)用看中的是系統(tǒng),系統(tǒng)變得越來(lái)越關(guān)鍵,當(dāng)然,廠商的品牌是在于處理能力怎么樣,你的應(yīng)用能不能在老版本的系統(tǒng)上跑,或者新版本對(duì)新版本的適應(yīng)能力如何?都是討論的這樣的一些問(wèn)題。廠商的角色漸漸在淡化。
而另外一個(gè)在移動(dòng)這個(gè)產(chǎn)業(yè),原來(lái)是非常重要的角色,比如說(shuō)運(yùn)營(yíng)商大家都知道,像中國(guó)移動(dòng)、聯(lián)通,或者中國(guó)電信。原來(lái)在這個(gè)時(shí)代還沒(méi)有開(kāi)始之前,運(yùn)營(yíng)商是占絕對(duì)主要地位的。所有的你即使有應(yīng)用開(kāi)發(fā),也必須通過(guò)像中國(guó)移動(dòng)的比如說(shuō)百寶箱,或者通過(guò)SP這樣的渠道才能夠讓盡可能多的用戶(hù)使用,然后才能夠收到一些錢(qián)。但是,現(xiàn)在這個(gè)時(shí)代不一樣了,現(xiàn)在這個(gè)時(shí)代,對(duì)運(yùn)營(yíng)商來(lái)說(shuō),逐漸退化成為一個(gè)提供數(shù)據(jù)通道的這么一個(gè)角色。我們需要運(yùn)營(yíng)商有3G連接,甚至2G也可以,需要的是一個(gè)數(shù)據(jù)通道,他基本上變成一個(gè)純粹的數(shù)據(jù)提供商。
那么,我們一個(gè)一個(gè)來(lái)看,首先看iOS,iOS最著名的蘋(píng)果的品牌,代表著比較好的工藝,比較優(yōu)雅的設(shè)計(jì),比較好的用戶(hù)界面。那么,這是蘋(píng)果的品牌標(biāo)準(zhǔn)。然后,他iOS上面現(xiàn)在只有iPhone、iPad,蘋(píng)果TB三種設(shè)備。對(duì)我們來(lái)說(shuō),重要的還是關(guān)注iPhone和iPad。在iOS里面有一個(gè)非常明顯的特征,因?yàn)樘O(píng)果控制了整個(gè)從設(shè)備生產(chǎn)到系統(tǒng)的整個(gè)東西,硬件全部都是由他自己做,他可以很好的控制住他所需要的東西。iOS他設(shè)備首先都是一致的,操作系統(tǒng)也是一樣的,并且iPhone和iPad的系統(tǒng)曾經(jīng)有一陣子分成兩個(gè),但是最后又合上了。他的差距只在意他們的屏幕大小不一樣。
大家大部分在做開(kāi)發(fā)程序的時(shí)候,設(shè)計(jì)一個(gè)用于iPhone上面的一個(gè)用戶(hù)界面,跟iPad上面的用戶(hù)界面,應(yīng)該總是會(huì)有不一樣的,要利用到iPad的大屏幕。但是,從他一致性的角度來(lái)說(shuō),蘋(píng)果的東西一致性是最好的,不管怎么升級(jí),他的整個(gè)屏幕大小都是一樣,坐標(biāo)、系統(tǒng)都是一樣。蘋(píng)果從寫(xiě)程序角度怎么做的?蘋(píng)果的整個(gè)系統(tǒng)的坐標(biāo)體系不是整數(shù),是浮點(diǎn)數(shù)。所以他可以維持整個(gè)設(shè)備的屏幕坐標(biāo)的大小是一樣的。這個(gè)他對(duì)整個(gè)應(yīng)用說(shuō)應(yīng)用變成的接口提供了非常好的一致性,這些對(duì)開(kāi)發(fā)者非常有用。他系統(tǒng)本身有提供了很多非常束縛的,很多東西只要我們直接利用就可以達(dá)到非常好的效果。
對(duì)于開(kāi)發(fā)者來(lái)說(shuō),應(yīng)用開(kāi)發(fā)也是很重要的。如果大家以前接觸過(guò)以前的比如說(shuō)Windows Mobile的模擬器,大家知道模擬器跟設(shè)備之間的相似形是一個(gè)天上,一個(gè)地下,但是蘋(píng)果在這一點(diǎn)上做的非常好。
要說(shuō)的第二個(gè)系統(tǒng)就是Android。Android的特點(diǎn)是什么?第一,他在自己標(biāo)榜的開(kāi)發(fā),整個(gè)系統(tǒng)的代碼都可以看得到,并且他對(duì)于廠商來(lái)說(shuō)不需要任何費(fèi)用。Android的第二個(gè)保證是谷歌牌子的保證,有谷歌在會(huì)永遠(yuǎn)的開(kāi)發(fā)下去,這其實(shí)也是給設(shè)備廠商和開(kāi)發(fā)者的一個(gè)信心。然后谷歌就會(huì)跟運(yùn)營(yíng)商和開(kāi)發(fā)商組織一起,形成了一個(gè)開(kāi)發(fā)者首席聯(lián)盟組織。在這個(gè)組織里面,相對(duì)來(lái)說(shuō)比我們大家外面的人能夠早一點(diǎn)拿到Android系統(tǒng)的原代碼,或者更加能夠得到谷歌的支持,這是他的一個(gè)使命。
然后,Android的開(kāi)放性,引來(lái)了非常大的廠商,三星、摩托羅拉等,然后包括一些別的二線廠商,甚至現(xiàn)在有非常非常多的山寨廠商也開(kāi)始專(zhuān)項(xiàng)Android的系統(tǒng)。大量的廠商生產(chǎn)的大量的設(shè)備,自然而然就造成了不同規(guī)格的設(shè)備。這樣就造成了市面上有非常多的終端設(shè)備,比如說(shuō)CPU的規(guī)格、屏幕大小以及分辨率大小可能都不一樣。另外,我們?cè)陂_(kāi)發(fā)中碰到過(guò)一個(gè)問(wèn)題,比如說(shuō)HTC或者三星、摩托,他們生產(chǎn)的手機(jī)都有了HTML,這本來(lái)是非常高興的事情。但是,問(wèn)題是Android沒(méi)有HTML結(jié)合的標(biāo)準(zhǔn),這個(gè)對(duì)開(kāi)發(fā)者其實(shí)是一個(gè)困擾。
接下來(lái)第三個(gè)就是對(duì)Windows Phone 7,他最大的后臺(tái)就是Microsoft。對(duì)于整個(gè)產(chǎn)業(yè)來(lái)說(shuō),Microsoft顯然是慢了一步,在他進(jìn)入這個(gè)市場(chǎng)的時(shí)候,iOS和Android已經(jīng)進(jìn)來(lái)了。所以他整個(gè)系統(tǒng)的發(fā)展也沒(méi)有看兩者那么快,他是一個(gè)后來(lái)者,他要去奪取市場(chǎng)份額,相對(duì)來(lái)說(shuō)比較困難一點(diǎn)。至于他的發(fā)展前景怎么樣,很難說(shuō)。就在我們剛才看到的那個(gè)份額上來(lái)看,他的份額很少。
那么他以前完全改變了原來(lái)Windows Phone 7跟PC很類(lèi)似的方式,現(xiàn)在完全是新的方式了。那么,Windows Phone到現(xiàn)在為止,其實(shí)剛剛出了1.5,說(shuō)明他其實(shí)還是在他演化的非常非常的早期。那么,他現(xiàn)在最有力的一個(gè)事情就是諾基亞徹底投靠了Window陣營(yíng),并且最近已經(jīng)有兩款新的手機(jī)推出來(lái)。這個(gè)是好事還是壞事?很難說(shuō),因?yàn)橹Z基亞有很強(qiáng)的生產(chǎn)能力和設(shè)計(jì)能力。但是,諾基亞拋棄了原有的塞班的那套東西,完全投靠Windows Phone能不能使他能夠重生,這個(gè)也未必可知。而Microsoft在諾基亞加入之后,能不能變得很好,大家都是抱著將信將疑的態(tài)度看這個(gè)事情。
Windows Phone7作為一個(gè)開(kāi)發(fā)平臺(tái),就目前來(lái)說(shuō),還是有很多限制。所以,第一個(gè),他跟用戶(hù)界面相關(guān)的應(yīng)用程序的開(kāi)發(fā)太偏重于游戲這一塊,缺乏一個(gè)中間一點(diǎn)的,或者說(shuō)我能夠相對(duì)平衡一點(diǎn)的這么一個(gè)開(kāi)發(fā)接口給開(kāi)發(fā)者。因?yàn)槲覀冇幸粋€(gè)產(chǎn)品,是Android上的開(kāi)發(fā)器,我們以前考慮過(guò)能不能移到Windows Phone 7上。但是后來(lái)覺(jué)得很難。前面就不一樣了,iOS跟Android都是非常完備的。雖然說(shuō)Android只能用Java來(lái)開(kāi)發(fā),但是后來(lái)就突破了很多,然后你可以去做一些比較深入到系統(tǒng)內(nèi)部的東西。
看了前面三個(gè)比較大頭的系統(tǒng),看一些剩下的東西,也是這個(gè)市場(chǎng)上比較傳統(tǒng)的。第一個(gè)是RIM,他在北美的商業(yè)用戶(hù)占有非常大的市場(chǎng)。在國(guó)內(nèi)有很多水貨賣(mài)的很便宜,但是在整個(gè)應(yīng)用系統(tǒng)來(lái)說(shuō),北美遠(yuǎn)遠(yuǎn)比別的地方好。RIM這個(gè)本身來(lái)說(shuō),我自己的觀點(diǎn)來(lái)看,這個(gè)系統(tǒng)非常成就,非常落后,非常不適應(yīng)與這個(gè)時(shí)代,但是他的用戶(hù)還在,得益于他的整個(gè)BES,或者說(shuō)他賴(lài)以成名的系統(tǒng)。最近,RIM其實(shí)在這兩年當(dāng)中,他的市場(chǎng)已經(jīng)逐漸的回落,對(duì)他來(lái)說(shuō)也是一個(gè)非常大的危機(jī)。那么,最近RIM有一個(gè)比較大的動(dòng)作,首先他推出了一個(gè)平板。他這個(gè)系統(tǒng)是一個(gè)事實(shí)的Unix系統(tǒng),那個(gè)系統(tǒng)相對(duì)來(lái)說(shuō),比他現(xiàn)在的這個(gè)非常封閉,非常單一,功能很小的系統(tǒng),一下子變成一個(gè)全功能的系統(tǒng)出來(lái)了,而且他要過(guò)渡到手機(jī)上。一旦完成了這個(gè),他的功能就會(huì)非常強(qiáng)大。他現(xiàn)在稱(chēng)之為BBX這個(gè)平臺(tái)。
第二個(gè)就是塞班,應(yīng)該已經(jīng)是過(guò)去時(shí)了。雖然諾基亞說(shuō),塞班的設(shè)備他們還會(huì)維持一段時(shí)間,但是他們不會(huì)生產(chǎn)高端設(shè)備,我們可以認(rèn)為塞班已經(jīng)可以畫(huà)上句號(hào)了。當(dāng)然,如果您開(kāi)發(fā)的程序,比如說(shuō)面對(duì)國(guó)內(nèi)的一些相對(duì)來(lái)說(shuō)中低端手機(jī)的用戶(hù),他還有市場(chǎng)。但是,如果想將來(lái)怎么樣,我要跟著將來(lái)的發(fā)展方向走,去開(kāi)發(fā)將來(lái)可用的東西,塞班不是一個(gè)好選擇。
另外一個(gè)Bada,他本身跟Android一樣,他底下的核心和Android一樣。三星有一個(gè)系列的手機(jī)用的是這個(gè)系統(tǒng)。當(dāng)然,從他本身來(lái)說(shuō),基本上也類(lèi)似,該有的功能也都有,現(xiàn)在大家三四款手機(jī)用的這個(gè)系統(tǒng)。第四個(gè)是webOS,他提供本身的一個(gè)框架可以操作系統(tǒng),webOS整個(gè)用戶(hù)體驗(yàn)的設(shè)計(jì)非常好,可是他被HP收購(gòu),HP會(huì)不會(huì)拋棄他,大家不知道。
前面看了那么多平臺(tái),對(duì)于每一個(gè)平臺(tái),他不僅僅是平臺(tái),開(kāi)發(fā)者看中他能夠提供什么樣的能力,然后夠是圍繞這個(gè)生態(tài)環(huán)境,這個(gè)包括你開(kāi)發(fā)的應(yīng)用程序,能不能很方便的有一個(gè)方式讓你賣(mài)出去,或者你賣(mài)出去,有沒(méi)有方便的方式把錢(qián)收回來(lái)。還包括了你這個(gè)平臺(tái)有沒(méi)有足夠多的用戶(hù),一個(gè)應(yīng)用程序,必須有了足夠多的用戶(hù),這個(gè)程序才有價(jià)值,或者說(shuō)開(kāi)發(fā)者才有價(jià)值。生態(tài)環(huán)境包括普及性,就是有多少用戶(hù)用,應(yīng)用開(kāi)發(fā)的方便性,我有沒(méi)有一個(gè)方便性,可以很方便的開(kāi)發(fā),可以在實(shí)際的設(shè)備商調(diào)試,很容易的就放到設(shè)備商去。應(yīng)用分發(fā)的渠道,我的應(yīng)用怎么樣才能到達(dá)用戶(hù)。用戶(hù)取得應(yīng)有的方便性,就是我前面所說(shuō)的,我不需要PC,我直接手機(jī)上有App Store,直接可以下載東西。
對(duì)于這樣一個(gè)圍繞某個(gè)平臺(tái)的整個(gè)生產(chǎn)環(huán)境來(lái)說(shuō),兩種現(xiàn)象非常明顯,一個(gè)是良性循環(huán),一個(gè)是惡性循環(huán),良性循環(huán)的例子就是App Store,然后又開(kāi)發(fā)者把應(yīng)用上傳上去,馬上有用戶(hù)購(gòu)買(mǎi)。一般來(lái)說(shuō),蘋(píng)果的購(gòu)買(mǎi)度會(huì)強(qiáng)烈一點(diǎn),這一點(diǎn)也是很有趣的一個(gè)現(xiàn)象。有人購(gòu)買(mǎi)了,開(kāi)發(fā)人員就有動(dòng)力,就會(huì)有更多的開(kāi)發(fā)人員進(jìn)來(lái),他就會(huì)有更多的應(yīng)用程序出現(xiàn),用戶(hù)的選擇余地就更大,那買(mǎi)應(yīng)用的人就更多,那設(shè)備賣(mài)出來(lái)的也就越多,整個(gè)生態(tài)環(huán)境就非常的良性。在目前情況來(lái)看,蘋(píng)果是做的非常好的。
惡性循環(huán)是另外一種方式,可以拿谷歌做例子,或者大專(zhuān)院校的Android市場(chǎng)做例子。他們有很多惡意應(yīng)用,一開(kāi)始就是這樣,上面應(yīng)用的質(zhì)量參差不齊,有很多很差,用戶(hù)就沒(méi)有購(gòu)買(mǎi)的動(dòng)力,那開(kāi)發(fā)者就沒(méi)有開(kāi)發(fā)的動(dòng)力,所以現(xiàn)在Android市場(chǎng)也很繁榮,但是他收費(fèi)應(yīng)用不多,免費(fèi)應(yīng)用很多。為什么?因?yàn)殚_(kāi)發(fā)者在上面收錢(qián)的可能性比App Store小很多,整個(gè)市場(chǎng)就變成了一個(gè)惡性循環(huán)。這實(shí)際上是谷歌經(jīng)營(yíng)上的一個(gè)問(wèn)題。
其實(shí)剛才我也已經(jīng)提到了iOS的整個(gè)生態(tài)系統(tǒng)跟Android整個(gè)生態(tài)系統(tǒng)的比較。我覺(jué)得從我的觀點(diǎn)來(lái)看,iOS的生態(tài)系統(tǒng)會(huì)構(gòu)建的比Android的更好。這兩者的特點(diǎn)有一個(gè)明顯的特點(diǎn)就是iOS是蘋(píng)果一手掌控的,所有的應(yīng)用都不能隨便安裝,隨便跑。蘋(píng)果把整個(gè)公司控制的非常嚴(yán)格,使得你不能隨便做。有的開(kāi)發(fā)者想取什么東西都取不到,很多現(xiàn)實(shí)在那里面。就是說(shuō),對(duì)于整個(gè)iOS的生態(tài)系統(tǒng)來(lái)說(shuō),蘋(píng)果把他控制的非常嚴(yán)格,每一步都審查的非常嚴(yán)格。這個(gè)會(huì)對(duì)一些開(kāi)發(fā)者造成不變,但是反過(guò)來(lái)說(shuō)對(duì)應(yīng)用質(zhì)量的保證會(huì)有一個(gè)比較好的保證。
那么,Android是另一個(gè)例子,這個(gè)例子就是谷歌基本上不管,人們樣的應(yīng)用都可以上,都可以裝。那么,開(kāi)發(fā)者覺(jué)得非常自由,因?yàn)槭紫饶憧梢灾老到y(tǒng)內(nèi)部怎么工作,非常自由,對(duì)開(kāi)發(fā)者有更多的角度可以考慮問(wèn)題,可以開(kāi)發(fā)更多不同性質(zhì)的應(yīng)用。但是,一個(gè)沒(méi)有監(jiān)管,沒(méi)有審查的一個(gè)環(huán)境,也造成了,大家都知道Android上惡意應(yīng)用很多。某一個(gè)國(guó)外的開(kāi)發(fā)商開(kāi)發(fā)了很好的應(yīng)用,國(guó)內(nèi)的把他下載下來(lái),把的東西篡改掉,或者開(kāi)始扣費(fèi),這種現(xiàn)象,這兩方面差別非常大。
在移動(dòng)互聯(lián)網(wǎng)這個(gè)時(shí)代里面,互聯(lián)網(wǎng)這三個(gè)字意味著什么?就是我們可以存取云端資源,我們可以比較方便的訪問(wèn)網(wǎng)上的內(nèi)容,就是我們現(xiàn)在所說(shuō)的云計(jì)算,或者是云端,云端可以提供給我們什么東西?可以提供給我們的各種東西,提供天氣。那么,在現(xiàn)在這樣的平臺(tái)當(dāng)中,每一個(gè)平臺(tái)都提供這樣的能力,這樣我的信息可以更加事實(shí)的得到,我可以被推送下來(lái),也可以去取。但是,另一方面我們跟PC還是不一樣,PC可以是一個(gè)不移動(dòng)的東西,但是對(duì)于手機(jī),或者平板這種移動(dòng)設(shè)備來(lái)說(shuō),他是有連接,但是這個(gè)連接有可能這會(huì)兒是存在,那一會(huì)兒就不存在了,在這種時(shí)候,對(duì)我們寫(xiě)應(yīng)用程序的人就要考慮到這個(gè)問(wèn)題,我寫(xiě)的必須要適應(yīng)這個(gè)情況,不能假設(shè)一直有網(wǎng)絡(luò)在。
技術(shù)路線選擇所要考慮的問(wèn)題
前面講了一些目前的幾個(gè)平臺(tái)大致的情況,就是說(shuō)包括平臺(tái)的樣子,他的特點(diǎn),以及整個(gè)生態(tài)環(huán)境怎么樣。接下來(lái)我們看看我們?cè)谧鲆苿?dòng)產(chǎn)品的時(shí)候,從技術(shù)上考慮的問(wèn)題。
操作系統(tǒng)的能力:就是說(shuō)的iOS還是Android,或者Windowsphone7等等,或者塞班,RIM等等。首先我們要作為開(kāi)發(fā)者來(lái)說(shuō),要考慮做一個(gè)東西,先想到我操作系統(tǒng)的能力能不能做到這一點(diǎn)。比如我說(shuō)的應(yīng)用程序,我要自己建立一個(gè)網(wǎng)絡(luò)連接,連到一個(gè)特殊的服務(wù)器的端口,跑自己的信息,操作系統(tǒng)能不能提供這樣的能力,iOS可以,Android也可以,Windowsphone7就不行了,這就是操作系統(tǒng)能力對(duì)你應(yīng)用程序的制約,你在開(kāi)發(fā)程序的時(shí)候必須要考慮到這一點(diǎn)。你的操作系統(tǒng)能不能提供一些精度,這個(gè)對(duì)于時(shí)間非常敏感的都會(huì)很重要,這個(gè)就得看措施系統(tǒng)能不能做到這一點(diǎn)。
然后就是你操作系統(tǒng)有沒(méi)有多任務(wù),是不是能夠后臺(tái)運(yùn)行,這個(gè)非常重要。對(duì)iOS來(lái)說(shuō),蘋(píng)果允許你的多任務(wù)可以。最新的iOS5里面有一個(gè)新聞?lì)惖目梢?,這幾種是蘋(píng)果允許你多任務(wù)的幾種應(yīng)用,除此之外,你沒(méi)法在后臺(tái)運(yùn)行。假設(shè)你要設(shè)置一個(gè)程序,必須要不斷的個(gè)外界通訊,獲取信息,在iOS上就很難辦。反過(guò)來(lái),Android的這方面,對(duì)Android來(lái)說(shuō),他允許后擺的任務(wù)存在,你可以社一個(gè)程序后臺(tái)跑。那么,這兩個(gè)有差異。
操作系統(tǒng)的限制,就是說(shuō)操作系統(tǒng)哪些事情能讓你做,哪些不讓你做。比如iOS里面有限制,iOS提供了你通信錄接口,但是他不允許你訪問(wèn)短期數(shù)據(jù)。相反,Android這方面很寬松,你都可以讀得到這些東西,他對(duì)訪問(wèn)的限制,沒(méi)有iOS那么嚴(yán)格,這一點(diǎn)對(duì)你開(kāi)發(fā)的程序,在這方面也有一個(gè)選擇。那么就是在安全性和隱私。
舉個(gè)例子,前兩天有人問(wèn)我iOS能不能讀取通訊錄里面的數(shù)據(jù),我說(shuō)可以。他又說(shuō),需要不需要人確認(rèn),我說(shuō)許多。那個(gè)人就說(shuō),這方面居然沒(méi)有,他覺(jué)得這方面很重要,他覺(jué)得通信錄的數(shù)據(jù)是很隱私的東西。這方面其實(shí)就是一些很敏感的,包括短信數(shù)據(jù)或者說(shuō)通話數(shù)據(jù),都是屬于隱私的。有些系統(tǒng),iOS限制的比較嚴(yán)格,而Android這都可以。這有時(shí)候就會(huì)造成一些隱私泄露的問(wèn)題,在國(guó)內(nèi)通常不太關(guān)注這方面的東西。
除了操作系統(tǒng)之外,再開(kāi)發(fā)應(yīng)用程序,從技術(shù)深考慮還有一個(gè)問(wèn)題,設(shè)備本身有什么樣的能力。最主要就是計(jì)算能力,我這個(gè)設(shè)備夠不夠快,圖形能力,我這個(gè)設(shè)備有沒(méi)有圖形加速,對(duì)于iOS設(shè)備來(lái)說(shuō),沒(méi)有這個(gè)問(wèn)題,都是蘋(píng)果幫你確定好這個(gè)規(guī)格,你的應(yīng)用程序絕對(duì)跑在這個(gè)上面。對(duì)于Android肯定不一樣了,各個(gè)廠商生產(chǎn)的不同的設(shè)備,他很有可能千差萬(wàn)別,CPU的快慢,圖形加速的能力千差萬(wàn)別。這個(gè)也是在做技術(shù)路線選擇的時(shí)候考慮到的一個(gè)問(wèn)題。還有考慮的問(wèn)題就是各種數(shù)據(jù)采集設(shè)備,其實(shí)我們所有手機(jī)上目前有的一些GPS也好,這些都可以稱(chēng)為數(shù)據(jù)采集設(shè)備。這些數(shù)據(jù)都可以加以利用,現(xiàn)在很多,比如說(shuō)LBS,這些都是使用這些數(shù)據(jù)得到的,延伸出來(lái)的一系列應(yīng)用。
同樣是這樣,在iOS設(shè)備上都不存在這些問(wèn)題,因?yàn)樘O(píng)果上已經(jīng)有了。
然后,就要說(shuō)到分辨率和鍵盤(pán),這個(gè)iOS也不成問(wèn)題,他就是兩種,一個(gè)就是iPhone的大小,一個(gè)就是iPad的大小。對(duì)于Android來(lái)說(shuō),這就是千差萬(wàn)別,有的有鍵盤(pán),有的沒(méi)有鍵盤(pán)。下面一個(gè),CPU指令級(jí)的差異,這也是一個(gè)需要注意到的差別。就從iOS設(shè)備來(lái)說(shuō),從iPhone4開(kāi)始的,iPad2,這些設(shè)備,他的指令級(jí)清一色的都是IMV7,而在之前都是IMV6。這個(gè)其實(shí)對(duì)應(yīng)用程序的開(kāi)發(fā)有一些影響,特別是對(duì)CPU處理能力要求非常高的程序,比如說(shuō)同樣一個(gè)程序,用7的指令級(jí)可以跑的比6很快。
云端的服務(wù):目前的應(yīng)用都跟云端密不可分。在我們?cè)O(shè)計(jì)應(yīng)用程序的時(shí)候,就需要考慮云端能夠體規(guī)什么樣的務(wù)。或者我們可以把哪些功能放到服務(wù)器上做。舉個(gè)例子,谷歌的應(yīng)用,可以語(yǔ)音搜索的那個(gè)應(yīng)用,就是一個(gè)很明顯的例子。我采集語(yǔ)音,這個(gè)事兒是手機(jī)上做的。那么整個(gè)語(yǔ)音識(shí)別的東西都上傳到谷歌上,在現(xiàn)在這個(gè)條件下,這個(gè)已經(jīng)可以做到非常好的體驗(yàn)了。那么,目前我們?cè)诳紤]一個(gè)應(yīng)用程序的時(shí)候,必須考慮哪一部分可以放到云端去做。然后你的哪一部分東西由本地來(lái)做,這個(gè)東西要寫(xiě),相對(duì)來(lái)說(shuō),可以考慮的比較清楚,既利用到了遠(yuǎn)端的服務(wù),又應(yīng)用到了設(shè)備的能力。一旦應(yīng)用到云端的服務(wù),就涉及到一個(gè)貸款。隨著說(shuō)3G會(huì)好一點(diǎn),但是如果是Android就會(huì)對(duì)貸款比較窄,那么,您的服務(wù)是不是上傳量很大,這個(gè)貸款也是非常重要的需要考慮的問(wèn)題。如果貸款非常大,那么這個(gè)作為一個(gè)移動(dòng)設(shè)備商的應(yīng)用程序來(lái)說(shuō),有可能不是很合適,或者把貸款降低的比較小一點(diǎn)。
說(shuō)到云端服務(wù),最后一個(gè)問(wèn)題就是我自己建一個(gè)服務(wù),還是利用現(xiàn)有的云端服務(wù)。比如天氣預(yù)報(bào),我自己建一個(gè)還是利用一個(gè)公開(kāi)的服務(wù),這都是有問(wèn)題的。你用第三方的東西有可能要付出一定的代價(jià),要花錢(qián),或者買(mǎi)使用權(quán)。但是,相對(duì)來(lái)說(shuō),你可以不用擔(dān)心服務(wù)器那端的問(wèn)題。這方面都是有利有弊,需要做一個(gè)很仔細(xì)的考慮。
那么,對(duì)于平臺(tái)本身的考慮,這里是講的操作系統(tǒng)以外的那部分東西,平臺(tái)本身的市場(chǎng)比例。我們大家都愿意為市場(chǎng)占有率大的去開(kāi)發(fā),目前來(lái)說(shuō)就是iOS跟Android。這個(gè)是一個(gè)很重要的考慮因素。這個(gè)平臺(tái)是不是發(fā)展到第幾個(gè)版本了,有多少應(yīng)用程序在上面了,這個(gè)是體現(xiàn)平臺(tái)的一個(gè)成熟度。那么,平臺(tái)本身,是否有成熟方便的分發(fā)方式,目前來(lái)對(duì)iOS說(shuō)就是App Store,對(duì)Android來(lái)說(shuō),就有很多,比如說(shuō)Android市場(chǎng),國(guó)內(nèi)的應(yīng)用程序商店,目前不下70家,你到哪兒拿到合適的應(yīng)用,這都是一個(gè)問(wèn)題。
支付方式:支付是不是很方便,通過(guò)什么樣的方式去購(gòu)買(mǎi)一個(gè)應(yīng)用,這邊說(shuō)的都是付費(fèi)的。那么,對(duì)于蘋(píng)果的App Store來(lái)說(shuō),原來(lái)對(duì)國(guó)內(nèi)用戶(hù)或許有一些障礙,因?yàn)樗唤邮苊涝庞每ǜ犊?。但是,就前幾天,中?guó)區(qū)的接受人民幣付款,這是一件很好的事情,無(wú)論對(duì)蘋(píng)果來(lái)說(shuō),對(duì)于整個(gè)移動(dòng)應(yīng)用的產(chǎn)業(yè)來(lái)說(shuō)都是好的事情,至少我們目前可以用非常方便的方式付款,買(mǎi)應(yīng)有程序也非常方便,這樣使得國(guó)內(nèi)用戶(hù)購(gòu)買(mǎi)應(yīng)用,和國(guó)外已經(jīng)處在一個(gè)平等的地位了。這個(gè)無(wú)論對(duì)平臺(tái)本身來(lái)說(shuō),或者對(duì)應(yīng)用開(kāi)發(fā)者來(lái)說(shuō),都是非常有利的。
在設(shè)計(jì)應(yīng)有的時(shí)候,還要的一個(gè)問(wèn)題就是你到底準(zhǔn)備做一個(gè)本地應(yīng)用,還是做一個(gè)網(wǎng)絡(luò)應(yīng)用?做本地應(yīng)用,就是說(shuō)我這個(gè)應(yīng)用程序可以不需要借助網(wǎng)絡(luò),就可以做我想做的事情。比如說(shuō)我可以在手機(jī)上記帳不上傳到網(wǎng)絡(luò)上,我的應(yīng)用的范疇就在這個(gè)手機(jī)里面,本地應(yīng)用有他的優(yōu)勢(shì)。他的優(yōu)勢(shì)就是可以充分的發(fā)揮本地的處理能力,或者說(shuō)甚至他在有網(wǎng)絡(luò)連接的時(shí)候,可以跟服務(wù)器端結(jié)合起來(lái),做一個(gè)事情,但是還是在本地做的。這是本地應(yīng)用的一種典型方式,他的優(yōu)勢(shì)在于我即使沒(méi)有網(wǎng)絡(luò)連接,用戶(hù)仍然可以做他想做的事情。
那么,向比較,網(wǎng)絡(luò)應(yīng)用來(lái)說(shuō),他的劣勢(shì)是什么,就是我的整個(gè)應(yīng)用都是放在Web上面的。首先本地應(yīng)用開(kāi)發(fā)過(guò)程很長(zhǎng),上架的過(guò)程更長(zhǎng)。網(wǎng)絡(luò)應(yīng)用不存在這個(gè)問(wèn)題,直接在服務(wù)器修改,馬上用戶(hù)就可以看得到,這點(diǎn)相對(duì)來(lái)說(shuō),就應(yīng)用的更新來(lái)說(shuō),本地應(yīng)用比起網(wǎng)絡(luò)應(yīng)用還是有劣勢(shì)的。那么他的劣勢(shì)首先與你瀏覽器所能表現(xiàn)的東西。比如HTML5,但是他在本地以及用戶(hù)體驗(yàn)上還是有一些差別。從比較技術(shù)一點(diǎn)的話來(lái)說(shuō),網(wǎng)絡(luò)應(yīng)用沒(méi)法能夠充分的利用到本地的設(shè)備能力,比如利用到本身的加速測(cè)量?jī)x。目前的態(tài)勢(shì),本地應(yīng)用和網(wǎng)絡(luò)應(yīng)用是一個(gè)長(zhǎng)期共存的過(guò)程。
代碼:開(kāi)發(fā)人員很關(guān)心的還是代碼,代碼的重用,其實(shí)涉及到我們要考慮不同的平臺(tái)。同樣的應(yīng)用,很有可能我做了一個(gè)應(yīng)用,我希望盡可能的把他移植到更多的平臺(tái)上,那樣我就可以接觸到更多的用戶(hù),那么這時(shí)候就會(huì)考慮到一個(gè)代碼重用的問(wèn)題,最好是我寫(xiě)的代碼不浪費(fèi),而且在穩(wěn)定了可以很方便的移到另外一個(gè)平臺(tái)上。另外一個(gè),就是我做了基礎(chǔ)代碼在不同的應(yīng)用之間重用。另外一種最重要的一種應(yīng)用方式,就是所有的代碼都在云端,就是我剛才所說(shuō)的網(wǎng)絡(luò)應(yīng)用,或者Web應(yīng)用。反正現(xiàn)在各個(gè)設(shè)備商都有很的瀏覽器,能夠很好的支持新的Web標(biāo)準(zhǔn),我放到Web端也是一種重用的方式。
在這些重用的過(guò)程,當(dāng)然盡可能的增加代碼的重用程度,讓重復(fù)寫(xiě)的代碼更少,但是也要考慮到,哪些東西是需要重用的。就我目前的感覺(jué)來(lái)說(shuō),我覺(jué)得比較適合重用的代碼是核心的邏輯跟用戶(hù)層相對(duì)沒(méi)什么太大關(guān)系的這些東西,盡可能的重用。而對(duì)用戶(hù)層的表現(xiàn),用來(lái)展現(xiàn)出這個(gè)應(yīng)用的方式,最好還是用跟這個(gè)平臺(tái)實(shí)際相關(guān)的東西寫(xiě),那樣會(huì)使得你的應(yīng)用更好的融入到這個(gè)平臺(tái)當(dāng)中,跟這個(gè)平臺(tái)的一致性更好,或者更能夠體現(xiàn)出這個(gè)平臺(tái)本身的一個(gè)表現(xiàn)能力。
跨平臺(tái):現(xiàn)在已經(jīng)有很多人在做跨平臺(tái)的開(kāi)發(fā)工具或者開(kāi)發(fā)包,大都是都是以HTML5做。這種做法,一般都是讓你可以用HTML5寫(xiě)你的應(yīng)用,他提供了跟各個(gè)系統(tǒng)之間適配層,然后可以使得你寫(xiě)的這些東西可以在每一個(gè)平臺(tái)上跑。他的優(yōu)勢(shì)在于,HTML5寫(xiě)代碼,我覺(jué)得業(yè)界有很多人覺(jué)得,用HTML5,Javascript比別的門(mén)檻要低,但是我沒(méi)有這種想法。他的劣勢(shì)第一個(gè)還是我剛才所提到的,有可能他會(huì)用不著本地的一些能力,現(xiàn)在這些框架可能很多都考慮到了本地應(yīng)用的能力。但是,經(jīng)過(guò)一個(gè)適配層,有一些東西會(huì)有一些損失,特別是對(duì)于界面上的東西,界面上的一些效果,或者處理能力上來(lái)說(shuō)都會(huì)有一些損失,或者性能達(dá)不到要求。
我前一陣看一個(gè)朋友做的一個(gè)東西,寫(xiě)了一個(gè)iOS的應(yīng)用,他的應(yīng)用的里面有很多View,都是直接從Web上來(lái)的,自己做了一個(gè)簡(jiǎn)單的適配層,通過(guò)瀏覽Web這個(gè)上面截取一些事情,使得他可以跟本地的viwe結(jié)合在一起,很好,他做了這么一個(gè)東西之后,他可以修改服務(wù)器上的東西,就可以使得這個(gè)上面顯示出不同的東西。但是,有一個(gè)問(wèn)題,在PC上跑的很好,但是在手機(jī)上,明顯速度有點(diǎn)更不上。這就出現(xiàn)了一個(gè)你利用HTML5這種方式寫(xiě)程序優(yōu)的一個(gè)弱點(diǎn)就是你移動(dòng)設(shè)備的處理能力,不一定能夠跟得上寫(xiě)出來(lái)的這些代碼要求的處理能力,這是目前來(lái)說(shuō),所看到的用HTML5進(jìn)行開(kāi)發(fā)的一個(gè)需要面臨的一個(gè)問(wèn)題。
跨平臺(tái)這個(gè)問(wèn)題是見(jiàn)仁見(jiàn)智的。如果前面說(shuō)到的使用HTML5開(kāi)發(fā)的應(yīng)用,如果你可以判斷得到,自己能夠很好的對(duì)移動(dòng)設(shè)備商的瀏覽器做適配,有可能他不需要處理的很那個(gè),或者說(shuō)對(duì)本地設(shè)備本身的能力要求不是很高,可以用跨平臺(tái)做,這個(gè)畢竟可以減少很多的開(kāi)發(fā)成本。但是,如果你的應(yīng)用需要跟平臺(tái)結(jié)合的很好,或者我需要有一個(gè)穩(wěn)定處理能力的應(yīng)用,我覺(jué)得還是寫(xiě)本地的比較好。
那么,話說(shuō)回來(lái),最近有一個(gè)思潮,他們覺(jué)得HTML5是我們未來(lái)的發(fā)展方向,或者換句話說(shuō)叫HTML5,必將一統(tǒng)天下,就跟前幾年說(shuō)的WEB必將一統(tǒng)天下一樣。就我個(gè)人看,我覺(jué)得這個(gè)東西,任何一樣?xùn)|西,無(wú)論你多么先進(jìn),多么好,你想一統(tǒng)江湖的可能性是沒(méi)有可能的,總是會(huì)有一些不一樣的東西存在。而且我相信跨平臺(tái)的東西跟平臺(tái)緊密相關(guān)的東西,永遠(yuǎn)都會(huì)并列存在,也會(huì)永遠(yuǎn)有人去做跨平臺(tái)的努力。這個(gè)跟當(dāng)年我們寫(xiě)桌面程序的時(shí)候是一樣的,大家寫(xiě)桌面程序的時(shí)候,都曾經(jīng)想過(guò)跨平臺(tái),我有一個(gè)框架,PC上可以跑甚至Linux、Unix上面都可以跑,我也考慮到這樣的問(wèn)題。但是,到最后,這些跨平臺(tái)的問(wèn)題,都沒(méi)有成為非常主流的東西。為什么?大家覺(jué)得,各自平臺(tái)的特性對(duì)于你的應(yīng)用程序有可能會(huì)非常重要。你一個(gè)iPhone程序,跟一個(gè)Android的程序,如果把他做的一模一樣,這兩者你用一個(gè)跨平臺(tái)的東西,很有可能做出來(lái)既不像iPhone的程序,也不像Android的程序。
用戶(hù)體驗(yàn):這個(gè)說(shuō)跟技術(shù)有關(guān)也有關(guān),說(shuō)無(wú)關(guān)也無(wú)關(guān)。說(shuō)有關(guān),因?yàn)檫@些都是根據(jù)你用戶(hù)體驗(yàn)來(lái)實(shí)現(xiàn)的,比如說(shuō)用戶(hù)界面的響應(yīng)速度?,F(xiàn)在對(duì)于一個(gè)手持設(shè)備來(lái)說(shuō),用戶(hù)體驗(yàn)方面的重視已經(jīng)遠(yuǎn)遠(yuǎn)比當(dāng)年桌面軟件上要重視的很多,平板程序,必須具備一個(gè)良好的用戶(hù)體驗(yàn)。其實(shí)我看過(guò)很多iPhone上的程序,多的非常的花哨,有很多圖片,很多效果,非常多的動(dòng)畫(huà)。但是,這個(gè)程序其實(shí)并不好用。用戶(hù)體驗(yàn)并不是花哨,而是怎么樣讓用戶(hù)能夠最方便的使用。
另外一個(gè)就是用戶(hù)體驗(yàn)這個(gè)東西,不能夠喧賓奪主,你還是要非常清楚的意識(shí)到,我的目的就是讓用戶(hù)更方便的使用這個(gè)程序,而不是說(shuō)為了用戶(hù)體驗(yàn)而用戶(hù)體驗(yàn)。
最后一點(diǎn)就是測(cè)試,對(duì)于不同的機(jī)器,在不同的網(wǎng)絡(luò)環(huán)境下,不同的運(yùn)營(yíng)環(huán)境下做測(cè)試。還有一些就是在極端情況下測(cè)試也必須做得到。一個(gè)手持設(shè)備的處理能力,雖然現(xiàn)在內(nèi)存也變得很大,他有限制,這個(gè)限制會(huì)比PC更厲害。那么,就是說(shuō)我們?cè)趯?xiě)這個(gè)應(yīng)用的時(shí)候,必須要考慮到我的CPU處理能力不會(huì)不夠,我需要怎么樣的處理能夠才能達(dá)到我這個(gè)效果。內(nèi)存不夠的時(shí)候怎么辦,內(nèi)存緊張的情況下應(yīng)該怎么處理,這是對(duì)iOS程序來(lái)說(shuō),這一點(diǎn)非常明顯。就是說(shuō),在iPhone上面,每一個(gè)應(yīng)用程序所能夠使用的內(nèi)存是有限度的。在最早的時(shí)候,iPhone一代的時(shí)間,總的內(nèi)存是128M,一個(gè)應(yīng)用程序所用的內(nèi)存是10M,超過(guò)他就會(huì)崩潰。
我看到多很多iPhone、Android上的應(yīng)用程序都會(huì)崩潰,所以對(duì)測(cè)試人來(lái)說(shuō),你必須要做到,處理CPU處理能力跟不上的時(shí)候怎么辦?這一點(diǎn)在PC上有可能沒(méi)有這種問(wèn)題,但是在手機(jī)上,這個(gè)問(wèn)題會(huì)非常明顯。我今天基本上就講到這里,講了目前的一些平臺(tái),各個(gè)平臺(tái)有一些什么樣的特點(diǎn)。以及我們?cè)谠O(shè)計(jì)應(yīng)用程序的時(shí)候考慮的一些問(wèn)題。謝謝大家。
聯(lián)系客服