BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

微软发布UWP Bridge项目将一切应用转为Windows应用

| 作者 徐川 关注 11 他的粉丝 发布于 2015年5月8日. 估计阅读时间: 6 分钟 | ArchSummit北京2018 共同探讨机器学习、信息安全、微服务治理的关键点

在不久前的Build 2015开发者大会上,微软宣布了Windows通用平台UWP(Universal Windows Platform),基于此平台开发的App可在所有Windows 10以上的设备上运行。日前,微软发布了UWP Bridge,内含AstoriaIslandwoodCentennialWestminster四个项目,可将Android、iOS、传统Windows,以及Web网站转换为UWP Apps。

Astoria项目

Astoria项目的目标是帮助开发者将Android应用移植到UWP平台上,最大限度的重用已有的Android代码,并简化移植的工作。它的主要特性有:

  • 尽量多的重用Android代码,甚至完全重用。
  • Java和C/C++代码都能支持,可使用自己喜欢的IDE进行开发调试,如IntelliJ、Android Studio或Eclipse。
  • Gradle可以用一份代码来生成Android和Windows两个目标平台的应用。
  • 该项目提供的SDK包括一个Windows模拟器,代码可通过USB或WiFi部署到真机上,调试和通常的Android项目一样。
  • 目前只支持Android 4.4.
  • 移植的Android应用目前只支持智能手机和平板设备,不支持PC、HoloLens等其它Windows设备。
  • 部分Android UI被转换为Windows原生UI,但不能做到完全转换。
  • 移植通过将对Android系统的调用转发到对应的Windows API,并未使用VM或runtime,以避免额外的CPU消耗。
  • 对GMS、摄像头、传感器等的调用被直接转发至对应的Windows API,无须修改代码。
  • 可使用Java来添加Windows独有的特性,如动态磁贴。

这个项目目前还处于测试阶段,会根据开发者的需求进行改进。微软为该项目的早期应用者提供了一个静态代码检查工具,以查看有多少比例的代码能够被重用,以及需要修复的Bug。微软在Build 2015大会期间用Tumblr App演示了该项目的成果,具体可查看会议视频

Islandwood项目

Islandwood项目对应的是iOS应用的移植,我们已经知道的有:

  • 可将Xcode项目导入到Visual Studio,并使用VS进行开发和调试。
  • 目前支持Objective-C,未来将支持Swift。
  • 通过将iOS API转发到对应的Windows API,尽量减少移植过程中的代码的修改。
  • 支持iOS API的一个子集,最常用的API被最先支持,已经支持的有UIKit、CoreAnimation、ARC、Foundation等。不跟踪特定版本的iOS。
  • 对绝对布局的iOS应用提供自定义布局模式。

在Build 2015大会上微软以Candy Crash Saga移植到Windows Phone来演示了该项目成果。它只修改了很少的代码,并将iOS应用内支付、本地通知等替换为Windows平台的功能。

Centennial项目

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项目

Westminster项目是介绍比较少的一个项目,它是将Web网站生成UWP应用,需要的只有URL。开发者还可以调用系统API来指定Microsoft Edge,或使用Apache Cordova打包。打包后的App可以发布到Windows Store。之前微软发布过App Builder,里面也有类似的功能。

这四个项目目前都还处于早期阶段,在今年夏天会公布更多内容,并开放SDK下载。你可以注册以了解项目的最新动态,如果想了解更多关于UWP平台的内容,可以看它的官方文档


感谢崔康对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT