在Linux上开始iPhone应用程序开发?

550

我听说如果想开发iPhone应用程序,需要使用Mac电脑。这是真的吗?

是否可以在Linux上开发iPhone应用程序?如果肯定,我需要什么,以及在哪里下载必要的工具?


1
相关:https://dev59.com/7nNA5IYBdhLWcg3wL6yx - jfs
2
有人能否编辑一下这个代码,将 s/Linux/unix 改为更加通用的写法? - Good Person
9
如果这样做,你就会模糊OS X和其他操作系统之间的界限,而这正是这个问题所关注的。 - Mr Lister
2
我发现的最重要的信息之一。我会说这绝对是相关话题... - Marco Faustinelli
安迪·史密斯(Andy Smith)在2017年发布的教程非常棒,链接如下:https://andrewmichaelsmith.com/2017/02/developing-an-ios-app-on-linux-in-2017/。 - sondra.kinsey
显示剩余3条评论
17个回答

312
为了提供不同的答案,我在Linux上的虚拟机(VMware)上运行OS X和Xcode。CPU是Core2Quad(Q8800),速度非常快。我找到了一个预先构建好的虚拟机(我会让你自己去找)。Xcode / iPhone开发完美运行,通过USB调试也可以连接到手机本身。
这实际上让我感到非常惊讶-但我一点问题都没有遇到。

11
那么,按照您的方法,您能在iTunes上签署并分发它吗? - Eldelshell
46
没问题。你正在使用XCode,签名工作正常,我现在已经有一个生产应用程序在商店中,是从虚拟机提交的。由于明显的原因,我不会公开它的名称。 - Alex Taylor
18
@Chaos:请问您能否发布一些链接,说明您用了什么来使您的设置运行起来? - technillogue
4
预先构建的虚拟机是否可信?我的意思是,嵌入了罪犯软件、后门等。 - DummyBeginner
3
好的。我的意见是,一旦您开发了应用程序,您可以使用此服务进行发布:http://www.macincloud.com/。 - Fabrizio Bertoglio
显示剩余8条评论

76

这个问题的答案实际上取决于您是否希望开发的应用程序能够通过iPhone商店分发。如果您不想这样做,并且愿意为“越狱”的iPhone用户开发应用程序,那么可以在Linux上进行开发。

查看这个人的页面,他提供了一份综合性(尽管有点复杂)的指南,告诉您该怎么做:

http://www.saurik.com/id/4


32

目前看来好像是这样的。Apple唯一提供的SDK只针对macOS系统。我对此感到不满,但现在正在考虑购买Mac电脑进行iPhone开发。我真的不喜欢他们的做法,希望其他环境(如Linux和Windows)也能推出一个好的SDK。

关于SDK的障碍:

iPhone SDK和自由软件:不能共存

尽管苹果最近发布了适用于iPhone的软件开发工具包(SDK),但如果你想要使用它移植或开发原始的开源软件,那就很麻烦了。代码签名和保密条件使得自由软件无法实现。

SDK本身可以免费下载,你可以使用它编写程序并在软件模拟器上运行。但为了真正发布你编写的软件,你必须加入iPhone开发者计划——这是一个与下载SDK分开的步骤,并且需要获得苹果公司的批准。

我认为他们认为只有macOS用户才有能力为他们的手机编写程序是相当精英主义的,而且如果你想要发布你的作品,你需要购买一张价值100美元的许可证,这使得对于业余程序员来说更加困难。虽然如此,如果这是必需的,我计划跳过他们的障碍;我真的很想在我的iPhone上开发一些东西。


9
如前所述,我认为这里的问题并不在于精英主义。XCode和其他所有开发工具(除了像GCC这样的低级项目)都是用Cocoa编写的,所有iPhone框架也是如此。他们需要先将所有这些内容移植到其他操作系统上,这可不是一项小任务。 - Brad Larson
26
当微软发布适用于Linux和Mac的Visual Studio时,请告诉我。 - Stephen Darlington
13
当微软发布Mac/Linux版本的Visual Studio、Access、Frontpage、XNA、DirectX、Office(所有功能)、Movie Maker、Visio、IIS和Exchange时,请告诉我。 - Brock Woolf
106
当微软公司宣布在(Dar)Wine中运行Visual Studio、Access、Frontpage、XNA、DirectX、Office、Movie Maker、Visio、IIS或Exchange违反最终用户许可协议时,请告诉我。 - lfaraone
7
有点是,这是Visual Studio的_Code_,而不是完整的IDE。 - Stephen Darlington
显示剩余4条评论

21

曾经有一个专门解决这个缺陷的项目:iphone-dev

iphone-dev项目的目标是创建一个免费、便携、高质量的工具链,以实现对苹果iPhone和其他基于ARM/Darwin平台的嵌入式设备进行开发。


4
该项目似乎没有经常性地进行开发或维护(例如,有关构建工具/可移植性的维基条目来自2010年2月)。 - ely
4
@Mr. F,确实它已经死了。 - Johan Boulé

