544

我听说如果你想开发 iPhone 应用程序,你需要一台 Mac。这是真的?

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

4

17 回答 17

311

为了提供不同的响应,我在 Linux 上的虚拟化 (VMware) 机器上运行 OS X 和 Xcode。CPU 是 Core2Quad (Q8800),速度非常快。我在网上找到了一个预构建的虚拟机(我会留给你去寻找)Xcode/iPhone 开发工作完美,通过 USB 调试手机本身也是如此。

它实际上让我很惊讶——但我一点问题都没有。

于 2009-05-29T00:46:13.110 回答
76

这个问题的答案实际上取决于您是否要开发应用程序,然后通过 iPhone 商店分发。如果您不这样做,并且不介意为“越狱”的 iPhone 人群开发 - 那么可以从 Linux 开发。

查看此章节的页面以获取有关操作的全面(如果有点复杂)指南:

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

于 2008-11-10T07:57:00.837 回答
30

到目前为止,这似乎是真的。Apple 提供的唯一 SDK 仅针对 macOS 环境。我一直对此感到不安,但我现在正在考虑购买 Mac,只是为了进行 iPhone 开发。我真的不喜欢他们正在做的事情,我希望能有一个好的 SDK 用于其他环境,例如 Linux 和 Windows。

SDK 的障碍:

iPhone SDK 和免费软件:不匹配

苹果公司最近发布了一个用于 iPhone 的软件开发工具包 (SDK),但如果你希望用它移植或开发原始的开源软件,那么这个消息就不好说了。代码签名和保密条件使免费软件成为禁忌。

SDK 本身是免费下载的,您可以使用它编写程序并在软件模拟器上运行它们。但是为了真正发布你编写的软件,你必须注册 iPhone 开发者计划——这一步与下载 SDK 是分开的,并且需要 Apple 的批准。

我认为他们认为只有 macOS 用户才能为他们的手机编写程序是相当精英的,而且如果你想发布你的东西,你需要购买 100 美元的许可证,这确实让业余程序员变得更加困难。不过,如果这是你需要做的,我打算跳过他们的圈子;我真的很想在我的 iPhone 上开发一些东西。

于 2008-11-10T02:39:59.807 回答
20

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

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

于 2010-01-10T02:35:46.397 回答
13

关于替代工具链,Saurik 的网站很有用,但对于最新的固件开发,他表示在 iPhone 本身上构建,并且没有表示您可能需要将必要的 iPhone 固件文件复制到您的 Linux 环境。这并非不可能,但只需要额外的工作,尤其是对代码签名(也有开放的替代解决方案)。

此外,请查看其他更有条理的指南(针对同一工具链)。

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

当然,如果您确实从 XCode 之外的命令行中获得了代码签名/证书生成,那么您可以在您的实际 iPhone 上安装一个证书并在那里进行测试(通过 iTunes 安装带有您的证书的应用程序)。

于 2008-11-27T08:09:16.553 回答
8

我知道在 Linux 中为 iPhone 进行开发的唯一方法是安装 Vmware 并努力让 OS X 在虚拟机中运行。话虽如此,这样做存在一些“法律”问题。据报道,OS X Server 可以虚拟化,但至于开发故事我不知道。

如果你真的是认真的,那就是我要调查的。

祝你好运。

于 2008-11-10T03:09:44.927 回答
5

您可能能够在最终会在 iPhone 或 iPad 上找到自己的 Linux 机器上编写代码,但最终您需要一台 Mac 来测试或将代码部署到 iPhone 或将其提交到 App Store。所以最终你需要一台 Mac,所以你也可以在 Mac 上使用 Apple 提供的所有工具来完成工作。有 Xcode 和 Objective-C 的替代品,例如 Monotouch - 但这些也使用 Apple 工具。

您可以通过一些工作在 Linux 上的 VM 中运行 OS X。但是我应该指出,即使您购买了 OSX 的副本,这也会违反 OSX 许可协议——因为它仅被许可在 Apple 硬件上运行。

很抱歉给你这个消息 - iPhone/iPad 周围的生态系统受到非常严格的控制。

编辑:一个主要的例外是为 iPhone 编写一个网络应用程序。iPhone 有一些出色的网络应用程序,它们的用户体验几乎与原生应用程序一样好。但是,我确实将您的问题解释为与本机应用程序开发有关。Web 应用程序,尽管用户可以创建一个图标来启动它们——仍然是“二等”公民。

于 2011-08-21T14:07:19.397 回答
5

您可以使用Tersus(开源),它允许您将应用程序导出为 Xcode 项目。

于 2010-02-24T13:16:24.727 回答
5

我已经使用cjacker 的 iOS clang 工具链在 linux 上成功构建了 iOS 应用程序。基本上,它包括来自您的 linux 发行版的上游 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

祝你好运。

于 2015-04-03T20:43:16.250 回答
2

有一个名为Rhodes的框架。

