Ios Info.plist及其变量,如${APPNAME}

Ios Info.plist及其变量,如${APPNAME},ios,plist,Ios,Plist,我正在为iOS应用程序准备Info.plist。我想仔细设置每个选项。然而,有一些奇怪的变量,比如${REGION}、${APPNAME}、${EXTRA_ICONS}等等。我猜它们是通过Xcode设置的 我不想让Xcode弄乱这些值。我可以简单地设置它们吗?例如,对于${REGION}插入“en”。对于CbundleDisplayName–无,因为文档中说: 如果不打算本地化包,请不要包含此密钥 在您的Info.plist文件中。包含此键不会影响 显示捆绑包名称,但会对 搜索此密钥的本地化版本

我正在为iOS应用程序准备Info.plist。我想仔细设置每个选项。然而,有一些奇怪的变量,比如${REGION}、${APPNAME}、${EXTRA_ICONS}等等。我猜它们是通过Xcode设置的

我不想让Xcode弄乱这些值。我可以简单地设置它们吗?例如,对于${REGION}插入“en”。对于CbundleDisplayName–,因为文档中说:

如果不打算本地化包,请不要包含此密钥 在您的Info.plist文件中。包含此键不会影响 显示捆绑包名称,但会对 搜索此密钥的本地化版本

等等。我能这么做吗?为“CbundleExecutable”插入什么内容?我想我必须知道Xcode生成了什么


这是一个可怕的设计,因为有两个值来源:plist本身和Xcode中一些愚蠢的元plist。

您的
Info.plist文件是由Xcode处理的,这要归功于您项目的“在Info.plist文件中展开构建设置”(
INFOPLIST\u Expand\u Build\u Settings
)构建设置

这通常是一个很好的功能,因为它避免了根据构建设置和配置使用不同的Info.plist,也避免了在多个位置修改设置。但是如果您确实不想要它,只需在项目或目标的构建设置中关闭此设置


我建议您无论如何都保持此设置为打开状态,以便在Info.plist中报告生成设置中选择的值,如果您需要更改诸如应用程序名称之类的内容,请直接在生成设置中进行更改。这样,您将保持构建设置和Info.plist文件之间的一致性,而不是冒配置不一致的风险

一个很好的例子是您在自己的问题中编写的:
Info.plist
文件的
CFBundleExecutable
条目。此条目通常必须包含捆绑包中可执行文件的名称(以便iOS知道在.ipa捆绑包中启动哪个可执行文件)

此值通常取决于生成设置,通常是
可执行文件\u名称
生成设置。如果您曾经更改生成的可执行文件的名称(在项目或目标的构建设置中),并且确实在Info.plist中为此值放置了一些常量字符串,那么显然需要将此
CbundleExecutable
键更改为Xcode生成的可执行文件的新名称。如果您使用
${EXECUTABLE\u NAME}
作为此键的值(并在项目设置中保持对Info.plist的处理处于打开状态),Xcode将为您替换它,确保Info.plist与您的生成设置及其生成的可执行文件的名称一致


我不认为用Xcode禁用Info.plist文件的这个处理阶段有任何好处;您应该利用它,并继续使用
${xxx}
构建变量,以便在编译时动态地将它们替换为实际值Xcode,从而确保一致性并避免错误。

我想知道,有没有办法保持
${xxx}
变量替换,不添加额外的开发机器信息,如
DTSSDKBuild
等。在我的情况下,我的目标不是IOS或app store,而是在启用
INFOPLIST\u EXPAND\u BUILD\u SETTINGS
时获得额外的密钥。