iPhone中的info.plist檔案
plist檔案,Property List 檔案,一般都是xml檔案格式,用於描述應用軟體
主要包括如下:
關鍵字 | 型別 | 是否必須 | 摘要 |
CFBundleDevelopmentRegion | String | No | 該束的地區。通常對應於作者的母語。 |
CFBundleDisplayName | String | No | 本地化的束名。 |
CFBundleDocumentTypes | Array | No | 一組描述了該束所支援的文件型別的字典。 |
CFBundleExecutable | String | Yes | 該束的可執行檔名。 |
CFBundleGetInfoHTML | String | No | 用來在Finder的Get Info 面板中顯示的更豐富內容的字串。 |
CFBundleGetInfoString | String | No | 用來在Finder的Get Info 面板中顯示的字串。 |
CFBundleHelpBookFolder | String | No | 含有該束幫助檔案的資料夾名字。 |
CFBundleHelpBookName | String | No | 當該束的幫助啟動時顯示的幫助檔案的名字。 |
CFBundleIconFile | String | Yes | 圖示檔案的檔名。 |
CFBundleIdentifier | String | Yes | 該束的唯一標識字串。該字串的格式類似java包的命名方式,例如:com.apple.myapp。 |
CFBundleInfoDictionaryVersion | String | Yes | Info.plist格式的版本資訊。 |
CFBundleName | String | Yes | 束的簡稱。 |
CFBundlePackageType | String | Yes | 用來標識束型別的四個字母長的程式碼。 |
CFBundleShortVersionString | String | Yes | 面向使用者市場的束的版本字串。 |
CFBundleSignature | String | Yes | 用來標識建立者的四個字母長的程式碼。 |
CFBundleURLTypes | Array | No | 一組描述了該束所支援的URL協議的字典。 |
CFBundleVersion | String | Yes | 可執行檔案的建立號。 |
CFBundleDevelopmentRegion
CFBundleDevelopmentRegion關鍵字指定了一個字串值來標識束的地區。通常對應於作者的母語。如果不能找到使用者首選的地區或語言的資源,系統最後會使用該值。
CFBundleDisplayName
CFBundleDisplayName關鍵字指定了一個字串值來標識束的顯示名稱。Finder和其他使用者介面元件會把它顯示給使用者。這個名稱可以與 檔案系統中的束名不同。通過把關鍵字加入適當的.lproj子目錄中的InfoPlist.strings檔案,就可以實現該關鍵字的本地化。如果您需要 本地化這個關鍵字,您還應該提供一個CFBundleName關鍵字的本地化版本。
有關顯示名稱的更多資訊參見“本地化檔案系統名稱” 。
CFBundleDocumentTypes
CFBundleDocumentTypes關鍵字儲存了一組字典,它包含了該應用程式所支援的文件型別。每一個字典都被稱做型別定義字典,並且包含了用於定義文件型別的關鍵字。表A-2列出了型別定義字典中支援的關鍵字。
表 A-2 CFBundleDocumentTypes字典的關鍵字
關鍵字 型別 描述 CFBundleTypeExtensions Array 該關鍵字包含了一組對映到這個型別的副檔名。為了開啟具有任何副檔名的文件,可以用單個星號“*”。該關鍵字是必須的。 CFBundleTypeIconFile String 該關鍵字指定了系統顯示該類文件時使用的圖示檔名,該圖示檔名的副檔名是可選的。如果沒有副檔名,系統會根據平臺指定一個(例如,Mac OS 9中的.icons)。 CFBundleTypeName String 該關鍵字包含了這種文件型別的抽象名稱。通過在適當的InforPlist.strings檔案中包含該關鍵字,可以實現對它的本地化。 CFBundleTypeOSTypes Array 該關鍵字包含了一組對映到這個型別的四字母長的型別程式碼。為了開啟所有型別的文件,可以把它設為“****”。該關鍵字是必須的。 CFBundleTypeRole String 該關鍵字定義了那些與文件型別有關的應用程式的角色。它的值可以是Editer,Viewer,Printer,Shell或None。有關這些值的詳細描述可以參見“ 文件的配置” 。該關鍵字是必須的。 NSDocumentClass String 該關鍵字描述了被用來例項化文件的NSDocument子類。僅供Cocoa應用程式使用。 NSExportableAs Array 該關鍵字描述了一組可以輸出的文件型別。僅供Cocoa應用程式使用。
CFBundleExecutable
CFBundleExecutable 標識了束的可執行主檔案的名稱。對於一個應用程式來說,就是該應用程式的可執行檔案。對於一個可載入束,它是一個可以被束動態載入的二進位制檔案。對於一個框架,它是一個共享庫。Project Builder會自動把該關鍵字加入到合適專案的Info.plist檔案中。
對於框架,考慮到啟動效率的原因,可執行檔名需要和框架名同名。該可執行檔名不應該包含可用於多種平臺的副檔名。
注意
您必須在束的Info.plist檔案中包含一個有效的CFBundleExecutable關鍵字。即使當用戶重新命名應用程式或束的目錄時,Mac OS X也可以使用這個關鍵字來定位可執行檔案和共享庫。
CFBundleGetInfoHTML
CFBundleGetInfoHTML關鍵字含有會在束的資訊視窗中顯示的HTML字串。如果您希望在資訊視窗中有更強的表現力,可以使用這個鍵值對 來替代純文字的CFBundleGetInfoString。通過把它加入到合適的.lproj目錄中的InfoPlist.strings檔案中,您也 可以本地化該字串。
如果CFBundleGetInfoString和CFBundleGetInfoHTML同時存在的話,系統會選擇使用CFBundleGetInfoHTML。
CFBundleGetInfoString
CFBundleGetInfoString關鍵字含有會在束的資訊視窗中顯示的純文字字串(這裡的字串也就是Mac OS 9中的長字串)。該關鍵字的格式應該遵照Mac OS 9中的長字串,例如:“2.2.1, ? Great Software, Inc, 1999”。通過把它加入到合適的.lproj目錄中的InfoPlist.strings檔案中,您也可以本地化該字串。
如果存在CFBundleGetInfoHTML的話,系統不會選擇使用該關鍵字。
CFBundleHelpBookFolder
CFBundleHelpBookFolder關鍵字含有該束的幫助檔案的資料夾名字。幫助通常被本地化成一種指定的語言,所以該關鍵字指向的資料夾應該是所選擇語言的.lproj目錄中的資料夾。
CFBundleHelpBookName
CFBundleHelpBookName指定了您的應用程式的幫助主頁。該關鍵字指定的幫助頁面名可以和HTML檔名不同。在幫助檔案META標籤的CONTENT屬性中指定了幫助頁面名。
CFBundleIconFile
CFBundleIconFile關鍵字指定了包含該束圖示的檔案。您給出的檔名不需要包含“.icns”副檔名。Finder會在該束的“Resource”資料夾內尋找圖示檔案。
如果您的束使用了自定義的圖示,那您就必須指定該屬性。假如您沒有指定,Finder(和其他應用程式)會使用預設的圖示來顯示您的束。
CFBundleIdentifier
CFBundleIdentifier關鍵字指定了束的一個唯一的標識字串。該標識符采用了類似Java包的命名方式,例如com.apple.myapp。該束識別符號可以在執行時定位束。預置系統使用這個字串來唯一地標識每個應用程式。
CFBundleInfoDictionaryVersion
CFBundleInfoDictionaryVersion關鍵字指定了屬性列表結構的當前版本號。該關鍵字的存在使得可以支援Info.plist格式將來的版本。在您建立一個束時,Project Builder會自動產生該關鍵字。
CFBundleName
CFBundleName指定了該束的簡稱。簡稱應該小於16個字元並且適合在選單和“關於”中顯示。通過把它加入到適當的.lproj子資料夾下的 InfoPlist.strings檔案中,該關鍵字可以被本地化。如果您本地化了該關鍵字,那您也應該提供一個CFBundleDisplayName 關鍵字的本地化版本。
CFBundlePackageType
CFBundlePackageType關鍵字指定了束的型別,類似於Mac OS 9的檔案型別程式碼。該關鍵字的值包含一個四個字母長的程式碼。應用程式的程式碼是‘APPL’;框架的程式碼是‘FMWK’;可裝載束的程式碼是‘BND’。如果您需要,您也可以為可裝載束選擇其他特殊的型別程式碼。
CFBundleShortVersionString
CFBundleShortVersionString關鍵字指定了束的版本號。一般包含該束的主、次版本號。這個字串的格式通常是“n.n.n”(n表示某個數字)。第一個數字是束的主要版本號,另兩個是次要版本號。該關鍵字的值會被顯示在Cocoa應用程式的關於對話方塊中。
該關鍵字不同於CFBundleVersion,它指定了一個特殊的建立號。而CFBundleShortVersionString的值描述了一種更加正式的並且不隨每一次建立而改變的版本號。
CFBundleSignature
CFBundleSignature關鍵字指定了束的建立者,類似於Mac OS 9中的檔案建立者程式碼。該關鍵字的值包含四字母長的程式碼,用來確定每一個束。
CFBundleURLTypes
CFBundleURLTypes關鍵字包含了一組描述了應用程式所支援的URL協議的字典。它的用途類似於CFBundleDocumentTypes 的作用,但它描述了URL協議而不是文件型別。每一個字典條目對應一個單獨的URL協議。表A-3列出了在每一個字典條目中使用的關鍵字。
表A-3 CFBundleURLTypes字典的關鍵字
關鍵字 型別 描述 CFBundleTypeRole String 該關鍵字定義了那些與URL型別有關的應用程式的角色(即該應用程式與某種文件型別的關係)。它的值可以是Editer,Viewer,Printer,Shell或None。有關這些值的詳細描述可以參見“ 文件的配置” 。該關鍵字是必須的。 CFBundleURLIconFile String 該關鍵字包含了被用於這種URL型別的圖示檔名(不包括副檔名)字串。 CFBundleURLName String 該關鍵字包含了這種URL型別的抽象名稱字串。為了確保唯一性,建議您使用Java包方式的命名法則。這個名字作為一個關鍵字也會在InfoPlist.strings檔案中出現,用來提供該型別名的可讀性版本。 CFBundleURLSchemes Array 該關鍵字包含了一組可被這種型別處理的URL協議。例如:http,ftp等。
CFBundleVersion
CFBundleVersion關鍵字指定了一個字串用來標識建立號。該關鍵字的值通常隨每一次建立而改變,並且會被顯示在Cocoa"關於"對話方塊中的擴號裡。
為了指定一個釋出版的束的版本資訊,可以使用CFBundleShortVersionString關鍵字。參見“CFBundleShortVersionString” 。
應用程式特定的關鍵字
表A-4列出了僅用於應用程式束的關鍵字:
表A-4應用程式特定的關鍵字
關鍵字 型別 是否必須 摘要 CFAppleHelpAnchor String No 該束的初始HTML幫助檔案。 NSAppleScriptEnabled String No 指定是否支援AppleScript。 NSHumanReadableCopyright String Yes 顯示在對話方塊中的版權資訊。 NSJavaNeeded Boolean or String No 指定該程式是否需要一個Java虛擬機器。 NSJavaPath Array No 一組Java類所在的路徑(前面需要加上NSJavaRoot)。 NSJavaRoot String No 包含Java類的根目錄。 NSMainNibFile String Yes 應用程式的主nib檔名。 NSPrincipalClass String Yes 束的主類的名字。 NSServices Array No 一組描述了由應用程式所提供的服務的字典。
CFAppleHelpAnchor
CFAppleHelpAnchor關鍵字定義了束的初始HTML幫助檔名,不需要包括.html或.htm副檔名。這個檔案位於束的本地化資源目錄中,或者如果沒有本地化資源目錄的話,則直接被放在Resources目錄中。
NSAppleScriptEnabled
NSAppleScriptEnabled關鍵字說明了該應用程式是否支援AppleScript。如果您的應用程式支援,就需要把該字串的值設為“Yes”。
NSHumanReadableCopyright
NSHumanReadableCopyright關鍵字包含了一個含有束的版權資訊的字串。您可以在“關於”對話方塊中顯示它。該關鍵字通常會出現在InfoPlist.strings檔案中,因為往往需要本地化該關鍵字的值。
NSJavaNeeded
NSJavaNeeded關鍵字含有一個布林值,用來確定在執行該束的程式碼之前Java虛擬機器是否需要被載入並執行。您也可以指定一個字串型別的值“YES”代替布林型的值。
NSJavaPath
NSJavaPath關鍵字包含了一組路徑。每一個路徑指向一個Java類。該路徑相對於由NSJavaRoot關鍵字定義的位置來說,可能是一個絕對路徑也可能是一個相對路徑。開發環境會自動把這些值儲存在陣列中。
NSJavaRoot
NSJavaRoot關鍵字含有一個指向一個目錄的字串。該目錄是應用程式的Java類檔案的根目錄。
NSMainNibFile
NSMainNibFile關鍵字包含了一個含有應用程式的主nib檔名(不包含.nib副檔名)的字串。一個nib檔案作為一個Interface Builder的存檔檔案,含有對使用者介面的詳細描述資訊以及那些介面中的物件之間的關聯資訊。當應用程式被啟動時,主nib檔案會被自動裝載。Mac OS X會尋找與應用程式名相匹配的nib檔案。
NSPrincipalClass
NSPrincipalClass關鍵字定義了一個束的主類的名稱。對於應用程式來說,預設情況下這個名字就是應用程式的名字。
NSServices
NSServices包含了一組字典,它詳細說明了應用程式所提供的服務。表A-5列出了用來指定服務的關鍵字。
表 A-5 NSServices字典的關鍵字
關鍵字 型別 描述 NSPortName String 該關鍵字指定了由您的應用程式監聽器為接受外部服務請求所提供的埠名稱。 NSMessage String 該關鍵字指定了用來呼叫該服務的例項方法名。在Objective-C中,例項方法的形式是messageName:userData:error:。在Java中,例項方法的形式是messageName(NSPasteBoard.String)。 NSSendTypes Array 該關鍵字指定了一組可以被該服務讀取的資料型別名。NSPasteboard類列出了幾個常用的資料型別。您必須包含此關鍵字,NSReturnTypes,或者兩者。 NSReturnTypes Array 該關鍵字指定了一組可以被該服務返回的資料型別名。NSPasteboard類列出了幾個常用的資料型別。您必須包含此關鍵字,NSSendTypes,或者兩者。 NSMenuItem Dictionary 該關鍵字包含一個字典,它指定了加入Services選單中的文字。字典中的唯一一個關鍵字被稱為default並且它的值是選單項的文字。該值必須是唯 一的。您可以使用斜槓“/”來指定一個子選單。例如,Mail/Send出現在Services選單中時就是一個帶有Send子選單並且名為Mail的菜 單。 NSKeyEquivalent Dictionary 該關鍵字是可選的,並且包含一個含有用來請求服務選單命令的快捷按鍵的字典。與NSMenuItem類似,字典中的唯一一個關鍵字被稱為default並且它的值是單個的字元。使用者可以通過按下Command,Shift功能鍵和相應的字元來請求該快捷按鍵。 NSUserData String 該關鍵字是一個可選字串,它含有您的選擇值。 NSTimeout String 該關鍵字是一個可選的數字字串,它指定了從應用程式請求服務到收到它的響應所需要等待的毫秒數。
啟動服務關鍵字
啟動服務關鍵字規定了Mac OS X中的應用程式是怎樣被啟動的。這些關鍵字適用於CFM和Mach-O可執行檔案。有關CFM和Mach-O可執行檔案的詳情可參見“安裝和整合” 一章中的“CFM可執行檔案”。表A-6列出了啟動服務的關鍵字。
表A-6啟動服務關鍵字
關鍵字 型別 是否必須 摘要 LSBackgroundOnly String No 指定了應用程式是否僅僅執行在後臺。(僅適用於Mach-O的應用程式)。 LSPrefersCarbon String No 指定了應用程式是否優先執行在Carbon環境中。 LSPrefersClassic String No 指定了應用程式是否優先執行在Classic環境中。 LSRequiresCarbon String No 指定了應用程式是否必須執行在一個Carbon環境中。 LSRequiresClassic String No 指定了應用程式是否必須執行在一個Classic環境中。 LSUIElement String No 指定了應用程式是否是一個使用者介面元件,即一個應用程式不應該出現在Dock中或強制退出視窗。
LSBackgroundOnly
如果該關鍵字存在並且被設為“1”,啟動服務將只會執行在後臺。您可以使用該關鍵字來建立無使用者介面的後臺應用程式。如果您的應用程式使用了連線到視窗服 務器的高階框架,但並不需要顯示出來,您也應該使用該關鍵字。後臺應用程式必須被編譯成Mach-O可執行檔案。該選項不適用於CFM應用程式。
您也可以指定該關鍵字的型別為Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支援這些型別的值。
LSPrefersCarbon
如果該關鍵字被設為“1”,Finder將會在顯示簡介面板中顯示“在Classic環境中開啟”控制選項,預設情況下該控制元件未被選中。如果需要,使用者可以修改這個控制選項來在Classic環境中啟動應用程式。
您也可以指定該關鍵字的型別為Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支援這些型別的值。如果您在您的屬性列表中加入了該關鍵字,那麼就不要同時加入LSPrefersClassic, LSRequiresCarbon,或LSRequiresClassic關鍵字。
LSPrefersClassic
如果該關鍵字被設為“1”,Finder將會在顯示簡介面板中顯示“在Classic環境中開啟” 控制選項,預設情況下該控制元件被選中。如果需要,使用者可以修改這個控制選項來在Carbon環境中啟動應用程式。
您也可以指定該關鍵字的型別為Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支援這些型別的值。如果您在您的屬性列表中加入了該關鍵字,那麼就不要同時加入LSPrefersCarbon, LSRequiresCarbon,或LSRequiresClassic關鍵字。
LSRequiresCarbon
如果該關鍵字被設為“1”,啟動服務將只在Carbon環境中執行應用程式。如果您的應用程式不應該執行在Classic環境中的話,可以使用該關鍵字。
您也可以指定該關鍵字的型別為Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支援這些型別的值。如果您在您的屬性列表中加入了該關鍵字,那麼就不要同時加入LSPrefersCarbon, LSPrefersClassic,或LSRequiresClassic關鍵字。
LSRequiresClassic
如果該關鍵字被設為“1”,啟動服務將只在Classic環境中執行應用程式。如果您的應用程式不應該執行在Carbon相容環境中的話,可以使用該關鍵字。
您也可以指定該關鍵字的型別為Boolean或Number。然而,只有Mac OS X 10.2或以上的版本才支援這些型別的值。如果您在您的屬性列表中加入了該關鍵字,那麼就不要同時加入LSPrefersCarbon, LSPrefersClassic,或LSRequiresCarbon關鍵字。
LSUIElement
如果該關鍵字被設為“1”,啟動服務會將該應用程式作為一個使用者介面元件來執行。使用者介面元件不會出現在Dock或強制退出視窗中。雖然它們通常作為後臺 應用程式執行,但是如果希望的話,它們也可以在前臺顯示一個使用者介面。點選屬於使用者介面元件的視窗,應用程式將會處理產生的事件。
Dock和登入視窗是兩個使用者介面元件應用程式。
應用程式包關鍵字
應用程式打包的目的是把一個應用程式打包成一個自我包含的實體,並且對使用者隱藏了它的內容。然而,使用者常常希望操作應用程式的某些檔案。例如,使用者可能希望新增或刪除某個外掛,本地化資源,等等。開發者可以在Info.plist 檔案中指定一些可以由使用者維護的專案。那麼Finder會把這些專案顯示在束的資訊面板中,並允許使用者瀏覽,刪除或新增這些專案。
CFBundleInstallerInfo
應用程式打包資訊的根關鍵字是CFBundleInstallerInfo。該關鍵字定義了一個字典,它包含了表A-7中所列出的關鍵字。“是否必須”列指出了哪些是您必須支援的功能。
表A-7應用程式打包關鍵字
關鍵字 型別 是否必須 摘要 APInstallerURL String Yes 一個指向您希望安裝的檔案的URL路徑。 APFiles Array Yes 一組字典,描述了那些可以被安裝的檔案或目錄。
APInstallerURL
APInstallerURL關鍵字指定了一個指向您希望安裝的檔案的路徑。您必須以file://localhost/path/ 形式來說明這個路徑。所有被安裝的檔案必須位於這個資料夾中。
APFiles
APFiles關鍵字指定了一個字典,描述了您希望安裝的檔案。每個字典條目可以包含某個檔案或目錄的描述。您可以讓APFiles 關鍵字包含在其自身中,用於指定在目錄內部的檔案。表A-8列出了用來指定有關單個檔案或目錄的資訊。
表A-8 APFiles字典關鍵字
關鍵字 | 型別 | 描述 |
APFileDescriptionKey | String | 用來顯示在Finder的資訊視窗中的簡短描述。 |
APDisplayedAsContainer | String | 如果值為“Yes”,該專案作為一個目錄圖示顯示在資訊面板中;否則,它被顯示為一個文件圖示。 |
APFileDestinationPath | String | 一個安裝元件的相對路徑。 |
APFileName | String | 檔案或目錄的名稱。 |
APFileSourcePath | String | 指向應用程式包中元件的路徑,相對與APInstallerURL路徑。 |
APInstallAction | String | 操縱元件的動作:“Copy”或者“Open |