在不久前的Build 2015开发者大会上,微软宣布了Windows通用平台UWP(Universal Windows Platform),基于此平台开发的App可在所有Windows 10以上的设备上运行。日前,微软发布了 UWP Bridge ,内含 Astoria 、 Islandwood 、 Centennial 、 Westminster 四个项目,可将Android、iOS、传统Windows,以及Web网站转换为UWP Apps。
Astoria项目的目标是帮助开发者将Android应用移植到UWP平台上,最大限度的重用已有的Android代码,并简化移植的工作。它的主要特性有:
这个项目目前还处于测试阶段,会根据开发者的需求进行改进。微软为该项目的早期应用者提供了一个静态代码检查工具,以查看有多少比例的代码能够被重用,以及需要修复的Bug。微软在Build 2015大会期间用Tumblr App演示了该项目的成果,具体可查看 会议视频 。
Islandwood项目对应的是iOS应用的移植,我们已经知道的有:
在Build 2015大会上微软以Candy Crash Saga移植到Windows Phone来演示了该项目成果。它只修改了很少的代码,并将iOS应用内支付、本地通知等替换为Windows平台的功能。
Centennial项目的目标是将传统Windows应用:Win32、.NET、COM等移植到UWP上,据Windows架构师John Sheehan表示,Centennial项目已能转换超过1600万个传统Windows应用。
Centennial并不改变程序的代码,它只是让程序在UWP平台上正确的运行。它的主要工具是一个转换程序,受到 App-V 项目的启发但更加复杂,因为它允许开发者进行自定义。转换程序会对MSI文件进行分析,记录传统Windows应用在安装过程中的动作,然后生成一个AppX,在这个过程中它还会要求你制作该应用的动态磁贴。
然后,新应用的安装过程中,所有的资源文件都被安装在应用的目录里,但应用会以为资源文件在原来正确的地方,注册表动作则单独生成一个.reg文件,它只有在应用运行时才会被加载。因为应用间的资源是隔离的,因此“DLL Hell”也自然消失了。
传统Windows应用还有一些权限问题,需要系统高级权限的应用将只能在PC等设备上运行,而不能运行在Xbox、HoloLens上。
在Build 2015上微软以Adobe Photoshop Elements 13做了演示,唯一做的代码修改是Adobe的授权系统,因为通用应用有自己的授权机制,因此这在将来是不必要的。
想了解更多Centennial项目信息可下载Build 2015的 会议视频 。
Westminster项目是介绍比较少的一个项目,它是将Web网站生成UWP应用,需要的只有URL。开发者还可以调用系统API来指定Microsoft Edge,或使用Apache Cordova打包。打包后的App可以发布到Windows Store。之前微软发布过App Builder,里面也有类似的功能。
这四个项目目前都还处于早期阶段,在今年夏天会公布更多内容,并开放SDK下载。你可以 注册 以了解项目的最新动态,如果想了解更多关于UWP平台的内容,可以看它的 官方文档 。
感谢崔康对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 )。