文档章节

IOS之Info.plist文件简介

big军
 big军
发布于 2013/01/23 22:11
字数 1247
阅读 7.4W
收藏 16

元信息简介

    为了提供更好的用户体验,IOS 和 OS X的每个app或bundle都依赖于特殊的元信息(meta Information).

    元信息有多种用途,包括

  • 直接向用户展示信
  • 系统内部用来标识你的app或其支持的文档类型
  • 系统框架用来辅助app的加载
      通过一种特殊的信息属性列表文件,app向系统提供自己的元信息。

      属性列表可用来构建任意数据,这些数据在运行时是可访问的。每个属性列表都包含了一个bundle的配置信息。文件中的keys和values描述了许多要应用于该bundle的行为以及配置选项。Xcode通常会为每个基于bundle的工程自动创建该属性列表文件,并且提供许多合适的keys以及其对应的默认的values。之后可以编辑该文件,添加任何工程所需的keys和values,或修改现有的keys所对应的values。

Info.plist文件

      每个application都使用Info.plist文件来存储以上的元信息,从名称上也可以判断出Info.plist就是以上提到的“属性列表”。IOS用Info.plist来决定bundle所显示的icon,当前app支持打开的文档类型,等等其它的信息。正如以上所提到的,Info.plist本身是一种结构化的文本文件,它包含了一些重要的配置信息。Info.plist文件多数情况下是以UTF-8进行编码,并且其内部的配置内容其实是以XML格式进行组织。XML的根节点是一个词典(dictionary),包含描述bundle各个方面的keys和values。系统读取该文件,并获取app的配置信息。

      按照约定,属性列表文件的名称就是Info.plist。该文件名称时大小写敏感的,并且首字母必须是大写的"I".在IOS的apps中,当新工程创建完毕后,会自动创建一个名为<project>-Info.plist文件,该文件位于bundle目录(Supporting Files)的顶部,在工程构建时,该文件用以生成Info.plist文件,之后添加至bundle中。我们以TestPro为例,当用Xcode创建名为TestPro工程后,其目录结构如下:



     我们以TestPro为例,当用Xcode创建名为TestPro工程后,其目录结构如下



在Info.plist中添加key

     创建新工程时生成的Info.plist文件,默认情况下会提供支持app加载和运行所需要的多数重要的keys以及初始化对应的values。在App的加载运行时,系统会收集Info.plist文件中所包含的配置信息。根据App的需要,我们可以添加所需的额外的keys,当我们选中每行配置选项时,在key所属列的右侧,会出现“+”“-”示意的标记,

    单击加号,会在当前行的下一行插入新行,之后可以选择性的添加新key,并设置其value.plist的type一栏提供了value的可选数据类型,包括:String,Date,Array,Number,Data,Boolean,Dictionary。


       因为plist也属于文本文件,并以XML格式进行内容的组织,我们可以用任何支持UTF-8的文本编辑器打开并对其进行各种编辑操作。但因为Xcode本身提供的对于plist文件内容的操作已经非常方便,基本上利用Xode编辑plist还是首选。要查看XML下plist文件的内容我们可以选中TestPro-Info.plist文件然后右键——>Open As ——>Source Code



     之后打开的文件格式如下:



Info.plist中key的类型分类

根据功能的分类,Info.plist文件的keys大致划分为以下几类

         Core Foundation Keys             

          该类的keys的特点是以CF为前缀,用以代表Core Foundation,描述了一些常用的行为项

         Lanch Services Keys
            加载服务项,提供了App加载所依赖的配置,描述了app启动的方式选择。

         Cocoa Keys
            Cocoa框架或Cocoa Touch框架依赖这些keys来标识更高级别的配置项目,如app的main nib文件,主要类。这些key描述影响着Cocoa和Cocoa Touch框架初始化和运行app的运行方式

         UIKit Keys
            描述IOS Apps的行为,每个IOS应用都依赖于Info.plist的keys来与IOS系统通信。Xcode提供了生成的plist文件提供了所有app所需的那些比较重要的keys。
            但app可能需要扩展默认的plist来描述更多的信息,如定制app启动后的默认旋转方向,标识app是否支持文件共享等等。

         OS X Keys
            描述了Mac Apps的行为,本章不描述。

