在运行时findXcode Buildscheme名称

有没有办法找出在运行时使用的计划?

可能有更好的方法来做到这一点,我试图通过使用计划名称设置访问环境(生产与发展)。

目前我在App-Prefix.pch文件中使用#define ENV @"PROD"来做到这一点,但是当发送pkg到苹果进行检查时有可能会错过这个:

在模拟器上或设备上运行应用程序时,将设置DEBUGvariables,以便在代码中使用它:

 #ifdef DEBUG // Something #else // Something else #endif 

你可以从目标的构build设置中看到这个variables:

一旦在Debug (产品 – >scheme – >编辑scheme)上设置了Runconfiguration,该variables将被设置为:

在这里输入图像说明

我search了广泛的答案,因为我真的不喜欢创build额外的目标或额外的configuration集的想法。 这两个选项只是创build一个巨大的configuration同步问题。

所以,在黑客Xcode几个小时后,这就是我想出的:

第1步 :使用stringtypes将密钥“SchemeName”添加到Info.plist中。

第2步 :编辑您的默认scheme,并在编译 – >预执行添加一个新的运行脚本与以下内容:

 /usr/libexec/PlistBuddy -c "Set :SchemeName \"$SCHEME_NAME\"" "$PROJECT_DIR/$INFOPLIST_FILE" 

确保从“提供构build设置”下select一个目标。

步骤3 :现在按照您的喜好多次复制该scheme(pipe理scheme… – >select现有的scheme – >点击齿轮图标 – >重复)例如,您可以创build开发,舞台,制作,应用程序商店等。不要忘了点击“共享”,如果你想在版本控制中携带这些scheme。

第四步 :在代码中,你可以像这样获取值:

 NSString *schemeName = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"SchemeName"]; 

现在,代码可以在运行时正确configuration它自己。 没有讨厌的预处理macros处理,没有脆弱的configuration混乱维护。