Visual Studio 2015 C++跨平台移动开发(二) -浅谈Windows Bridge for iOS

编者语:太久没有写Blog了,其实一直在努力,今天为大家带来一个比较有趣的技术话题,Windows Bridge for iOS。希望大家喜欢。

       Windows 10 终于在7月29号发布了,先来看看对于Windows 10 Universal Windows Platform App的开发,除了传统的C#(C++)+XAML / WinJS+HTML 的方式外,还兼容了Web,Win32应用移植的方式,还有对Android和iOS的应用开发迁移到UWP进行了支持。如下图:

         

        通过Windows Bridge 把传统Web/Win32/Android/iOS的应用程序带到Universal Windows Platform App上。有人说这个技术有点无耻,但是我觉得也是很有意义的。首先解决了Windows Store精品应用不足的问题,其次对于应用不再局限于用固定的技术了,吸纳更多的开发者。
       上周微软公布了Windows Bridge for iOS 的方案,而且这个项目是开源的,意味着你可以更好地基于这套转换工具进行应用优化,把更好的应用体验带到Universal Windows Platform App当中。

      Windows Bridge for iOS 的相关资源地址 : https://github.com/Microsoft/WinObjC

      Windows Bridge for iOS SDK 的下载地址 : https://github.com/Microsoft/WinObjC/releases/download/0.1-preview/winobjc.zip

     通过查看代码,我认为 Windows Bridge for iOS 的基本原理是这样的 :

     

     如图,Windows Bridge for iOS 是通过把传统的iOS API 通过objctrt 和 Starboard 进行转换后,整合到UWP的API中。而对于原有的Objective-C 项目,需要通过SDK中的vsimporter.exe进行项目转换。其实就是把原有的接口整理成兼容UWP API的模式。你可以理解为Windows 10 中自带了一个兼容iOS API的子集 。
      vsimporter.exe

      vsimporter.exe其实是一个cmake工具,它把原来通过Xcode创建的iOS项目转换为Visual Studio 的项目,并对该项目的一些第三方库,和UWP的兼容性进行修改,达到可以变成UWP App的条件。

      做一个简单的例子看看

      这是一个很简单的iOS 项目,我点击Button 按钮就可以显示 Hello Universal Windows Platform(如图)

      

      现在我把它转换为UWP 的应用 。

      1.  你需要先把WinObjc SDK 解压到任意路径上,如图 :

      

       2. 通过命令行定位到对应的项目 ,并执行SDK bin目录下的vsimporter.exe  如下图

      

       如果执行成功,就会有如下图所示 
       

       这里说明一点你可以转换为Windows 10 的 UWP 应用外,还可以转换为Windows 8.x/Windows Phone 8.x的应用(但这个意义不大就不说了)

       我们可以比对转换前后的项目变化 ,如图在原有基础上多了Visual Studio 2015的Solution 和一个项目名以.vsimporter为后序的文件。而.vsimporter的文件内包含的是转换后新增的一些图片资源文件和一些头文件索引。
       
       
       3. 打开项目看看
       
       原有的Xcode项目被分成一个基于C++的Universal Windows 项目,和带原来.h的Headers Shared Library项目。
       
       4. 跑一下

       

       大笑一个简单的项目就可以跑了。

        5. 一些注意事项
            首先这是一个0.1的项目,很多的不完善,如果你希望把一些布局引入如Storyboard/AutoLayout/xib(xib貌似用旧版的Xcode会行)就暂时等等了,基本不支持,所以我例子本希望用xib可是到了Visual Studio 还是转换失败了。
            其次是你可以在Visual Studio 2015上修改Objective-C的代码,建议安装SDK bin目录下的objc-syntax-highlighting.vsix,获取高亮支持。
           还是那句你别指望把项目迁移过来就算了,因为这和UWP的用户体验相违背的,特别是应用。你还是好好做做你的UWP程序,这只是一个过渡的方法。
           迁移还是去项目的Wiki看看那里比较详细,还有项目进度,解决一些迁移问题。https://github.com/Microsoft/WinObjC/wiki 
       
       个人还是挺欣赏Windows Bridge的项目的,话说微软的迁移技术真的牛B ,可以把iOS/Android这类型的程序带到了UWP来。但我觉得我仅仅只是迁移,更应该把多种语言带到平台中来,例如Swift ,Objective-C 可以直接写UWP的应用就更好了。希望Windows Bridge在后续版本有更多惊喜
       

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章