因为没类keys下面,根据功能点都细分了许多key,希望有时间陆续对用过的key以及该key的功能做个简单的描述总结。

注:描述于IOS5.1下


© 著作权归作者所有

big军
粉丝 35
博文 54
码字总数 90542
作品 0
浦东
程序员
私信 提问
加载中

评论(3)

谷_寒
谷_寒
为了提供更好的用户体验,IOS 和 OS X的每个app或bundle都依赖于特殊的元信息(meta Information).??
这句话为什么这样子说???不是很明白
big军
big军 博主

引用来自“ChildhoodX”的评论

嗯,不错的总结

谢谢!
ChildhoodAndy
ChildhoodAndy
嗯,不错的总结
iOS开发 - 3D Touch 应用系列一 - Quick Actions 创建桌面 Icon 快捷方式

个言 很久没发随笔了,有一年多了吧。期间也曾想继续去写随笔,但是因为各种原因而耽搁了。最近又想了一下,还是有很多东西想要写,想要分享,想要记录下来的东西。之后我也会不断写随笔,但...

GarveyCalvin
2019/05/30
0
0
iOS使用Objective-c自定义cordova插件(二)

接上一章. 中还有其它的配置、、、以及配置文件. eg: 框架: <framework src="CFNetwork.frame" weak="true"/> plist文件: <resource-file src="src/ios/PushConfig.plist"/> 默认的info.plis......

Michaelyn
2017/10/23
82
0
xcode10 编译报错Multiple commands produce

xcode10 编译报错: Showing Recent Messages :-1: Multiple commands produce '/Users/ios/Library/Developer/Xcode/DerivedData/MyLiveStudy-bnhwavfhjpuxadbeyicawknnfvph/Build/Products......

小曼Study
2018/10/16
0
0
iOS 11开发教程(八)定制iOS11应用程序图标

iOS 11开发教程(八)定制iOS11应用程序图标 在图1.9中可以看到应用程序的图标是网状白色图像,它是iOS模拟器上的应用程序默认的图标。这个图标是可以进行改变的。以下就来实现在iOS模拟器上...

大学霸
2017/10/27
23
0
mac opencv 提示摄像头权限问题

通常在iOS开发下,我们的app需要在Info.plist文件中配置所需要的各种限制;如摄像头权限; 本次我们在mac下创建了一个command line 程序,并且设定是c++开发,并配置了opencv库的连接; 以及...

cocoajin
2019/07/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

PHP中Session ID的实现原理

Session 的工作机制是:为每个访问者创建一个唯一的 id (UID),并基于这个 UID 来存储变量。UID 存储在 cookie 中,亦或通过 URL 进行传导。 PHPSESSIONID的生产算法原理如下: hash_func = ...

php开源社区
8分钟前
3
0
MySQL设置允许用户远程登录

项目中需要连接虚拟机上面的MySQL数据库,但是总是出错,怀疑本机是否有连接远程数据库的权限。 执行命令: mysql> use mysql;mysql> select host,user from user; 查看结果是不是root用...

imzchloe
15分钟前
11
0
TI达芬奇系列TMS320DM8148浮点DSP C674x + ARM Cortex-A8USB OTG/USB HUB接口、SATA接口(仅DM8148)V

处理器 DM8148 TI TMS320DM8148是一款高性能嵌入式32位工业级ARM Cortex-A8+DSP C674x处理器。拥有多种工业接口资源,以下是DM8148 CPU资源框图: USB OTG/USB HUB接口 CON13、CON14为Micro...

Tronlong创龙
17分钟前
3
0
一个对二维数组进行多字段多顺序排序的方法

1,代码 <?php/** * 对二维数组依次按照排序规则数组指定的字段和顺序进行排序,在有相同的情况下按下一个字段和顺序进行排序 * @param array $arr 待排序的数组 * @param array $...

vinci321
17分钟前
3
0
2019阿里技术专家面试题大汇总(内含答案)

为帮助开发者们提升面试技能、有机会入职阿里,云栖社区特别制作了这个专辑——阿里巴巴资深技术专家们结合多年的工作、面试经验总结提炼而成的面试真题这一次整体放出。并通过这些笔试真题开...

白楠楠
18分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部