我知道为什么您不能在Linux计算机上开发OS X应用程序,但是有充分的技术原因为什么您不能在Linux上开发iPhone和iPad应用程序吗?为什么无法将iOS源代码编译成iOS可执行文件并在Linux上的iOS模拟器中运行它,或将其安装在开发iOS设备上?
仅仅是因为XCode IDE是可可应用程序吗?
看来,您可以在任何类型的平台上开发Android应用。我不明白为什么iOS无法如此。
我知道为什么您不能在Linux计算机上开发OS X应用程序,但是有充分的技术原因为什么您不能在Linux上开发iPhone和iPad应用程序吗?为什么无法将iOS源代码编译成iOS可执行文件并在Linux上的iOS模拟器中运行它,或将其安装在开发iOS设备上?
仅仅是因为XCode IDE是可可应用程序吗?
看来,您可以在任何类型的平台上开发Android应用。我不明白为什么iOS无法如此。
Answers:
Mac OS X只能通过合同在Apple硬件上运行。iOS需要Cocoa框架,并且有权使用Mac来签名钥匙串。虽然您可以使用OpenStep库在Linux上使用Objective-C,但由于缺少正确的Cocoa API库,您无法将开发的应用程序推送到iOS,并且可以推送到越狱的设备而无需与完整的开发人员进行钥匙串链接帐户,以便出售所说的应用程序或什至让公众下载它,您必须遵守Apple的规定。
没有特殊的技术原因,但是Apple提供的开发人员工具只能在Mac上运行,我不认为他们会急于改变这一点。
关于第三方开发人员工具,苹果公司非常不喜欢它们,并且鉴于苹果公司对应用商店中的产品拥有绝对的否决权,因此花大量的开发时间来制作/使用它们不是一个好主意。
(一个开发工具- iPhone模拟器- 是非常强烈地依赖于MacOS X的声音技术原因,据我所知它实际上是iOS和非常相似的MacOS X系统的API之间的瘦包装,它是无限更难在另一个操作系统做。 。您将不得不从头开始,并且最终可能会像Android模拟器一样缓慢而可怕。
我认为应该说您可以在其他平台上为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)时。
出于技术原因,Xcode不允许在其他系统上开发iOS应用。
iOS在许多方面与OS X相似。许多框架相同或非常接近。iOS模拟器利用它来提供非常快速的测试环境。当Xcode编译要在模拟器中运行的应用程序时,它会创建x86二进制文件,这些二进制文件链接到通常简化为OS X框架的框架。最后,您获得了在Mac上本机运行的调试版本,它具有出色的性能。
如果您查看的是Android,它将创建独立于平台的apk,然后在一个或另一个Android模拟器中进行仿真。这将运行一个虚拟机,该虚拟机将运行整个Android堆栈以供您调试。有些仿真器比其他仿真器要快,但它们都比仿真器慢得多。不过,这样做的好处是它们是跨平台的。
为了让Apple允许将iOS应用构建在其他系统上,他们可能需要将框架移植到这些OS上,以便他们可以编写模拟器,或者必须构建模拟器。这些中的任何一项都会花费大量的时间来构建新功能。
虽然您无法在Linux上为iOS签名应用程序,从而无法通过公认的方法分发它们,但是您可以使用Theos在Linux上开发(使用相同的API)。这是越狱社区用来为iOS开发应用程序的工具链,它是跨平台的。如果您的iOS设备已越狱,我相信您可以通过libimobiledevice将已编译的应用程序推送到您的设备,但是如果我错了,有人可以纠正我。
一些更多信息:http : //iphonedevwiki.net/index.php/Theos
我计划在第二天左右尝试一下,并将提供更新。