65

我开始考虑构建我的 iPhone 应用程序的精简版。我在网上找到了一些关于这个过程的东西,即:

http://developer.apple.com/tools/XCode/XCodeprojects.html

http://www.pacificspirit.com/blog/2009/01/27/building_for_multiple_iphone_targets_in_xcode

我特别感兴趣的是简化管理哪些文件包含在我的应用程序的不同版本中的过程,因为我不断修改和增强我的付费版本。

4

6 回答 6

83

原始答案来自应用购买前几天。现在正确的答案是发布一个二进制文件并通过应用程序升级提供您的付费版本。它的代码略多一些,但它是单次发货,您的转换率可能会更好。

但是,如果您仍然想要应用程序的版本:

Xcode 对多个目标有很好的支持。

从项目菜单中选择“新目标...”。添加另一个 iPhone 可执行文件(Cocoa Touch 应用程序),然后您可以按资源指定目标中包含哪些项目。这可以包括仅将某些代码编译到您的付费版本中。

您可以通过右键单击“组和文件”列表标题(顶部 lhs)并启用目标成员资格来获得有关当前目标中包含和不包含的内容的快速视觉反馈。

您在构建不同目标之间切换的方式与在为模拟器或 iPhone 构建之间切换的方式相同。

要在构建时指定特定类的行为,您可以做两件事 - 包括为各自目标构建的类的两个版本,或者您可以为预处理器设置构建时间标志。在“组和文件”列表中选择目标,然后在该目标上“获取信息”。转到构建选项卡并搜索“预处理”。您应该会看到一个名为“预处理器宏”的项目添加LITE到您的轻量级目标中,并以同样的方式添加PAID到您的付费目标中。

在您的源文件中,您可以在编译时确定您正在编译使用哪个版本#ifdef LITE等。

更进一步,您可以基于 #ifdef LITE 设置全局标志或 AppDelegate 成员变量,并在运行时更改 Lite 和付费应用程序的行为。不过,我不确定我是否看到了其中的价值。

于 2009-02-14T18:59:59.173 回答
24

作为开发人员,您希望编写尽可能少的代码(更少的错误,更少的时间)。随着构建版本的不同,您将不得不投入更多的工作和单独的测试。

除非您正在制作昂贵的黑客工具,否则您可能会考虑使差异尽可能简单 - 只需隐藏一些偏好或设置。这样,大多数检查和测试将在两个构建中执行相同的工作,很少有代码会有所不同。关键是不要给自己作为开发人员的负担。

有不同构建的原因是为了确保免费版不会被黑客入侵到“付费”版中。试图绕过这种简单限制的人主要是那些会越狱手机的人的子集。无论您做什么,您都不会在任何情况下得到他们的钱,除非他们非常惊叹,他们购买它只是为了表示感谢。

于 2009-02-14T21:30:27.003 回答
7

“Flower Garden”的创建者在此处详细介绍了创建 lite 版本的不同方法的优缺点:

http://gamesfromwithin.com/from-full-to-lite-in-under-an-hour

于 2009-02-18T00:09:26.710 回答
2

在 iPhone 3.0 中,您可以改为使用应用内购买,并允许它解锁全部功能,而无需制作多个应用。我也认为这将避免人们免费获得这个,但我对此不太确定。

于 2009-11-13T22:28:15.860 回答
1

我使用了一个 git 分支。我分支了我的主应用程序并进行了一些调整以禁用一堆内容。现在我主要在 master 分支工作,并在发生重大发展时切换到 lite 并合并到最新版本。效果很好。

于 2009-02-14T19:38:44.883 回答
0

更好的方法是只有一个项目,而不是多个目标——每个版本的应用程序都有一个。那么什么是目标:多个目标

于 2015-06-03T09:56:29.387 回答