13

关于替代工具链,Saurik的网站很有用,但对于最新的固件开发,他建议在iPhone上进行构建,并避免指示您可能需要将必要的iPhone固件文件复制到Linux环境中。这并非不可能,但需要额外的工作,特别是对于代码签名(也有其他开放式替代解决方案)。

另外,可以查看其他更系统化的指南(使用相同的工具链)。

我建议仍然在XCode中进行最终构建、代码签名和打包(这可能意味着借用别人的Mac),以防在提交应用程序给Apple时遇到问题。使用替代工具链(至少在Mac上)打开了使用其他IDE来开发应用程序的可能性,然后再借助XCode进行部署和模拟测试。

当然,如果您能够在XCode之外的命令行中使代码签名/证书生成正常工作,则可以在实际iPhone上安装证书并进行测试(通过iTunes使用您的证书安装应用程序)。


8

我所知道的在Linux上为iPhone进行开发的唯一方法就是安装Vmware,并在虚拟机中运行OS X。但需要注意的是,这样做存在一些“法律”问题。据报道,OS X Server可以虚拟化,但对于其开发情况我并不了解。

如果你真的很认真,那么这就是我会去研究的方向。

祝你好运。


5
我尝试过使用VMWare,但至少在我的硬件(T5200 Core2, 2M内存)上,它运行得非常慢,无法使用。我的朋友也有类似的经历。 - Parand
4
我也是。慢慢的,非常慢。你甚至不想尝试。 - Nosredna
7
当然在2MB内存上速度会很慢,我甚至惊讶它竟然能够启动! - Jeshurun
2
你可能想尝试使用VirtualBox而不是VMware。在我看来,VMware太臃肿了。 - Harindaka

5
你可以使用Tersus(开源),它可以让你将应用程序导出为Xcode项目。

1
Tersus Studio可以生成本地的iPhone应用程序,以Xcode项目的形式呈现,您可以使用苹果的iPhone SDK进行编译和签名。 - MarSoft

5
我已经成功地在Linux上构建了iOS应用程序,使用的是cjacker的iOS clang工具链。基本上它由来自您的Linux发行版的upstream clang和llvm工具、苹果的链接器的Linux端口以及一些额外的工具组成,以帮助简化构建过程(例如将Xcode项目转换为Makefile格式)。
安装需要进行几个步骤,但作为软件开发人员,您应该习惯了这种操作。我在网上发布了一个最新的Debian 7(Wheezy)的详细说明:

https://rogerkeays.com/how-to-build-an-ios-toolchain-for-linux-debian-7

否则,您可以选择使用一些较旧的通用说明:

http://code.google.com/p/ios-toolchain-based-on-clang-for-linux/wiki/HowTo_en

祝你好运。


5
您可能能够在Linux上编写代码,最终会在iPhone或iPad上运行,但是最终您需要Mac才能将代码测试或部署到iPhone上或将其提交到App Store。因此,您最终需要Mac,在Mac上使用苹果提供的所有工具进行工作是明智之举。当然,也有替代方案,例如Monotouch & Objective-C,但这些工具也利用了苹果的工具。
您可以在Linux上的虚拟机中运行OS X,但需要指出的是,即使您购买了OSX的副本,这样做也会违反OSX许可协议,因为它仅被授权在Apple硬件上运行。
对不起给您带来这个消息——iPhone/iPad周围的生态系统非常受到严格控制。
编辑:其中一个主要例外情况是为iPhone编写Web应用程序。 iPhone上有一些很好的Web应用程序,几乎与原生应用程序一样好。 但是,我理解您的问题是关于原生应用程序开发的。Web应用程序,尽管用户可以创建启动它们的图标,但仍然是“二等公民”。

4
如果你在Mac上运行Linux,虚拟化运行Lion可能是可行的。 - Cajunluke

2
有一个名为Rhodes的框架。
该概念基于Ruby on Rails,您可以使用Ruby和HTML开发移动应用程序,并且可以在Linux环境中编写代码。然后,您可以在Rhohub创建帐户,在其中添加代码(通过GitHub),并允许您将其编译为iPhone、Blackberry、Android、Windows Mobile和Symbian,所有这些都是使用相同的代码。您不必为iPhone编写Objective-C,也不必为Android编写Java等。它会为您进行转换。您需要做的就是遵循创建iPhone应用程序(或要开发的手机)的规则,以便它可以被iTunes(或等效市场)接受。
这将使您能够将应用程序添加到iTunes中。
但是,我没有找到任何模拟器,这意味着要测试您的应用程序,您需要将其放在iPhone上,这可能比较困难。
我使用这个选项是因为我想为所有手机创建应用程序,而且我已经在使用Ruby on Rails。如果你只想为iPhone制作一个应用程序,那么就投资一台Mac吧。
希望这可以帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接