写点什么

iOS 应用开发登陆 Windows 平台惹争议

2015 年 8 月 15 日

现在,开发者可以在 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() 函数,但其实不是。当被问及此事,微软的回答是:

此次首发预览版的目的,是期望能得到开源社区对该项目核心架构的反馈,为以后的发展构建稳定的基础。 迄今为止,我们收到的反馈如编译器集成和 Windows 的互操作等很有建设性。通过预览版的发布,让我们知道开源社区正积极地帮助我们发现自己技术和流程上的不足之处,而我们也积极的修复了这些不足,就像这次遗漏了署名信息事件一样。我们的团队备受开源社区对该项目的热情和建设性建议所鼓舞,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 读者交流群InfoQ 好读者)。

2015 年 8 月 15 日 05:313599

评论

发布
暂无评论
发现更多内容

奈学教育荣获“中关村高新技术企业”认证

古月木易

教育 IT

终于,阿里P9耐不住寂寞,以多年经验总结了地表最强SQL宝典

周老师

Java 编程 程序员 架构 面试

与第三方系统打通的N种进阶方式

棒锤🐮

架构

SpringBoot启动原理

云流

编程门槛 框架设计 spring Boot Starter】

当Nginx遇上Tomcat集群,又是一场负载均衡的爱恨情仇

小Q

nginx tomcat 学习 架构 面试

11.11 程序员的 1111 种死法

京东科技开发者

程序员 程序人生

阿里首发MySQL“完美日记”,基础+优化+事务+集群+锁+主从复制+安全备份

Java架构追梦

Java MySQL 数据库 架构 面试

架构训练营-week8-数据结构与算法,网络,IO

于成龙

极客大学架构师训练营 架构训练营

CloudQuery v1.2.1 版本发布

CloudQuery社区

数据库 开发者 运维 工具 开发工具

奈学教育荣获“中关村高新技术企业”认证

奈学教育

奈学教育

从应用开发角度认识K8S

LorraineLiu

云原生 容器技术 k8s入门

科技助力餐饮,普渡送餐机器人在餐博会上被众人围观!

DT极客

《我想进大厂》之Java基础夺命连环16问

艾小仙

Java 面试 编程语言 面试技巧

浅谈程序员的“内卷化”

数据社

高交会现场:众多区块链项目亮相,“家谱链”惊艳全场

WX13823153201

【涂鸦物联网足迹】涂鸦云平台接口列表—万能红外遥控器

IoT云工坊

人工智能 云计算 物联网 API 红外遥控器

我终于拥有自己的独立博客了。

彭宏豪95

GitHub 写作 博客 IT

实时音视频面视必备:快速掌握11个视频技术相关的基础概念

JackJiang

即时通讯 视频 实时音视频

第七周作业

Geek_4c1353

极客大学架构师训练营

面试官问我redis数据类型,我回答了8种

云流

数据库 学习 java面试

当Tomcat遇上Netty,我这一系列神操作,同事看了拍手叫绝

小Q

Java 学习 程序员 架构 面试

「架构师训练营」第 4 周作业

小黄鱼

极客大学架构师训练营

Java批量导入去除重复数据并返回结果,我差点就被放倒了

小Q

Java 学习 程序员 架构

践行新基建,共建城市智能体,为数字经济发展提供新动能

CECBC区块链专委会

云计算 大数据

iptables 端口转发

田振宇

腾讯云直播全解析,双11怎么买才不亏?

腾讯云视频云

腾讯云 阿里云 云直播 直播 视频

对比一下,你的简历是不是也写成了这样,能拿高薪才怪了

小Q

Java 学习 架构 面试 简历

重拳出击!平台经济反垄断,互联网巨头市值蒸发千亿

CECBC区块链专委会

小额贷款 反垄断

搞微服务用阿里开源的 Nacos 真香啊!

云流

阿里巴巴 编程 开源项目

第八周作业

Geek_4c1353

极客大学架构师训练营

年末十家手机银行数字化升级大盘点:谁家开发更全面?谁家建设更到位?

CECBC区块链专委会

疫情 银行 手机银行

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

iOS应用开发登陆Windows平台惹争议-InfoQ