天天看點

IOS中info.plist檔案的關鍵字描述

束關鍵字

束目錄中的屬性清單較長的描述了有關該束的資訊。Finder和一些系統API在一些情況下會使用這些資訊。束支援下列關鍵字類型:
  • Core Foundation關鍵字--描述了束的綜合屬性
  • Cocoa特定的關鍵字--描述了和Cocoa有關的束的屬性
  • Finder特定的關鍵字--描述了和Finder與檔案系統有關的資訊
  • 啟動服務關鍵字--描述了和啟動服務有關的資訊

标準束關鍵字

Mac OS X 為描述束的資訊提供了一組核心關鍵字。內建開發環境會賦予這些關鍵字預設值。表A-1列出了這些關鍵字。

表A-1 标準關鍵字概要

關鍵字 類型 是否必須 摘要
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”