该概念基于 Ruby on Rails,您可以使用 Ruby 和 HTML 开发移动应用程序,并且可以在 Linux 环境中编写代码。然后,您可以在Rhhub创建一个帐户,在其中添加代码(通过GitHub),它允许您为 iPhone、Blackberry、Android、Windows Mobile 和 Symbian 编译它,所有这些都使用相同的代码。您不必为 iPhone 编写 Objective-C 代码,也不必为 Android 编写 Java 等。它会为您完成转换。您需要做的就是遵守创建 iPhone 应用程序(或您要为其开发的手机)的规则,以便它可以在 iTunes(或同等市场)上被接受。

这也将允许您将应用程序添加到 iTunes。

但是,我没有找到任何模拟器,这意味着要测试您的应用程序,您需要将其放在 iPhone 上,这是一项任务。

我正在使用此选项,因为我想为所有手机创建应用程序,并且我已经使用 Ruby on Rails。如果您只想为 iPhone 制作应用程序,那么请购买 Mac。

希望这可以帮助。

于 2011-08-28T09:58:01.450 回答
1

你需要为它获得mac。有几个可用的工具链(如 win-chain)实际上可以让您在 Windows 上编写和构建 i Phone 应用程序。有几个相关的教程可以在 Windows 上构建 Objective C 代码。但是有一个问题,因此开发的应用程序只能在越狱的 i 手机上运行。

我们已经看到很少有黑客可以克服这一点并进入 App Store,但随着 Apple 不断更新 SDK,工具链需要定期更新。一直编起来很麻烦。如果您想准备好应用程序,您还可以以合理的价格从 arcapps 的启动应用程序中获得帮助。 iphone应用程序开发

于 2011-04-07T07:05:16.700 回答
1

You're right non-jailbroken phones are limited to Apple's App store and Apple "has the right" to enforce whatever rule, it's totally nonfree territory. However while developing, one won't have to deal with Apple at all. You can use e.g. rsync to upload the code to the device and test it.

于 2010-01-21T22:58:15.627 回答
1

在某种程度上,是的,这是可能的。您可以键入 Objective-C 代码并设置您的项目。您甚至可以使用 gcc 测试代码的 C 和 C++ 部分。

你不能做什么:

  • 使用 Interface Builder 设置您的界面,因为它仅适用于 Mac。(不是必需的,但推荐。)
  • 编译使用 Apple 的 Cocoa 类的代码——它们在 Linux 上不存在。
  • 在模拟器中测试代码 - 没有适用于 Linux 的代码。
  • 为真实设备或 App Store 编译代码——所有这些都需要 Apple 仅为 OS X 提供的工具。
于 2011-08-21T14:09:18.300 回答
1

我尝试将 cocos2d-iphone 移植到 GNUstep,以便您可以基于 cocos2d开发游戏。但是,要发布,您需要一个 mac。cocos2d-GNUstep .

于 2011-02-04T17:19:00.037 回答
0

我会推荐使用 mac,因为 ios 模拟器非常适合在应用程序的早期阶段进行测试。但我确实知道与我们合作的一家小公司使用 Unity 进行开发,因此他们不需要大量的 mac。这样他们办公室只需要一台mac,而这只是为了编译最终版本。这也意味着它可以在 android 上运行,但它真的取决于你的建筑,因为它是一个游戏引擎。您可能希望使用 Sencha Touch Mobile 等框架研究 Web 应用程序

Unity:http : //unity3d.com/ Sencha Touch:http ://www.sencha.com/products/touch/

于 2011-08-21T14:19:51.817 回答
-6

如果您的应用程序不是使用 Xcode 开发的,那么您将永远无法获得 Apple 的批准。绝不。而且,如果您确实破解了 SDK 以在 Linux 上进行开发,而 Apple 发现了,那么当您得到服务时不要感到惊讶。我是 ADC 和 iPhone 开发者计划的成员。相信,Apple 对此非常认真。

不要冒险,购买 Macbook 或 Mac mini(是的,mini 可以运行 Xcode——虽然速度很慢——如果你使用 mini,可以增加 RAM)。此外,虽然我看到 OS X 被黑以在 VMware 上运行,但我从未见过有人在 VM 上运行 Xcode。祝你好运。在您遇到麻烦之前,我会检查 EULA。

PS:阅读以上内容后,是的,我同意如果您确实破解了 SDK 并在 Linux 上开发,至少在 Mac 上进行最终打包。并通过 Mac 提交。苹果没有逐行运行代码,所以我怀疑他们会抓住这一点。但是,伙计,这是很多假设和工作。做起来很有趣。:)

于 2008-11-27T08:19:43.803 回答
-6

如果您珍惜时间,请购买 Mac!我对 Linux 开发选项了解不多,无法提供可行的解决方案,但建议的方法似乎涉及一些相当迂回的工作。如果您打算认真编写和销售 iPhone 应用程序,我认为您可以轻松收回 Mac Mini 或 Macbook 的成本。:-)

于 2009-07-13T23:08:37.163 回答