如何在Xcode中为不同的配置填充不同的Info.plist

4
我需要为同一个目标的iOS设备和模拟器方案填充不同的Info.plists。我该如何实现?
问题如下:我的应用程序是voip,因此我需要将UIBackgroundModes添加到Info.plist中,但问题在于当这个属性存在于plist中并且我运行模拟器方案时,模拟器会卡在启动画面上,即使我按Home按钮也没有任何反应,控制台也没有显示任何内容。因此,我想要一个适用于模拟器方案且没有UIBackgroundModes属性的plist,以及第二个包含该属性的plist。我可以使用shell脚本来完成,但由于两个方案使用相同的脚本,我不知道如何区分它们...
谢谢!
2个回答

7

另一个解决方案:

在Xcode 4.3(以及可能更早的版本)中,您可以在Info.plist中使用预处理器定义。因此,您可以例如将UIBackgroundModes设置为${MY_BACKGROUNDMODES}。

然后,在构建设置中,您可以针对不同的构建配置定义不同的MY_BACKGROUNDMODES值。


使用 ${MY_BACKGROUNDMODES} 没有正确引用构建设置中定义的预处理器宏(这是我解释“预处理器定义”的方式)。但它确实引用了具有该名称的实际构建设置。 - Andreas

1
在项目视图中,如果您单击任何给定的组文件夹,则其内容的拆分顶部会出现一个表格列表。
最右侧的列是一个复选框,告诉您该项是否包含在目标中。克隆您的调试目标配置和plist。在模拟器配置中包含一个plist,在设备配置中包含另一个plist。

这就是我想要避免的... 我希望有一个目标,并通过一些定义运行环境的设置来区分属性列表。 - Nava Carmon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接