我们建立一个工程后,会在Supporting files下面看到一个"工程名-Info.plist"的文件,这个是对工程做一些运行期配置的文件,很重要,不能删除。
如果你在网上下载的工程中的这个文件名只是Info.plist,那么恭喜你,这个工程太老了,是用包含SDK2.0以前的Xcode生成的,不过没关系,不影响使用。
如果你使用文本编辑器打开这个文件,你会发现这是一个XML格式的文本文件,一般我们不用文本编辑器直接编辑这个文件,而是通过Xcode编辑。
下面是这个文件的一个例子:
下面是对这里可能出现的字段的解释:
Localiztion native development region --- CFBundleDevelopmentRegion 本地化相关,如果用户所在地没有相应的语言资源,则用这个key的value来作为默认.
Bundle display name --- CFBundleDisplayName 设置程序安装后显示的名称。应用程序名称限制在10-12个字符,如果超出,将被显示缩写名称。
Executaule file -- CFBundleExecutable 程序安装包的名称
Icon file --- CFBundleIconFile 应用程序图标名称,一般为icon.png
Bundle identifier --- CFBundleIdentifier 该束的唯一标识字符串,该字符串的格式类似com.yourcompany.yourapp,如果使用模拟器跑你的应用,这个字段没有用处,如果你需要把你的应用部署到设备上,你必须生成一个证书,而在生成证书的时候,在apple的网站上需要增加相应的app IDs.这里有一个字段Bundle identifier,如果这个Bundle identifier是一个完整字符串,那么文件中的这个字段必须和后者完全相同,如果app IDs中的字段含有通配符*,那么文件中的字符串必须符合后者的描述。
InfoDictionary version --- CFBundleInfoDictionaryVersion Info.plist格式的版本信息
Bundle OS Type code -- CFBundlePackageType:用来标识束类型的四个字母长的代码,(网上找的,不解??)
Bundle versions string, short --- CFBundleShortVersionString 面向用户市场的束的版本字符串,(网上找的,不解??)
Bundle creator OS Type code --- CFBundleSignature:用来标识创建者的四个字母长的代码,(网上找的,不解??)
Bundle version --- CFBundleVersion 应用程序版本号,每次部署应用程序的一个新版本时,将会增加这个编号,在app store上用的。
Application require iPhone environment -- LSRequiresIPhoneOS:用于指示程序包是否只能运行在iPhone OS 系统上。Xcode自动加入这个键,并将它的值设置为true。您不应该改变这个键的值。
Main nib file base name -- NSMainNibFile
这是一个字符串,指定应用程序主nib文件的名称。如果您希望使用其它的nib文件(而不是Xcode为工程创建的缺省文件)作为主nib文件,可以将该nib文件名关联到这个键上。nib文件名不应该包含.nib
扩展名。这个字段可以删除,你可以参考我前面的文章,main函数研究。
supported interface orientations -- UISupportedInterfaceOrientations 程序默认支持的方向。
1 常用项:
Application requires iPhone environment
Application uses Wi-Fi
如果应用程序需要wi-fi才能工作,应该将此属性设置为true。这么做会提示用户,如果没有打开wi-fi的话,打开wi-fi。为了节省电力,iphone会在30分钟后自动关闭应用程序中的任何wi-fi。设置这一个属性可以防止这种情况的发生,并且保持连接处于活动状态
与Macintosh相同,iPhone应用程序文件夹包含所有重要的Info.plist文件。Info.plist文件是向操作系统描述应用程序的XML属性列表。属性列表存储各种用于不同目的的键/值对,并且可以保存为可读的基于文本的格式或经过压缩的二进制格式。在Info.plist文件中可以找到应用程序可执行文件(CFBundleExecutable,"Executable file")、应用程序图标下显示的文本(CFBundleDisplayName,"Bundle display name")以及应用程序的唯一标识符(CFBundleIdentifier,"Bundle identifier")。
在设置显示名称时要小心。如果标题太长而无法完全显示,那么它将被截断。必要时,iPhone会增加省略号。所以,名为"My Very First iPhone App"的应用程序可能显示为"My Very F..."。这样的标题向终端用户传达的信息还不如一个更简单的标题传达的信息多,例如"First App"。
应用程序标识符通常使用苹果的反向域名命名格式(例如com.sadun.appname)。标识符对于正确的行为和执行至关重要。它不能与App Store中的任何其他标识符重复。使用时,产品标识符将应用程序注册到SpringBoard,后者是iPhone的"Finder"。SpringBoard运行用于启动应用程序的主屏幕。产品标识符还形成了内置首选项系统(即用户默认)的基础。
标识符区分大小写,并且必须与在开发人员门户上生成的配置一致。如果使用了错误的包标识符,将浪费开发人员数小时的时间。可通过在Xcode中编辑项目的设置来指定标识符(如图1-4所示)。
![]() |
(点击查看大图)图1-4 通过编辑目标属性定制应用程序 的包标识符。这里所做的编辑将反映在应用程序的Info.plist文件中。 PRODUCT_NAME标识符在项目的设置中指定 |
说明 要更改标识符,打开Xcode项目左侧的Targets(目标)列表。双击Targets(目标)→Your Application Name(你的应用程序名称)。这将打开Target Info(目标信息)窗口。单击Properties(属性)选项卡,编辑Identifier(标识符),将其从com.yourcompany改为表示你实际公司的反向域名。输入你的个人域名,然后让Xcode附加上应用程序产品名。
应用程序首选项自动存储在应用程序沙盒中。沙盒模仿通常出现在核心操作系统上的域和文件夹。在iPhone上,首选项出现在一个本地Library文件夹中,并使用应用程序标识符命名。此标识符将附加.plist扩展名(如com.sadun.appname.plist),并且首选项将使用二进制.plist格式存储。可以通过Xcode的organizer将二进制.plist传输到Macintosh中来读取它。
说明 要将应用程序数据从iPhone复制到Macintosh,打开Organizer窗口(Windows→Organizer)。选择设备,然后从应用程序列表中选择一项。单击名称旁的箭头,显示Application Data bundle,然后将这个包拖放到桌面。这将生成一个标准文件夹,该文件夹以应用程序标识符和数据被检索的日期和时间命名。
可以在Xcode中直接编辑属性列表文件,或者使用Xcode实用工具附带的Property List Editor进行编辑。它位于/Developer/Applications/Utilities中,并提供了一个对用户友好的GUI。使用苹果的plutil实用工具将属性列表从二进制格式转换为基于文本的XML格式:plutil -convert xml1 plistfile。苹果使用二进制plist降低存储需求并提高系统性能。
与Macintosh相同,Info.plist文件提供了更大的灵活性和高度可定制性。借助它们,可以设置特定于应用程序的变量(如UIRequiresPersistentWiFi),或者指定图标的显示方式(UIPrerenderedIcon)。这些变量非常强大。它们可用于为单个应用程序定义多个角色,但是第三方开发不具备此功能。例如,Photos和Camera实用工具实际上是同一个应用程序(MobileSlideShow),但却扮演着不同的"角色"。附录A详细列出了这些键。
其他标准的Info.plist键包括用于设置状态栏外观和颜色的UIStatusBarStyle,以及用于隐藏状态栏的UIStatusBarHidden。UIInterfaceOrientation允许覆盖加速计,以创建仅支持横向模式的(UIInterfaceOrientationLandscapeRight)显示。通过设置CFBundleURLTypes来注册自定义应用程序URL方案(如myCustomApp://)