现在,开发者可以在Windows 10上用Visual Studio 2015来开发iOS应用了。这项技术之前曾在微软内部的Islandwood项目中被提及过,现在官方公布了正式名称:Windows Bridge for iOS。这个 项目 基于MIT开源许可证书,通过GitHub开源代码。
Windows Bridge for iOS为使用Visual Studio的开发者提供了功能丰富的Objective-C开发环境,为了更好地支持种语言,它还包含了iOS API层。
当前,Windows Bridge支持x86和x64硬件架构的Windows 8.1和Windows 10操作系统,而微软的Kevin Gallo则暗示将来会支持基于ARM的移动设备。此外,微软的项目群经理Salmaan Ahmed提供了一些关于Windows Bridge的细节,其中包括以下4个主要组件,Objective-C编译器,Objective-C运行环境,iOS API头文件/库,还有和Visual Studio的集成的开发环境。
有趣的是,该项目在GitHub上包含了编译器二进制文件,却没有公开编译器的源代码。预计今年晚些时候,这个编译器的最终版本将被集成在VS2015的一项更新中一同发布。还有,这个编译器是基于Clang——根据该项目在GitHub代码库的信息,应该是 LLVM 3.6 。目前从官方公布的信息来看,微软已经实现了让Objective-C和C++/CX代码在该项目中共存。
细心的读者会发现,上面列举的4个组件并未包括模拟器或者iOS运行环境。对此,Ahmed解释说,在这个项目中,微软的目标是提供完整的Windows API调用,重用现有的iOS代码,并且使构建的应用能毫无限制地从这两套API(iOS & Windows)中受益。至于说提供一个能够让iOS应用无需转换,便能在Windows上运行的模拟器(这种方案对Android应用是可行的),就不是该项目的目标了。
在公开发布Windows Bridge项目之后,有几个开发者,包括 Peter Steinberger 和 Christopher J.W. Lloyd ,发现自己开源的代码被该项目引用,却没有保留原作者的署名。虽然这些疏忽已经被更正,但是这几位开发者却对自己开源的代码被微软以这样的形式使用而感到不快。提及此事,微软回应道:
“在最初的Islandwood预览版本里,漏掉了几位开源作者的署名,从开源社区得知后我们就立即进行了更正。非常感谢大家的反馈,我们对这样的疏忽深感抱歉。”
从该项目公开的源代码中,也暴露了某些潜在的安全问题,微软应该认真考虑如何应对由此带来的风险和危害。比如Landon Fuller 发现 该项目用rand()这个缺少优化的函数来 替代 arc4random()函数。 这样做会让开发者以为正在使用的是优化过的arc4random()函数,但其实不是。当被问及此事,微软的回答是:
此次首发预览版的目的,是期望能得到开源社区对该项目核心架构的反馈,为以后的发展构建稳定的基础。 迄今为止,我们收到的反馈如编译器集成和Winsows的互操作等很有建设性。通过预览版的发布,让我们知道开源社区正积极地帮助我们发现自己技术和流程上的不足之处,而我们也积极的修复了这些不足,就像这次遗漏了署名信息事件一样。我们的团队备受开源社区对该项目的热情和建设性建议所鼓舞,Islandwood预览版将会继续保持和开源社区的沟通,推动项目不断完善。
参考:Matt Thompson曾写了个 简要说明 ,解释为什么arc4random()是更好的选择(请看章节“Why Should I Use arc4random(3) instead of rand(3) or random(3)?”)
查看英文原文: iOS App Development Comes to Windows With Some Controversy
感谢张龙对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ,@丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群 )。