我不希望Xcode弄乱这些值.我可以简单地设置它们吗?例如,对于${REGION},插入“en”.对于CFBundleDisplayName – 什么都没有,因为文档说:
If you do not intend to localize your bundle,do not include this key
@H_502_10@
in your Info.plist file. Inclusion of this key does not affect the
display of the bundle name but does incur a performance penalty to
search for localized versions of this key.等等.我可以这么做吗?什么插入“CFBundleExecutable”?我想我必须知道Xcode生成什么?
这是一个可怕的设计,因为有两个值的来源:plist本身,以及Xcode中的一些愚蠢的Meta-plist.
解决方法
这通常是一个很棒的功能,因为它可以避免根据您的构建设置和配置使用不同的Info.plist,并避免您在多个位置修改设置.但如果您真的不想要它,只需在项目或目标的构建设置中关闭此设置即可.
我建议您保留此设置,以便在构建设置中选择的值将在Info.plist中报告,如果您需要更改应用程序名称之类的内容,请直接在Build Settings中更改它.这样,您将保持构建设置与Info.plist文件之间的一致性,而不是冒着配置不一致的风险.
一个很好的例子是你自己在自己的问题中写的那个:Info.plist文件的CFBundleExecutable条目.此条目通常必须包含捆绑包中可执行文件的名称(以便iOS知道要在.ipa捆绑包中启动哪个可执行文件).
此值通常取决于您的构建设置,通常是EXECUTABLE_NAME构建设置.如果您更改了生成的可执行文件的名称(在项目或目标的构建设置中)并且您确实在Info.plist中为此值添加了一些常量字符串,则显然需要将此CFBundleExecutable键更改为新名称Xcode生成的可执行文件.如果您使用${EXECUTABLE_NAME}作为此密钥的值(并在项目设置中保持对Info.plist的处理),Xcode将替换它,确保Info.plist与您的构建设置一致以及它生成的可执行文件的名称.
我没有看到Xcode禁用Info.plist文件的这个处理阶段的任何好处;你应该利用它并继续使用${xxx}构建变量,以便它们在编译时动态地替换它们的实际值Xcode,从而确保一致性并避免错误.