Jaa


博客园客户端(Universal App)开发随笔 - Hello, Universal

在移动和云成为微软的主题之后,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 就可以,在https://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:

https://www.windowsphone.com/zh-cn/store/app/博客园-uap/500f08f0-5be8-4723-aff9-a397beee52fc

Windows Store App link:

https://apps.microsoft.com/windows/zh-cn/app/c76b99a0-9abd-4a4e-86f0-b29bfcc51059