随着微软Build2015带来的好消息,Win10正式版发布的日子已经离我们越来越近了,我们也终于欣喜地看到:一个统一的Windows平台对于开发人员来说充满了吸引力,这局棋下的好大的说……于是顺其自然的,又开始了新一轮追随微软的脚步。
1. What
Universal Windows Platform(UWP)是什么呢?首先的说一说什么叫Device Family。
微软的产品布局主要有以下这么几个方面:传统的PC和新秀平板电脑2合1(苏菲婆),手机(特洛伊木马攻陷诺基亚现在脱胎换骨成Microsoft了)和平板设备,Xbox,物联网IoT设备(说实话这一点还是让我精神一振),Holographic(眼镜真是掉渣天了……)设备等,这每一类设备都可以被称为一个Device Family。那么微软号称的“一次开发,全平台发布”要怎么实现呢?首先,这些设备所使用的操作系统都是相同的Windows 10,这是应用可以通用的基础;其次,针对不同的Device Family,肯定是有不同的API的,那么相对的,一定也会有相同的API,事实上经过微软开发人员的努力,相同的API这部分比例还是很大的。那么好了,假设我只使用这部分API开发了一个APP,把这个APP发布到应用商店里(感谢微软现在应用商店也统一成为1个了),那么不同的设备下载下来运行应该都没有问题(因为共享API和相同的操作系统)。任务完成!
所谓的UWP,实际上就是在Windows Core之上,为各个设备家族所提供的一个统一的API接口,它是WinRT重新打包的超集,所以Win8.1/Windows Phone 8.1的APP可以很容易地迁移到Win10上,对于开发者来说,重新学习的成本也很低。
2. Why
这还用说吗……想想就激动吧
3. How
(1) 系统需求
开发UWP应用,需要Window10操作系统,参加了Windows Insider计划的开发者们可以将自己的开发用电脑升级到Win10预览版,这条路的坑很多……遇到问题了上网搜一搜前人们立的牌子。
下载Visual Studio 2015 RC版,这个版本是免费的,但是应对日常开发任务来说妥妥够了,还能开发Android和iOS应用呢……
下载Visual Studio Tools for Windows,获取Win10 API。
下载Emulator,获取Win10模拟器。如果不想用模拟器,可以用Windows Phone 8.1 Registration Tools解锁已经升级到Win10的手机,这种方法比较简单。
OK,可以开工!
(2) 怎么适应特定平台的特性
private void Button_Click(object sender, Windows.UI.Xaml.RoutedEventArgs e) { // 在这里面模拟手机的后退按钮注册事件 // 要使用 Device Specific APIs (Extension APIs) 需要以下几步 // 1. 在引用中添加对应平台的引用,如“Microsoft Mobile Extension SDK for Universal App Platform” // 2. 检测命名空间是否存在 var ns = "Windows.Phone.UI.Input.HardwareButtons"; if(Windows.Foundation.Metadata.ApiInformation.IsTypePresent(ns)) { // 3. 写需要的特定设备平台代码 Windows.Phone.UI.Input.HardwareButtons.BackPressed += HardwareButtons_BackPressed; } } private void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e) { tb_ReactToBtn.Text = "Reacted to Button Press!!"; }
4. 总结