前言
---------------------
最近正在策劃個LBS的項目,於是入手了部HTC G8, 水貨1700. 也不知道是否心理作用,突然發現部落格園首頁滿是Android的天下。剛開始還是挺開心的,感覺自己找到隊伍了,可是研究Android和IPhone久了,漸漸發現Android存在很多的問題。
Android與IPhone哪個賺錢?
----------------------
IPhone的一夜暴富故事已經遍布大街小巷,光光一個憤怒的小鳥已經賺了1000w了,但是Android呢?同樣的遊戲僅僅收了100w的廣告費,而且聽說水分還很大。我和同事就專門研究了這個問題,得出一下結論:
1. IPhone是個金礦,適合開發手機應用類、遊戲類軟體。針對細分市場。例如遊戲、某領域的影像處理軟體等等。因為老喬為我們鋪了一條很漂亮的致富道路,並且設立了一定的門檻。
所以IPhone的軟體都是上檔次的,Team Dev都是上檔次的,玩家也是上檔次的。使用者付了款,理應該收到合理的服務。 雙方都存在著責任義務,這個市場也必然能夠發展下去。
因此,如果哪位希望開發個東西出來賣錢,或者接外包項目支付,必選IPhone.
2. Android處於並長期處於xxxx的初級階段。Android的定位就是開源免費,入門門檻很低,基本上的懂java就懂android了;而且沒有一套嚴格的審批發布制度,某個阿貓阿狗心血來潮放個半成品也可以說是百年大作。
我就去了android的應用市場,上面50%以上的應用都屬於“垃圾應用” 。各位用過的朋友一定有同感,隨便借個圖寫個字就是一個遊戲,簡直慘不忍睹。
因此,選擇了Android,就選擇了平台開發,如果是做SNS平台、LBS平台,以免費為切入點,再提供增值服務的,Android是不二選。
順便補充一下,要開發IPhone就要裝蘋果系統的虛擬機器,再下載個2g的api開發包,聽說發布到軟體市場還要認證云云;因此自認為不是精品的,可以考慮一下如何退而求其次了。
Android的編程
--------------------------------
本人花了幾天時間研究了下android的api,有些地方寫的不錯,比如用了MVC的思想(個人感覺有點PureMVC的味道),前端xml描述,使用統一的xml註冊介面控制項,後端通過getxxx擷取控制項;不同介面之間通過訊息機制傳遞(Intent);初看下去貌似不錯。
但是!!老子要說的是,Android的API有很大部分被Overarchitecture了(架構過度)。提供了一個輕量級的架構足夠了,但是google貌似不滿足,於是使用了各種的繼承關係,一大堆的XXXView, XXXActivity出現了,連一個資料庫調用都會用到基類的方法,例如:
代碼Cursor c = mDbHelper.fetchAllNotes();
startManagingCursor(c);
String[] from = new String[] { NotesDbAdapter.KEY_TITLE };
int[] to = new int[] { R.id.text1 };
SimpleCursorAdapter notes =
new SimpleCursorAdapter(this, R.layout.notes_row, c, from, to);
光這個startManagingCursor 已經讓我非常噁心了,在架構上就是我資料庫調用關你Activity屁事,為什麼要從base裡面取?會不會還有很多隱諱的方法?
如果要輕量級,就應該從helper訪問,架構上就是Composition VS Inheritance. 如果玩過UML的就知道大牛們永遠推薦Composition而不是inheritance,因為後者只會讓項目越來越龐大和混亂。
但是問題就是這種隱諱的方法在android demo裡面很多,特別有個notes的demo,簡直就是個典型的反例( anti pattern)。
好啦,我的確看到這種代碼很不爽,也很不爽為什麼要new 一個 intent,然後傳入稀奇古怪的常量去實現通訊。這種自由不應該被如此約束。
各位看官準備開足馬力向我發炮前,我小結一下,android雖然表面上用了java的文法,但是其編程思想被深深的限制在一種特定的模式裡面,因此開發android會有一定的學習曲線,而不能迅速的調用自由。
HTML5!!!
---------------------------
正當我準備默默的接受android的淩辱的時候,突然想起來,曾經還有個HTML5的小孩貌似半死不活的。於是立馬查看了資料!令我非常興奮的是,目前大部分智能手機全部支援HTML5!(實踐證明,偶的G8瀏覽器能流暢的運行HTML5網頁)
這絕對是個天大的好訊息, HTML5除了各種稀奇古怪標籤外,還支援擷取地理位置、本機資料持久等。而且,跨平台!
我簡單的對比了Android開發和HTML5開發。HTML5支援幾乎所有最炫的前端效果,純js編程足夠應付,html的頁面表現形式幾乎沒有學習曲線。
因此,如果不涉及重力感應、偷偷擷取手機使用者的連絡人、偷偷開啟wifi等,HTML5足夠應付了大部分的開發應用了。
小結
-------------------------------
android天生就是個窮苦命,要在android開發出精品應用軟體還不如直接投入IPhone的懷抱。
因此各位準備加入android大軍的朋友們,此刻應該稍微反思清醒一下,既然是免費軟體,資訊共用應用居多,為什麼不選擇HTML5?
最後,我以“街旁” 的用戶端為代表,說個反例。我反編譯了街旁的用戶端,發現裡面大部分代碼都是“瀏覽器代碼”,典型的請求響應模式,但是“街旁”的技術小白估計腦子一下子沒有轉過來,選擇了android開發,大小2.3m不用說了,而且版本更新起來超級麻煩。
各位,三思三思啊!