在移動和雲成為微軟的主題之后,Windows Phone 8.1 手機和Windows 8.1平板也漸漸成熟,吸引了越來越多的開發者。為了讓開發者們高效的開發一款跨手機和平板的應用,微軟順勢推出了Universal應用的概念。
今天我們想向大家分享怎樣用C#和XAML語言開始開發一個跨Windows 8.1和 Windows Phone 8.1 的 Universal 應用。
准備
首先硬件方面我們的計算機要支持Hyper-V功能或者有一部運行Windows Phone 8.1 操作系統的手機。
軟件則需要在計算機上安裝Windows 8.1 和 Visual Studio 2013 update 2 及以上的版本。免費的面向 Windows 的 Microsoft Visual Studio Express 2013 with Update 4 就可以,在http://www.visualstudio.com/zh-cn/downloads#d-express-windows-8 能夠找到。
啟動Visual Studio 2013,首次啟動會需要注冊一個Microsoft賬號,有了的話直接登錄就可以。
Hello Universal
現在我們就可以創建 Windows Universal App 了。
在start界面上點擊新建項目或者在菜單欄上點擊文件->新建->項目
選擇已安裝->Visual C#->應用商店應用->通用應用程序->空白應用程序
選擇保存文件夾並輸入項目名稱,比如“my Universal”
點擊確定。
好了,Visual Studio 已經自動為我們創建了Universal解決方案:
在解決方案資源管理器中可以看到我們的Universal解決方案包含3個項目,my Universal.Windows,my Universal.WindowsPhone,my Universal.Shared。
它們分別對應了Windows應用,Windows Phone應用,共享資源。
啟動
現在雖然我們還沒有寫一行代碼,但其實我們的應用已經可以運行了。
先來看看我們的Windows應用:
點擊debug按鈕
經過一段時間的編譯,我們的Windows應用就啟動了。當然沒有什么內容,只有一個Title is Here。現在把鼠標移到右上角,先關閉它。(這里可能回到Visual Studio 后會看到還是在debug狀態,需要手動停止一下Debug。)
接下來看看我們的Windows Phone 應用。
點擊debug按鈕旁邊的向下小箭頭。
選擇啟動項目-> my universal.WindowsPhone(Windows Phone 8.1)
Debug按鈕發生了變化,文字變成了Device,如果你的計算機支持Hyper-V,那么還會看到一系列windows模擬器(Emulator)。
先看看支持Hyper-V的情況。我們選擇一種模擬器,點擊debug按鈕。Visual Studio 會啟動對應的模擬器,在上面部署並啟動我們的Windows Phone應用。(啟動模擬器會比較慢,我們可以在結束debug時不關閉模擬器,而是在Visual Studio中點擊停止Debug按鈕 ,這樣模擬器就不會關閉)
當然目前我們的Windows Phone 也是沒什么內容,同樣只有一行Title is Here。
下面看看如果我們的計算機不支持Hyper-V的情況:
通常我們日常使用的Windows Phone 8.1手機是不能馬上用於開發的,我們要把它注冊為開發者手機。
我們需要把我們的Windows Phone 8.1 手機通過usb線連接到電腦上,解開鎖屏。
接着在開始界面打開Windows Phone Developer Registration 8.1。
程序檢測到我們的Windows Phone 8.1 手機后點擊注冊,輸入我們的Microsoft賬號,就可以把它注冊為開發者手機了。
這樣就可以在debug按鈕上選擇device,用手機而不是模擬器debug我們的Windows Phone 8.1 應用了。
Universal 是什么
大家可能注意到我們的debug按鈕里可以選擇的啟動項目只有my Universal.Windows,my Universal.WindowsPhone兩個,那么my Universal.Shared這個項目是做什么用的呢?
實際上這個項目是Universal應用的重點,我們可以在其中共享Windows應用和Windows Phone應用的代碼。
我們的應用既可以在Windows上又可以在Windows Phone上運行,它們的界面是有着很大區別的。但是背后的邏輯,運作方式卻幾乎一樣。在以往的開發方式中,我們可能要寫兩套后台代碼,分別維護它們。一邊發現了什么問題,需要修改,還得檢查另一邊的代碼。但當我們創建了Universal 應用之后,這種情況就會大大減少。只要修改同一個.Share項目,就可以同時對Windows和Windows Phone應用產生作用。它們之間有所區別的地方,我們也可以用條件編譯來區分。
比如我們可以打開項目my universal.Shared中的App.xaml.cs文件:
可以看到編輯區域左上角的選項有.Windows和.Windows Phone,目前選擇的是.Windows。在代碼區域中,夾在#if WINDOWS_PHONE_APP…#endif 之間的代碼則是灰色的狀態。這段代碼就是Windows Phone獨有的。現在顯示灰色是由於我們在左上角選擇了.Windows項目,它是不起作用的。
整體看來,Universal應用就是通過.Share項目共享了不同平台的代碼,減少了跨平台的維護工作,讓我們能夠實現高效的開發。
小結
是不是非常方便?一次創建,2個應用。這就是Universal的魅力所在。接下來我們會一步一步向大家分享如何把這個簡單的應用擴充成為一個功能完善的cnblogs閱讀器。歡迎大家繼續關注。
你可以從這里下載我們分享的源代碼:
https://code.msdn.microsoft.com/CNBlogs-Client-Universal-477943ab
Windows Phone Store App link:
http://www.windowsphone.com/zh-cn/store/app/博客園-uap/500f08f0-5be8-4723-aff9-a397beee52fc
Windows Store App link:
http://apps.microsoft.com/windows/zh-cn/app/c76b99a0-9abd-4a4e-86f0-b29bfcc51059