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

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

我不希望Xcode弄乱这些值.我可以简单地设置它们吗?例如,对于${REGION},插入“en”.对于CFBundledisplayName – 什么都没有,因为文档说:

If you do not intend to localize your bundle,do not include this key
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文件中的扩展构建设置”(INFOPLIST_EXPAND_BUILD_SETTINGS)项目的构建设置,您的Info.plist文件由Xcode处理.

这通常是一个很棒的功能,因为它可以避免根据您的构建设置和配置使用不同的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,从而确保一致性并避免错误.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...