內容預告:
- WP8中新的開發平台
- 應用開發模型
- WinRT的WP8版本
- 支援的開發模式
- WP8開發入門
- 新功能預覽
- 用Windows Phone的開發工具
- 與WP7.X的相容性
新的WP8硬體:Nokia Lumia 920, 820, HTC 8X, Huiwei W1, Sumsung ATIV S。
新的硬體設定:多核,新的圖形處理器,更大的記憶體,多解析度,儲存卡,加密儲存,NFC。
共用Windows核心:Windows8將與WindowsPhone8在系統層級共用多個組件。
共用核心意味著:核心,網路,圖形,檔案系統,多媒體組件是相同的。硬體製造商可以用同樣的驅動工作。WindowsPhone支援多核。穩定、通用的基礎架構可以很容易被擴充。
共用核心不意味著:Windows8與WindowsPhone8用同樣的API開發(儘管很多功能是通用的)
WP8開發API支援:用WP7.1、WP8的.NET和WinPRTAPI開發託管的App。用WinPRT和Win32開發本地的App。用WP7.1的XNA開發遊戲。用DirectX和Direct3D開發遊戲。
基於WindowsPhone的.NET API: 包括所有WP7.1的API,所有的類都來自System和Microsoft.Phone這兩個命名空間。新的類是
•Microsoft.Phone.Wallet•Microsoft.Phone.Tasks.ShareMediaTask•Microsoft.Phone.Tasks.MapsTask•Microsoft.Phone.Storage.ExternalStorage•Microsoft.Phone.Networking.Voip
。。。
WindowsPhone Runtime API:WindowsPhone Runtime是WinRT的子集,外加一些手機特有類(TTS,VOIP等)。WinPRT是用C++實現的,然後映射到C#、VB、C++,
不支援HTML5/JS。
選擇.NET API 還是 WinPRT? 因為兩者有重疊,不同的是一個是Managed 程式碼,一個是本地代碼:
如果是想跨WP7.X和WP8,那麼顯然用.NET API。
如果是想跨WP8和Win8,顯然就用WinPRT API。
Win32和COM API:除了上述兩種API,還能用一些Win32的API:
- Winsock for low-level networking
- Camera APIs for native code apps
- COM APIs such as CoInitializeEx, CoTaskMemAlloc, CoTaskMemFree, CreateFile2, ReadFile, WriteFile, HeapAlloc, CreateMutexExW, WaitForSingleObjectW
本地代碼開發感興趣的碼農們可以用這些,託管應用如果要用這些API得引用一個本地的工程到解決方案。
在Managed 程式碼中XAML中做UI:大多數App中都是用XAML做UI,C#/VB寫邏輯,然後調用.NET API和WinPRT API。
用Managed 程式碼做XNA遊戲:可以像WP7.1一樣XNA開發遊戲,用C#/VB寫邏輯,但只能用WP7.1的.NET API。
純Direct3D App:Direct3D App完全用本地代碼寫,而且只能用Direct3D做UI,可以和PC版本共用基本代碼,可以用WinPRT API,可以方便地使用一些計算引擎,圖形庫和C++的API類庫。
Direct3D和XAML整合:也可以用XAML做UI,然後嵌入Direct3D的類庫。
XAML/託管+本地:託管App可以在託管XAML工程中引用C++的DLL或WinPRT工程。Win32 API支援Winsock和檔案IO函數來移植已有的本地代碼。可以通過本地代碼實現高效能的計算。
HTML5開發:WP8不會像Win8那樣支援HTML5/JS,但是WP8有IE10,可以用WebBrowser控制項,可以把HTML5的代碼放在WebBrowser裡執行。
開發工具:http://dev.windowsphone.com
開發環境:軟體/Windows8 64bit,硬體/4G記憶體,64bit主板,模擬器需要/I3以上,Hyper-V,SLAT。
開發賬戶:下載SDK不需要賬戶,但解鎖手機和提交APP需要。可以通過MSDN訂閱賬戶/學生DreamSpark訂閱/或者99刀自己買 獲得。
3種Tile:Flip,像WP7.X可前後翻滾的。Iconic,清爽型的。Cycle,像九宮格的。
鎖屏資訊:可以將自己的App註冊成為鎖屏資訊的提供者,使用者可以選擇哪5個App的Icon和計數,也可以選擇哪1個App的狀態顯示在鎖屏上,也可以選擇哪1個App做為鎖屏背景提供者。
新的啟動器:啟動器(Launcher)協助使用者照相、選擇連絡人,發郵件,發簡訊等等。
- SaveAppointmentTask
- ShareMediaTask
- MapDownloaderTask
- MapUpdaterTask
- MapsTask
- MapsDirectionsTask
地圖:Bing Map控制項繼續可用,但是推薦用Nokia地圖控制項,新功能包括向量渲染,4種製圖模式,白天/黑夜模式,顯示地標,步行路徑查詢。
定位和定位跟蹤:WP7.1的定位API繼續支援,在增加了WinPRT中增加了定位的API。可以在後台運行,像”軌跡記錄","全程導航"這種情境下可用。
語音:語音控制,可以執行在你的App中預置的命令。語音辨識和TTS,可以用語音輸入或將輸入轉換成語音。
電子錢包:可用在信用卡,借記卡,會員卡,支援NFC。
UI控制項:LongListSelector有Flat List、Group List、Jump List、Formerly幾種展現形式。
3種螢幕解析度:
照相機和照片:可用API控制焦距,可以用Picture.GetPreviewImage返回thumbnail圖片,可以與其他圖片編輯App註冊共用關係,後台上傳,用API調節ISO,白平衡,曝光。多媒體:可以用API刪除和儲存音樂。WP8會為每個儲存的圖片建立兩個縮圖,小的可以用thumbnail擷取,和原圖大小一樣的用thumbnail 擷取。在後台音樂播放狀態變化時返回PlayStateChangedEventArgs。VoIP和視訊交談:藍芽和NFC:藍芽API允許App到App通訊,App到其他裝置通訊。NFC API支援能過藍芽建立App到App的串連,建立Wi-Fi,藍芽,或者兩個裝置間的Wi-Fi直連,通過NFC發送資料,通過NFC Tag與手機互動。
網路加強:支援Sockets,有Windows.Networking.Sockets和System.Net.Sockets及Win32的WinSock API。支援IPV6。
儲存卡:可以用Microsoft.Phone.Storage從SD卡中讀檔案,可以用SD卡擴充私人檔案(如視頻,圖片,音樂),可以在SD中安裝App。
自訂連絡人群組:可以為App建立一個專屬的連絡人群組,可以通過API建立,更新,刪除和查詢專屬連絡人。同步連絡人到雲端。
檔案和協議關聯:可以註冊一個檔案關聯,當在郵件或瀏覽器或SharePoint遇到註冊的類型時會用你的App開啟,一個App也可以通過註冊類型發送一個檔案開啟另一個App。註冊協議,當另一個App開啟一個特殊的URI時:比如 myprotocol:/ShowProducts?CategoryID=aea6ae1f ,將會開啟另一個App並同時傳參數過去。
App內支付:購買數字財產,如遊戲等級,遊戲裝備,地圖服務,電影優惠卷,數字雜誌,電子書等。
企業級App部署:可通過微軟的工具,內部分發,或者第三方安裝的方式部署,企業可以刪除App或對App發布指令。
本地化和國際化:WP8支援從右向左書寫的語言。但有時從右向左的語言可能同時包括從左向右的文本,比如一個外來語,可以用Run控制項來包含。
更快的運行:在WP8中託管App會被NEGN成本地代碼,所以能啟動和啟動並執行更快。在VS裡寫代碼時,不會編譯成本地代碼,但是編譯器機器無關的CIL二進位檔案。當提交App時,CIL檔案會被最佳化成最佳化過的依賴機器的中繼語言,叫MDIL。當使用者下載了你的App時,已經被JIT到本地鏡象代碼了。
串連手機:WP7.1時,必須安裝Zune才能同步音樂等檔案。WP8隻需要USB串連就行了。
註冊手機:部署應用到手機之前需要把手機註冊成開發手機,一個使用者可以註冊3個手機,學生賬戶只能註冊一個手機。
部署應用:用VisualStudio調試時會直接部署,也可以用SDK內建的部署工具。一個手機只能部署10個非上傳到商店的應用。
調試:在模擬器上不會產生本地代碼,在Device上可以用Ctrl+F5調試,用Alt+F1效能分析(會產生本地代碼)。
模擬器:模擬器以Hyper-V的方式運行,是SDK內建的,可以類比位置,橫豎向,鎖屏,解鎖,網路制式(2G,3G,4G,WiFi)和連通性。模擬器不能測試效能,只能測功能,可以用滑鼠控制,支援多點觸摸類比,可以用物理鍵盤輸入,用PgUp/PgDn切換輸入方式。可以類比照相機,但只是返回一個簡單的圖片。支援截屏(真機上可以用電源+Home鍵截屏)。
相容性:一般的WP7應用都不用修改就可以在WP8上運行,但有些情況下則不行。有些代碼在WP7和WP8上的表現不一樣。比如Assembly.GetType是在不同的mscorlib.dll中實現。有些機制在兩者上也不一同,比如WP7.1和WP8的GC方式完全不同。