iOS设置捆绑包含仅出现在Debug版本中的项目

时间:2013-06-03 17:23:52

标签: ios

我有用户设置,我希望在设置中可用,但只有它是调试版本,或者它可能是两个单独的目标之一。

在设置包中,我有Root.plist中的项目,但我希望它只有在调试版本时才可见。

有没有办法在设置包中创建条件?

我知道我可以为两个不同的构建目标使用单独的设置包,但这需要我维护两个单独的设置包,这看起来非常混乱。

有什么想法吗?

4 个答案:

答案 0 :(得分:2)

你可以拥有一个包含所有内容的Settings.plist,然后为你不想公开其中一个设置的目标添加一个构建步骤。在该构建步骤中,使用PlistBuddy删除您不想要的设置。

这样做的好处是可以让你使用Xcode提供的优秀工具来编辑你的plist,同时保持DRY。

答案 1 :(得分:0)

在你的应用程序委托中,阅读plist并输入字典。然后使用编译时标志进行DEBUG构建,该标志打开一些添加或修改plist转换字典的代码。从那时起,不要直接访问plist,通过app delegate中的方法与字典接口。

编辑:编写一些命令行级软件以获取标准plist,并根据构建配置更改它,然后将其作为plist输出,然后将其复制到应用程序包中,作为构建阶段。您可以使用标准系统cli函数执行此操作,或者如果您在自定义mac cli程序中执行此操作,则构建它很简单。

答案 2 :(得分:0)

据我所知,没有办法在条件包中放置条件(或者,就此而言,任何形式的代码)。您可以创建一个仅在调试模式下显示的应用程序内设置页面或其他类似的内容。

答案 3 :(得分:0)

编辑模式以将脚本作为构建预操作之一运行。该脚本可以生成Root.plist,并根据需要包含额外的设置。虽然你可以使用你想要的任何语言生成器脚本(Ruby,Tcl,Forth,...),但我会使用C预处理器。

具体地,

  1. 创建一个包含所有常规设置的Root.plist.orig文件。包括#ifdef DEBUG#endif

  2. 中包含的额外设置
  3. 在架构中创建构建运行脚本预执行。该脚本应包含一个shell命令来运行预处理器。所以(我没有100%正确的详细信息):cpp -DDEBUG Root.plist.orig > Root.plist