在移动和云成为微软的主题之后,Windows Phone 8.1 手机和Windows 8.1平板也渐渐成熟,吸引了越来越多的开发者。为了让开发者们高效的开发一款跨手机和平板的应用,微软顺势推出了Universal应用的概念。
今天我们想向大家分享怎样开始开发一个跨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账号(MSA – Microsoft Account, 就是以前的live id),有了的话直接登录就可以。
现在我们就可以创建 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 应用了。
大家可能注意到我们的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项目共享了不同平台的代码,减少了跨平台的维护工作,让我们能够实现高效的开发。