我开始谈到我想要构建我的iPhone应用程序的精简版本.我在网上找到了一些讨论这个过程的东西,即:
http://developer.apple.com/tools/XCode/XCodeprojects.html
http://www.pacificspirit.com/blog/2009/01/27/building_for_multiple_iphone_targets_in_xcode
我特别感兴趣的是简化管理我的应用程序的不同版本中包含哪些文件的过程,因为我不断修改和增强我的付费版本.
原始答案来自应用程序购买前几天.现在正确的答案是发布单个二进制文件,并通过应用程序升级提供付费版本.这是稍微多一点的代码,但它是一次发货,你的转换率可能会更好.
但是,如果您仍想要应用的版本:
Xcode对多个目标有很好的支持.
从项目菜单中选择"New Target ...".添加另一个iPhone可执行文件(Cocoa Touch Application),然后您可以根据资源指定资源中的哪些项目包含在目标中.这可以包括仅将某些代码编译到付费版本中.
通过右键单击"组和文件"列表标题(顶部lhs)并启用目标成员身份,您可以快速获得有关当前目标中包含和未包含内容的视觉反馈.
您可以在建立模拟器或iPhone之间切换的方式之间切换构建不同目标.
要在构建时指定特定类的行为方式,您可以做两件事 - 包括两个版本的类,每个版本都为各自的目标构建,或者,您可以为预处理器设置构建时标志.在"组和文件"列表中选择目标,然后在该目标上"获取信息".转到构建选项卡并搜索"预处理".您应该看到一个名为"预处理器宏"的项目添加LITE
到您的精简目标,并以相同的方式添加PAID
到您的付费目标.
在源文件中,您可以在编译时确定要编译使用的版本#ifdef LITE
等.
更进一步,您可以基于#ifdef LITE设置全局标志或AppDelegate成员变量,并在运行时更改Lite和付费应用的行为.我不确定我是否认为有价值.
作为开发人员,您希望编写尽可能少的代码(更少的错误,更少的时间).由于构建版本不同,您将不得不投入更多的工作和单独的测试.
除非您制作昂贵的黑客工具,否则您可能会考虑尽可能简单地保持差异 - 只需要一些隐藏的偏好或设置.这样,大多数检查和测试都会在两个版本中完成相同的工作,很少的代码会有所不同.关键问题不是让自己成为开发人员.
建立不同版本的原因是为了确保Free不会被黑客入侵"付费"版本.试图规避这种简单限制的人主要是那些将越狱手机的人.无论你做什么,你都不会在任何条件下获得他们的钱,除非他们如此惊叹他们只是为了表示赞赏而购买它.
"花园"的创建者详细介绍了创建精简版的不同方法的优缺点:
http://gamesfromwithin.com/from-full-to-lite-in-under-an-hour