Tuesday, September 27, 2011

Android開發者應有的認知

Android開發之氣死人之路I開發氣死人之路II後,
在這裡跟許多後輩提及一個很重要的觀念。

許多開發者都喜歡拿Android跟iPhone比。
的確,在iPhone上開發APP,
因為手機規格就那麼一隻,
所以在程式開發上,
會遇到的問題不會如Android多。
甚至在畫面的佈局上,
即使用訂死(如︰絕對座標,譬如規定要將按鈕放在x=20,y=30)的方式,
使用滑鼠拖曳,輕鬆就能搞定版面佈局這件事。

但這件事在Android上可就大不相同了。
Android是多種規格、多種解析度、多種cpu運算、
多種記憶體結合起來的產物。
這都歸功於Android平臺的開放性。

Android光是在解析度上,
就分成手機型的
854*480/800*480/480*320/320*240
而平板就更不用説了
又是另一套規格。
詳細規格可以參照官方sdk的規格表
(但有許多規格還沒有列進來)

像最近開發的一個遊戲︰
挑戰劉子千

在這款遊戲裡,
女主角的眼睛會眨、按了上方的水晶燈蠟蠋會變亮、桌子要在螢幕的正下方。
再回到我剛才提到Android多解析度的問題。
這時候你看一下原本的遊戲畫面,會變成什麼樣子
看出來了嗎?
原本規劃好的位置,
因為各家解析度不同,
通通亂掉了。
也就是説,
遊戲廠商如果要替每一隻不同規格的Android手機做出可以玩的畫面,
那麼他們要替這款遊戲調校非常多的遊戲畫面版本。

剛才我們提到的是解析度的問題,
再來,我們來提硬體問題。
這款挑戰劉子千有一個「比對玩家音準」的功能,
當中使用了Android的錄音功能。
而聲音取漾率和CPU運算效能有關。
也就是説,
如果是機王Samsung SII,
10秒鐘能取漾到30筆玩家的音頻,
那麼在cpu運算效能較慢的機種裡,
可能10秒只能取到15筆音頻。

這樣的硬體差距,
也讓我在攢寫判斷玩家音準這個功能上,
遇到了許多的頻頸。
因為越多取漾率,
在判斷玩家音準這件事,
就會越準。

以上這款遊戲是我自己的案子,
所以能在這邊跟大家解釋Android發生了什麼事。
如果還要提我在公司上班裡開發的案子,
那硬體問題的例子將會不枚盛舉。

有些iPhone開發者當初就體認了這一點詬病,
所以打死不碰Android開發。
但是對Android開發者而言,
為了要能夠開發出多款手機都能正常運行的程式碼,
我學到了要對記憶體的使用更注意,
也學到了如何讓程式開發起來更有「彈性」。
我想這些經驗,
應該是直接去碰iPhone的開發者,
不會遇到的事情。

結論︰

1.如果你現在的身份是使用者,
請珍惜這些開發Android的人,
如果有廣告也請多多幫忙點擊,
因為Android使用者願意付費的比例比iPhone使用者低很多,
有你們的點擊,
我們開發者真的才有進步的動力,
也才會有經費開發出新版本讓你們繼續使用。

2.如果你現在的身份是開發者,
那我想告訴你,
雖然Android初期的開發門檻很低,
但到後來你為了要能讓所有硬體可以順利跑你的程式,
你還是會花上一些錢買不同的手機。
(當然也可以借用社會力量)
而且你會遇到比我文章裡提到的還要更多的問題。

,準備好當一名倍受挑戰的Android開發人員了嗎?



2 comments: