我正在为我的iOS应用程序准备Info.plist。我想仔细设置每个选项。但是,有一些奇怪的变量,如$ {REGION},$ {APPNAME},$ {EXTRA_ICONS}等。我猜它们是通过Xcode设置的?
我不希望Xcode弄乱这些值。我可以简单地设置它们吗?例如,对于$ {REGION},插入“en”。对于CFBundleDisplayName - 无,因为文档说:
如果您不打算本地化您的捆绑包,请不要包含此密钥 在您的Info.plist文件中。包含此密钥不会影响 显示捆绑名称但会导致性能损失 搜索此密钥的本地化版本。
等等。我可以这么做吗?什么插入“CFBundleExecutable”?我想我必须知道Xcode会产生什么?
这是一个糟糕的设计,因为有两个值的来源:plist本身,以及Xcode中的一些愚蠢的meta-plist。
答案 0 :(得分:8)
由于“Info.plist文件中的扩展构建设置”(Info.plist
)项目的构建设置,Xcode会处理您的INFOPLIST_EXPAND_BUILD_SETTINGS
文件。
这通常是一个很棒的功能,因为它可以避免根据您的构建设置和配置使用不同的Info.plist,并避免您在多个位置修改设置。但如果您真的不想要它,只需在项目或目标的构建设置中关闭此设置。
我建议您保留此设置,以便在构建设置中选择的值将在Info.plist中报告,如果您需要更改类似应用程序名称的内容,请在构建设置中更改它直。这样,您将保持构建设置和Info.plist文件之间的一致性,而不是冒着配置不一致的风险。
一个很好的例子就是你自己在自己的问题中写的那个:CFBundleExecutable
文件的Info.plist
条目。此条目通常必须包含捆绑包中可执行文件的名称(以便iOS知道要在.ipa捆绑包中启动哪个可执行文件)。
此值通常取决于您的构建设置,通常是EXECUTABLE_NAME
构建设置。如果您更改了生成的可执行文件的名称(在项目或目标的构建设置中)并且您确实在Info.plist中为此值添加了一些常量字符串,则显然需要将此CFBundleExecutable
键更改为Xcode生成的可执行文件的新名称。如果您使用${EXECUTABLE_NAME}
作为此密钥的值(并在项目设置中保持Info.plist的处理),Xcode将替换它,确保Info.plist与您的Build一致设置及其生成的可执行文件的名称。
我没有看到Xcode禁用Info.plist文件的这个处理阶段的任何好处;你应该利用它并继续使用${xxx}
构建变量,以便它们在编译时动态替换它们的实际值Xcode,从而确保一致性并避免错误。