前幾天看一哥們寫的“Android學習之路”一文很不錯,遂也寫一篇Windows Phone的學習之路。
開發環境
桌上型電腦
- 不管是桌上型電腦還是筆記本,建議配置在I5+8G以上,I3+4G的話就别考慮用模拟器了,真機跑都挺費勁。
- 如果用的是奔騰或AMD的CPU,并用要使用模拟器開發的話,要注意可能CPU不支援虛拟化導緻基于Hyper-V的模拟器無法運作。
手機
- 買一台開發機還是很有必要的,如果預算緊張,可以考慮買一台最便宜的Lumia 525,甚至去淘寶或一些WP社群上找二手的htc8s或Lumia520。中高端就不在這推薦了,超出本文範圍。
- 我基本上不怎麼用模拟器開發,因為模拟器上沒有各種sensor(雖然可以模拟,但還是麻煩),手勢操作也不友善,并且顯示效果與真機也有些許差别。
作業系統
- 開發WP8.X最低要求是Windows 8.X專業版以上,如果要用Hyper-V的話,還需要64位。
IDE
- 建議直接安裝Visual Studio 2013,直接内置WP8的SDK。VS2013的Update2則帶有WP8.1的SDK。
- 安裝的時候注意把Blend勾選上,它是開發XAML的利器。
基礎概念
Windows Phone 的手機版本
- Windows Phone 7.x,已被微軟抛棄,不能更新到Windows 8.x。故也不做過多讨論。
- Windows Phone 8.x,向下相容Windows Phone 7.x開發的應用。
Windows Phone 的官方資料:
- 開發文檔
- 開發示例
Windows Phone 開發基礎
- 開發語言
- C#,開發應用的首選,開發資料較多。
- C++/CX,開發3D遊戲的首選,以及不熟悉C#的選手也可以用它開發普通應用。
- HTML+JS,有web開發基礎的開發者首選(但是較小衆,個人不推薦)
- 開發庫
- 對于Windows Phone 8.1,可用的類庫有兩大塊:大量為WP準備的Windows Runtime 和 少量為WP準備的.NET。
- 在上述兩個庫出現相同功能的API的時候,優先使用Windows Runtime,因為在移動裝置上,它才是未來(千秋萬代一桶漿糊)。
- 少數C++選手還可以使用個别的Win32 API。
- UI技術
- Windows Phone 8.0之前一直用的是基于Silverlight的XAML技術作為UI展現。WP8.1仍然有部分延續,但個人建議不要再追随【已死的】Silverlight。
- Windows Phone 8.1之後開始采用基于Windows Runtime的XAML技術作為UI展現。這兩種XAML大緻相同,但主要控件有不少的差別。
- Windows Phone8.0就開始支援Direct3D 11開發遊戲,而從8.1之後開始支援Direct2D和DirectWrite的直繪。但是要注意:不支援OpenGL(僅支援部分的WebGL)。
- 關于XAML
- XAML是一種類XML方式的定義界面的技術,不僅可以定義布局和其中的控件元素,設定控件的屬性,事件,還可以直接綁定資料。
- 學習XAML可以先從布局控件開始,然後是一些簡單的文本控件,按鈕控件,選擇控件和操作欄控件。最重要的是資料清單控件,因為涉及到性能優化、資料綁定、自定義模闆,動畫等。
- 關于資料存儲
- 資料可以存儲在應用内,與其他應用完全隔離。使用ApplicationData類。
- 資料庫,推薦使用SQLite,但是要注意SQLite的讀共享,寫獨占的線程/程序特性,以及一些性能優化的Tips。
- 也可以存儲在公共區域,如圖檔,視訊,音樂,下載下傳等。使用KnownFolders.XXX來通路。
- 還可以放在雲端在多個裝置間同步。可以使用Azure,OneDrive(一定容量的免費)或其他雲存儲。
- App的生命周期
- Windows Phone 8.0 App的生命周期
- Windows Phone 8.1 App的生命周期
- 打包
- 在項目上右鍵某個菜單上就可以生成appx包。沒屁事不要生成AnyCPU模式(WP手機現在隻有高通的ARM平台),被反編譯了不要說沒提醒你。
- 注冊開發者賬号(19刀1年),具體細節就不表了,最好有一個招行能夠全球通用的信用卡。
- 釋出應用。
Windows Phone 開發進階
- 關于磁貼(tile)
- 這是一個倍受争議的東西,喜歡的人喜歡的不行,讨厭的人讨厭的不行。
- 它有N種尺寸。
- 它有N種模闆。
- 背景程序
- 普通WP應用隻能建立有限運作時間和功能的背景程序(與蘋果類似)。
- Windows Phone 8.1的背景任何可以由某個條件觸發啟動。
- 程序間通信
- 可以關聯某個檔案擴充名。
- 可以注冊某個URI處理協定。
- 也可以分享給某個應用。
- 傳統的IPC方式:比如系統資料庫,檔案,記憶體塊,socket什麼的不适合用于普通App。
- 多媒體
- 圖檔處理。可以使用原Nokia的SDK。
- 視訊處理。如果隻是簡單的裁剪什麼的,可以使用自帶的MediaClip類。要做編解碼什麼的還是用Media Foundation吧。
- 音頻處理。先看一下支援的格式,免得瞎許諾了實作不了被老闆罵。
- 地圖
- 推薦使用Here地圖的基礎地圖資料服務和一些資料查詢服務。
- 還有高德。
- 各種傳感器
- 加速計,指南針,陀螺儀,傾斜儀,光感等。
- 可以參考施烱的一篇好文。
- 通信
- WiFi Direct,不用借助路由器的點對點通信。WP8.1以後支援。
- 藍牙4.0,低功耗,距離長,Profile多,可穿戴裝置普遍采用。
- NFC,叫了幾年也沒起來的東西,個人不怎麼看好。
- 前瞻
- 如果你是新開發者,建議直接選擇基于Windows Runtime的WP8.1 App模型。
- 如果你要遷移WP8.0的應用,時間充裕的情況下,建議也直接遷移到基于Windows Runtime的WP8.1 App模型。
- 如果你非要遷移到基于Silverlight 8.1的WP8.1,不友善與Windows 8.1共享代碼不說,SL目測将不再維護。
- WP8.X将還會有幾個 GDR X,多數會是基于高通平台的硬體更新之上的更新。
- 目測在未來的WP9上會與Windows9更好的共享代碼,也許App可以直接互運作了就。
設計
分辨率
- 總的來說,分為15:9,16:9,16:10。
- 按絕對分辨率來說的話,從480*800,480*854(用于3個軟實體鍵),到768*1280,720*1280,800*1280,再到1080P,後續可能還有2K和4K。(也慢慢碎片了)
我也隻懂點分辨點,互動設計和視覺設計完全不懂,提供幾個連結吧
- 設計guide line,這個要麼好好的了解,要麼就随便看一下就行了,否則半瓶水的功夫隻能設計出讓人感覺都是“大色塊”的應用。
- 互動模式
- 視覺參考
- 可用資源
- 從Longlistselector到SemanticZoom的變化
- 從Panorama到Hub的變化
其他
- WP 開發者生存現狀
- 個人開發者:大部分入不敷出,為了養家糊口加點廣告,還要被罵。
- 一線網際網路App開發者:版本更新緩慢,升職加薪無望,跳槽機會少。
- 二三線網際網路App開發者:沒有話語權,迷茫,面臨轉平台的威脅和誘惑。
- WP手機廠商App開發者:原Nokia北京的應用部門幾乎被微軟一鍋端。
- 銷往的國内WP廠商現狀
- 微軟移動(原Nokia):唯一一家真誠地堅持WP的廠商,然而在近半年來一直沒有新機釋出。930叫了一年了到現在影子也沒看到。
- 三星:WP7時代動作很大,WP8隻出過一款Ativ S,騙完了安卓的專利費就不幹了。
- HTC:8S和8X是現存僅有支援電信的WP手機,恐怕現在也隻有二手了。
- 中興/華為:低端的W1和W2之後也再無音訊。
- 海信:不聲不響地就釋出了WP8.1的機器,并且将在本月上市。暫不說品質,先贊一下其效率。
- 聯想:一直在傳,卻一直未釋出。該說什麼好呢?
- 酷派/金立/TCL/天語:據說都将會釋出自家的WP8.1手機,還是很值得期待的。
- 呼聲
- 期望此次裁員能狠狠地鞭笞微軟這頭龜。最起碼每半個月能釋出些利好消息。
- 從WP7堅持到現在的WP小夥伴們的耐心和信心已經快被消耗殆盡。希望在哪裡?
- 說好的在action center中直接開關3G呢?
- About me
- 微軟平台開發者
- WP開發者
後記:
歡迎各位向我推薦一些好的WP Blog文章,以充裕本文中的一些空缺連結和段落。
如果你覺得本文對您有用,請點贊。
歡迎轉載,但請标明出處。