本文轉貼自「ODin是個BLOG傻瓜」
ODin兄每次寫的文章都跟我曾經想寫的議題都很類似,雖然他的看法都跟我差不多但如果我來寫的話大概會是另一個方向吧(硬體規格太多與相容性部分)?但是我對於這種分析類的文章比較不擅長(最後一篇大概是iPhone殺手那篇),所以都只寫寫開箱文跟教學,這個題目在「生氣鳥」相容性這篇新聞發生時就有想寫,後來因為「懶」所以沒寫,大家不妨看看ODin的看法吧。
http://blog.tweetdeck.com/android-ecosystem
喬老頭怪可憐又關心地說:TweetDesk要為244種不同的Android手機提供100多個版本(註1);但TweetDesk又毫不領情地反咬一口說:我們可沒有抱怨過,相反,Android分裂問題沒有那麼嚴重,我們只用兩個人就搞定了(註2)。
https://www.koc.com.tw/wp-content/uploads/2011/02/1435892324-37f5232274be3a3fae2ba11785c6c25a.jpg
不過那邊廂,寫Angry Birds的Rovio Mobile反過來吐嘈說:”我們很不願意(hesitate)去為Angry Birds寫多個版本”,結果玩不到的那一群Android手機,都給它們塞一個輕量化版本(註),我只管你玩不玩到,你手機上的畫面多爛、比例多古怪、速度多慢、能否放大縮小,自求多福。
http://www.rovio.com/index.php?page=angry-birds
然後,亦有大量Apple Hater指”iOS不也有版本分裂問題嗎?iPhone 2G/3G/3GS/4再加上iPad,然後還有iOS 2.0、2.1、3.1、3.1.2、3.1.3、4.0、4.1、4.2等等等一大堆沒有升級的用戶,不也面對嚴重的兼容性問題嗎?
兼容性究竟是甚麼一回事?事實上,PC的平台和硬件分裂問題,遠比手機嚴重,為甚麼,我們老是在在手機上的兼容性做文章?
Odin先不論版本分裂的問題,先談談:手機軟件的兼容性問題有多嚴重?
兼容性問題,相信是目前最容易被誇大、但又最容易被低估的問題。
UI ISSUE
爭論兼容性問題的最基本、也是誤解最深的地方,就是使用者介面。
使用者介面是甚麼?就是該軟件一切與用戶接觸到的地方,包括:畫面、解像度、畫面比例、晝面分割、按鍵、觸控、聲音甚至操控方式等等等--當中,最多人談論的是螢幕。維基百科最初的資料說, Android開發者特別苦於不同解像度的Android手機開發(註4),不少iOS的支持者也不斷指出不同的螢幕大小對開發者帶來帶來極大的影響。
事實呢?代碼有自適應的一項啊。只要數行”全螢幕”代碼,根本就輕鬆搞定。
對,這就是為甚麼TweetDeck會說得那麼輕鬆的原因。對於不少用高階語言的軟件來說,由於不需動用手機硬件協助,所以這些軟件根本就可以無視硬件之間的分野,盡情給千萬種手機編碼,然後數行全螢幕編碼,搞定!所以,不要說2個人就可以搞定TweekDeck的眾多版本,根本一個人就可以搞定了,有何難哉?
行外人根本不知道, 全螢幕編碼對於工程師來說,一點難度也沒有。
但是,值得注意的是:
- 一個4:3螢幕的軟件,在一個16:9的螢幕下進行全螢幕會如何?
- 一個本來只是320×480解像度的軟件,在1024×600的螢幕下執行會如何?
- 一個本來給4吋螢幕運行的軟件,在10吋螢幕下執行會如何?
對,這些問題對於工程師來說不是問題,但對於用戶來說就很頭痛--特別是在這個小小的屏幕上。
我們先一起欣賞Galaxy Tab的一個”優秀”介面:
對於手機來說,這樣的介面不以為過--好歹是一部手機,總要考慮像Odin這種老人家的眼力;但是,在7吋看到這種巨無霸式的指令…
在旁邊偷笑的iOS支持者不要偷笑,你們躺著也要中槍--誰都知道iPhone軟件在iPad上運作是多恐怖的一回事!在軟件裡爆出來的狗牙,足以讓你家中的狗換上數千副新假牙,所以還有像Jailbreak軟件RetinaPad,特意為iPad的iPhone軟件除狗牙。
https://www.koc.com.tw/wp-content/uploads/2011/02/1435892329-9bead7ee0b45b17abbbf968690d4e032.jpg
對--
行外人不知道的,會大幅誇大了編程的難度;
只懂編寫代碼的,會完全輕視了介面的優化。
CODDING ISSUE
另一個比較少人留意的是編程問題。
用高階語言編程的軟件,在純粹的編程上不會遇上太大問題。但是,一個手機平台總不可能永遠都只寫小打小鬧的軟件吧。事實上,近年手機遊戲大行其道,不少開發者為了提供更佳的遊戲畫面,普遍都要動用到硬件加速功能,像Android這種會有開放給不同廠商的作業系統,必然會遇到不同手機有不同硬件、需要動用不同硬件指令的問題。
https://www.koc.com.tw/wp-content/uploads/2011/02/1435892348-21aa3052603dda5721a9d5ba33009612.png
為了解決這個問題,一般的作業系統都會採用一些跨平台的軟件層去處理,例如Adobe Air、Appcelerator等等的第三方編譯器,以達至一次編碼,不同平台共用的情況。即使是開發者要動用更視乎硬件的原生代碼,但他們一般只要祭出編譯器,編碼時最多也只是針對不同的硬件平台(PowerVR、Tegra、Qualcomm)再作一次編譯就可以,而毋須再針對各別機種再重新開發。對,也許仍然是麻煩,但並沒有想像中的麻煩,所以TweetDeck才大大聲的說:”我們只用兩個人就搞定了”,這也是為甚麼蘋果最初祭出App Store規條3.3.1,禁止開發者用第三方中間層編譯器的緣故。(註)
理論上的確不太繁複,實際上呢?
有人說,兼容性問題只在低階手機出現,Odin告訴你:不一定是(註)。即使大家用上相同的平台,但不用的手機的細節也有不同,也會都會構成不同的變數。舉例說,Nexus One和Acer Liquid都是用上Snapdragon,都是用上Android 2.1(Liquid可升級至2.1),但是Nexus One玩Asphalt 5時一點問題也沒有,但部份Liquid玩家就遇上不同程度的問題,例如遲滯(註)、甚至死當(註)。
為甚麼Nexus One沒有問題,但Liquid會出事?某程度上是因為Nexus One往往是被用來當作開發機種。開發者很多時都會倚賴數部流行的手機(例如Milestone、Galaxy S或工程師至愛的Nexus One)來除錯,但其它相對不流行的手機呢?新推出的手機呢?對不起,幫不到你,等著我們的軟件更新吧。
對,問題在於Debug。 開發者會花多少時間去為市場上的眾多手機除錯和優化效能嗎?
iOS用家也不要笑,iPad也會中流彈。同樣需要處理iPhone與iPad兼容性問題的開發者,也需要為iPad除蟲。但Odin使用iPad半年的體驗是:iPad App的崩潰次數,最少是iPhone App的十倍!而且,這情況更不限於第三方的軟件,即使是Apple自己的軟件(例如Mail或iBook),也經常出現Force Quit,甚至是系統崩潰。所以,TweekDeck兩人團隊做出來的TweetDeck for iPad,結果如下:
http://itunes.apple.com/hk/app/tweetdeck-for-ipad/id364153769?mt=8#more-link
對於工程師而言,編寫跨平台軟件並不困難;
對於使用者來說,使用跨平台軟件並不輕鬆。
PERFORMANCE ISSUE
最後,就是讓Angry Birds很Angry的效能問題。開發商Rovio表示自己的輕量化版本是”experience optimized for devices with less processing power”,表明了它們面對的其中一大難題就是不同手機之間的效能差距。
http://androidheadlines.com/2010/12/nexus-s-outperforms-nexus-one-in-gpu-benchmarks.html
這個問題,其實在PC業界早就不是甚麼新聞、甚至是難題。事實上,一般的華麗PC遊戲都有著效能的兼容問題,眾所周知,Call for Duty就是一隻以硬件要求極高而馳名的遊戲,但是,PC遊戲商一向都沒有把兼容度視作極大問題的情況,遊戲依舊大賣,開發者依舊年年賺錢。
愛玩遊戲的玩家,都已經準備好一台專門為遊戲而設的高階設備,誰會管低階市場?
但是,Odin想問一句:你見到有多少手機遊戲的售價在US$50以上?沒有。
售價不高的話,那銷量就變成收入的重要泉源 -- 這時低階市場就很重要了。
當PC遊戲可以以價來代替量的時候,手機遊戲一般都在 US$10以下,碰著好像Android Market這種付費機制不太健存的情況(註),要透過價錢來彌補數量的不足,更是難事。相反,正常市場情況下,低階產品的數量一定遠比高階產品要多,在講求量比價重要的市場裡,低階市場更是不能放棄的。
Rovio在Android Market就面對這個問題:收費之路不行,但如何為低階市場這一大堆手機的廣告收益而開發產品呢?
應該說,Rovio開發的低線在哪裡?在Motorola Milestone 嗎?在HTC Hero嗎?還是在山寨機上嗎?還是,就像現在的輕量化版本一樣,弄個非驢非馬的版本去餵飽它們好了?
效能問題根本不是問題,問題的核心是收益。
如果你開發軟件的目的只是為了自娛、為了拯救世界,那就恭喜你。如果你開發軟件的目的只是為了賺錢,那就請自求多福。
EXPECTATION
Angry Birds的其中一名開發者Peter Vesterbacka說:”Fragmentation on the device side is not a huge problem, but Steve is absolutely right when he says that there are more challenges for developers when working with Android. But that’s fine, developers will figure out how to work any given ecosystem and as long as it doesn’t cause physical pain, it’s ok”
Odin仍然是那一句: 兼容性問題,相信是目前最容易被誇大、但又最容易被低估的問題。原因是這個問題會帶來甚麼未來,仍然是未知之數。始終,絕大部份開發者開發產品的最終目的都只是為了賺錢,只要手機數量夠多,開發者絕不會為了效忠某一平台而死守不放。
對於開發者來說,它們需要花多少的成本去優化軟件介面、去為不同的版本除蟲?這一點對於有實力的開發者來說,並不是太大問題。
對於沒有實力的開發者來說,花點時間在高端或流行的平台上寫個軟件、試試水溫,待軟件受歡迎時迎來注資、或是收購後,才為軟件優化,也不是壞事。
但是在短時間之內,開發者都要為了分裂的平台而付出不同的心血,而用戶亦會因應著開發者的努力所帶來好與壞的使用者體驗,而付出不同的代價。