您是否有技术原因无法在Linux计算机上开发iOS应用程序?


23

我知道为什么您不能在Linux计算机上开发OS X应用程序,但是有充分的技术原因为什么您不能在Linux上开发iPhone和iPad应用程序吗?为什么无法将iOS源代码编译成iOS可执行文件并在Linux上的iOS模拟器中运行它,或将其安装在开发iOS设备上?

仅仅是因为XCode IDE是可可应用程序吗?

看来,您可以在任何类型的平台上开发Android应用。我不明白为什么iOS无法如此。


29
我想很遗憾,这个问题的答案将是“不;苹果只是这么说”。
乔恩·普迪

11
“亵渎”的问题已结束;)
thorstenmüller2011年

1
附带一提,您可以获得“ Mac Mini”机器。更便宜的是它确实是一台不错的机器。
Chiron

2
@ 1982年的传奇:我误读了精美的机器作为时间机器,并经历了同时的男孩式兴奋和鄙视苹果的瞬间。
乔恩·普迪

@Jon Purdy Well苹果公司提供“ Time Machine”和“ Time Capsule” :)
Chiron

Answers:


17

Mac OS X只能通过合同在Apple硬件上运行。iOS需要Cocoa框架,并且有权使用Mac来签名钥匙串。虽然您可以使用OpenStep库在Linux上使用Objective-C,但由于缺少正确的Cocoa API库,您无法将开发的应用程序推送到iOS,并且可以推送到越狱的设备而无需与完整的开发人员进行钥匙串链接帐户,以便出售所说的应用程序或什至让公众下载它,您必须遵守Apple的规定。


17
“ Mac OS X只能合法地在Apple硬件上运行”-如果在任何理智的法律系统中都如此,我将感到非常惊讶。我知道事实并非如此,因为微软试图拉同样的特技,人们无视了它,微软起诉并输了。
约尔格W¯¯米塔格

4
为了更精确,我将其更改为“按合同规定”。
世界工程师

3
违反合同条款基本上只会剥夺您的支持特权。苹果公司希望提供优质的客户服务,而最简单的方法是首先限制发生错误的空间。如果您要在非Apple硬件上运行他们的操作系统,那您就该靠自己了。
乔恩·普迪

@JörgWMittag微软是如何做到这一点的?我不知道微软根本没有制造硬件。
Nadir Sampaoli 2014年

4
@NadirSampaoli:在德国,微软向PC制造商出售的Windows许可证价格非常便宜,因此与没有OS或捆绑Linux的PC相比,他们可以将Windows与PC捆绑在一起而不会增加太多成本。目的是将这些许可证预先安装在PC上。然而,PC制造商意识到他们可以单独出售这些许可证,具有巨大的比他们支付他们的利润,但仍比微软便宜得多。微软以这些许可证仅可与这些制造商的PC一起使用为由,但丢失了。
约尔格W¯¯米塔格

17

没有特殊的技术原因,但是Apple提供的开发人员工具只能在Mac上运行,我不认为他们会急于改变这一点。

关于第三方开发人员工具,苹果公司非常不喜欢它们,并且鉴于苹果公司对应用商店中的产品拥有绝对的否决权,因此花大量的开发时间来制作/使用它们不是一个好主意。

(一个开发工具- iPhone模拟器- 非常强烈地依赖于MacOS X的声音技术原因,据我所知它实际上是iOS和非常相似的MacOS X系统的API之间的瘦包装,它是无限更难在另一个操作系统做。 。您将不得不从头开始,并且最终可能会像Android模拟器一样缓慢而可怕。


8

这取决于您所说的“技术原因”

严格来讲,我不认为iOS应用程序不能在Linux上开发是有技术原因的。这将需要某些实体(无论是Apple还是一群进取/有才华的黑客)来为其编写工具链(编译器,也许是IDE,将其发布到手机上)。

因此,如果由于“技术原因”您的意思是“关于Macintosh的一些特殊的东西,不可能并且不可能在另一个平台上存在”,那么不,我不相信有。例如,Macintosh上不需要某些特殊的芯片。

如果由于“技术原因”您的意思是“某种原因使我今天无法做到”,那么可以,在Linux上不存在整个已签名的代码位,除非Apple将其移植到游戏中,否则就是球赛了。


4

我认为应该说您可以在其他平台上为iOS 开发,但不能在这些平台上构建最终应用程序

为何您无法在OS X之外进行构建,已在接受的答案中进行了解释,但是有许多开发工具可让您在其他平台上编写iOS应用。

我使用的一些开发工具允许这样做:

  • Qt Framework(C ++和Qml):可以使用Windows或Linux编写应用程序,然后在OS X上使用XCode构建iOS应用程序。

  • Unity3D(C#,UnityScript和Boo):您可以在Windows上开发,也可以在生成XCode项目的任何一个平台上构建iOS。这也允许与其他Objective-C代码进一步集成。

  • Xamarin(C#):您可以在Windows(我相信Linux)上进行开发,并使用OS X计算机作为构建主机。

  • Kivy(Python):还生成XCode项目。

而且,您可以找到更多类似的项目,尤其是当您开始研究混合和移动Web应用程序框架(如Appcelerator)时。


0

完全没有技术原因使您无法在Linux上开发ios应用程序。实际上,它已经发生在Delphi XE的Windows中。在那里,您可以完全在Windows中开发ios应用。最后唯一需要做的就是您的应用程序需要签名。这只能在Mac上完成。


0

出于技术原因,Xcode不允许在其他系统上开发iOS应用。

iOS在许多方面与OS X相似。许多框架相同或非常接近。iOS模拟器利用它来提供非常快速的测试环境。当Xcode编译要在模拟器中运行的应用程序时,它会创建x86二进制文件,这些二进制文件链接到通常简化为OS X框架的框架。最后,您获得了在Mac上本机运行的调试版本,它具有出色的性能。

如果您查看的是Android,它将创建独立于平台的apk,然后在一个或另一个Android模拟器中进行仿真。这将运行一个虚拟机,该虚拟机将运行整个Android堆栈以供您调试。有些仿真器比其他仿真器要快,但它们都比仿真器慢得多。不过,这样做的好处是它们是跨平台的。

为了让Apple允许将iOS应用构建在其他系统上,他们可能需要将框架移植到这些OS上,以便他们可以编写模拟器,或者必须构建模拟器。这些中的任何一项都会花费大量的时间来构建新功能。


0

虽然您无法在Linux上为iOS签名应用程序,从而无法通过公认的方法分发它们,但是您可以使用Theos在Linux上开发(使用相同的API)。这是越狱社区用来为iOS开发应用程序的工具链,它是跨平台的。如果您的iOS设备已越狱,我相信您可以通过libimobiledevice将已编译的应用程序推送到您的设备,但是如果我错了,有人可以纠正我。

一些更多信息:http : //iphonedevwiki.net/index.php/Theos

我计划在第二天左右尝试一下,并将提供更新。


1
请更新!
凯尔·斯特兰德
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.