我正在开发一个现有iPhone应用程序的Lite版本,我正在试图找出有条件地编译full和lite版本的最佳方法。理想情况下,我想使用LITE预处理器定义,但有一个很好的方法来设置它,所以我可以从方案菜单中选择一个不同的项目,只需编译我想要的任何版本?
我不想复制我的“完整”目标,因为我担心我会更改一个版本中的设置而不是将其复制到另一个版本中。我查看了使用聚合目标但是当我按下Command-R时它不会运行。
没有重复的最佳方法是什么?
答案 0 :(得分:1)
听起来像你在使用xcode4?您可以通过定义新配置(超出标准的Debug& Release)来完成此操作。
然后,为其他配置添加自己的预处理器宏。
最后,添加一个新方案以选择新配置。
答案 1 :(得分:0)
最后我决定最好不使用构建配置来解决这个问题。我的应用程序使用应用内购买来支持升级到完整的非精简版本。因此,我希望编译所有功能并准备就绪。
如果我想在完整版和精简版之间切换,我现在手动更新软件包标识符,并在应用运行时检查这一点。当我提交任一版本时,我必须更改捆绑标识符,所以这样我改变了一个文件并且没有重复。在应用程序中,我调用下面的方法来启用/禁用精简功能。
+ (BOOL)isLiteVersion {
static BOOL haveCheckedLiteStatus = NO;
if (haveCheckedLiteStatus == NO) {
BOOL isLiteApp = [[[NSBundle mainBundle] bundleIdentifier] rangeOfString:@"lite"].location != NSNotFound;
isLite = isLiteApp && [[NSUserDefaults standardUserDefaults] boolForKey:kUpgraded] == NO;
haveCheckedLiteStatus = YES;
}
return isLite;
}