如何管理构建iPhone应用程序的Lite vs Paid版本?

时间:2009-02-14 18:03:25

标签: ios release

我开始想要考虑建立一个 我的iPhone应用程序的精简版。我在网上找到了一些可以谈论的东西 关于过程有点,即:

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

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

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

7 个答案:

答案 0 :(得分:82)

原始答案来自应用程序购买前几天。现在正确的答案是发送一个二进制文件并通过in app upgrades提供付费版本。这是稍微多一点的代码,但它是一次发货,你的转换率可能会更好。

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

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

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

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

您可以在建立模拟器或iPhone之间切换的方式之间切换构建不同目标。

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

源文件中的你可以在编译时确定使用#ifdef LITE等编译的版本。

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

答案 1 :(得分:24)

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

除非您制作昂贵的黑客工具,否则您可能会考虑尽可能简化差异 - 只需拥有一些隐藏的偏好或设置。这样,大多数检查和测试都会在两个版本中完成相同的工作,很少的代码会有所不同。关键问题不是让自己成为开发人员。

建立不同版本的原因是确保Free不会被黑客入侵“付费”版本。试图规避这种简单限制的人主要是那些将越狱手机的人。无论你做什么,你都不会在任何条件下得到他们的钱,除非他们如此惊叹他们只是为了表示赞赏而购买它。

答案 2 :(得分:7)

“花园”的创建者详细介绍了创建精简版的不同方法的优缺点:

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

答案 3 :(得分:3)

我找到了成功:

教程 - 相同的Xcode项目为iPhone创建多个产品 http://adeem.me/blog/2009/04/18/tutorial-same-xcode-project-create-multiple-products-for-iphone/

它涵盖了Roger Nolan在回答问题时提到的大部分内容,但是一步一步地用屏幕截图。

它允许您使用C#ifdef在您的应用中包含或排除功能。

有些细节并不完全正确 - 因为我不确定Xcode的差异 - 但要弄清楚每一步的正确/新方法并不太难。

注意:您必须转到Apple并获取应用精简版的新应用ID。本教程中概述的步骤将创建info.plist文件的副本,您可能会将其重命名为infoLite.plist - 在此文件中,您需要更改“Bundle Identifier”以匹配此新appID

答案 4 :(得分:2)

使用iPhone 3.0,您可以使用应用内购买,并允许其解锁完整功能,而无需制作多个应用。我也认为这会避免人们免费获得这个,但我对此并不确定。

答案 5 :(得分:1)

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

答案 6 :(得分:0)

更好的方法是只使用一个项目,而是使用多个目标 - 每个版本的应用程序一个。那么目标是什么:Multiple Targets