下面的鏈接是一篇不錯的文章,雖然是2011年寫的,但是說明Android開發的核心一直沒變,fragmentation問題還是沒有解決。
http://nick.typepad.com/blog/2011/08/from-windows-to-android-with-glassboard.html
根據自己學習Android開發的經驗,我很贊同文章中的幾點:
1.a new language (Java), a new IDE (Eclipse), a new platform (Android)
多多少少也要懂Java,雖然和C#很類似,但是用起來還是要有一段適應期。其實我在10年前做過差不多1年時間的Java,主要是做JSP。但是做Android還是很多不適應,特別是一些對事件處理的Interface(Listeners)。在Android界面的處理上,感覺大家的寫法都不一樣,例如按鈕點擊那么簡單,有些人會implement Listeners的interface,而有些人用java inline class。而且Java是一門over Object Oriented的語言,總不習慣。
Eclipse,由於習慣了Resharper,所以我更偏向於IntelliJ IDEA,可惜其對編輯程序界面的支持不好,所以不得不在兩個IDE上調來跳去。最終決定用Eclipse。感覺編輯,調試,快捷鍵等等都比不是VS,也比不上Xcode,主要是我不熟悉。
2.There's an awful lot to learn - intents,activities, AsyncTasks, XML layouts, services, BroadcastReceivers and on and on and on
這些都是Android開發的核心,要寫好Android開發就是不斷的熟悉這些概念。下面是我對這些組件的理解:
intents是各個組件通信時的載體。好像在Windows Phone和iOS中沒有找到相對應的概念。
activities是功能的實體,由於大部分的Activities都與用戶交互,所以其通過setContentView(View)啟動用戶界面。最關鍵的部分是學會它的生命周期

AsyncTasks,異步處理,現在的用戶已經要求很高了,如果那個手機app是一直掛着,block了用戶響應的話,很可能用戶馬上就卸載了這個app。
XML layouts,有點類似於XAML,但更像HTML,對各種機器分辨率支持是難點,除此之外,這個Layout系統不難。
services,后台服務,其他平台(iOS和WP,Windows8)夢寐以求的功能,但是這也是能耗的殺手,用的時候要權衡。
BroadcastReceivers,用於接收intents,為其他模塊提供相應的服務功能,我覺得這是Android比其他平台先進的地方,Windows Phone8和Windows8實現了一部分,通過URL來實現app之間的交互,我預計iOS7會新增的相關app互相調用的功能。
除了上述幾個核心,其他東西,例如GPS,地圖,HTTP訪問網絡,RESTful api,JSON等等各個平台都一樣,只是實現上有點差異。
個人感覺,從開發者角度來看,學習和開發的難度如下
iOS <= XAML(Windows Phone/Windows 8)< Android
由於iOS有大量的開源實現,大大地減低了開發難度,而XAML平台有微軟的支持和VS等強大的工具,難度與iOS差不多,對我來說Android是最麻煩的。但Android的目標設備最廣,不僅僅可以在Android手機和平板上使用,還可以通過BlueStacks在Windows上使用,也可以在BB10和Tizen上使用。聽說Meego也能用Android app了。我感覺Android開發平台就像手機的HTML5,以后那里都能使用Android app,真正實現Java一次編寫到處使用的目標,Oracle真的要感謝Google了。
本文很多主觀看法,歡迎拍磚,我會輕微還擊,^_^
