的
行動< />< 類別><數據/>意圖過濾器><元數據/>活動>。。。過濾器><元數據/>活動別名>的<intent-filter>。。。過濾器>服務>。。。過濾器><元數據/>接收器>的<贈款URI許可權/>< 元數據>供應商><用途庫/>申請>清單>下面列出的所有元素可以出現在manifest文件中按字母順序排列。這是唯一合法的元素,你不能添加自己的元素或屬性。
約定
一些公約和規則普遍適用於清單中的所有元素和屬性:
分子
只有
和 的 元素是必需的,他們每人必須在場,並只能出現一次。大多數人可以出現多次或根本沒有-但至少他們中的一些必須完成任何有意義的清單。如果一個元素包含任何東西,它包含其他元素。通過屬性值設置,而不是作為一個元素內的字元數據。一般不會下令在同一級別的元素。例如,
的,和 的 元素可以以任何順序混合。(一個 元素是此規則的例外:必須遵循 ,它是一個別名。)屬性
在正式意義上說,所有的屬性都是可選的。不過,也有一些必須指定為元素,以實現其目的。使用的文件,作為指導。對於真正的可選屬性,它提到一個默認值或規範的情況下發生的事情。除了 根屬性
元素,所有的屬性名與Android的開始:前綴-例如,機器人:alwaysRetainTaskState。因為前綴是普遍的,一般的文件時忽略它指屬性的名字。名稱
許多元素對應到
Java對象,包括應用程序本身的元素(的
元素),其主要成分-活動(),服務(的),廣播接收機(),內容提供商(的)。如果你定義一個子類,子類,你幾乎總是會活動,服務, BroadcastReceiver,和ContentProvider的組件類()被宣布通過名稱屬性。該名稱必須包括完整的包指定。例如,一個服務子類可以聲明如下:<清單。。> <應用程序。。> <
服務機器人:名稱= “com.example.project.SecretService”。。。>。。。服務>。。。申請> 清單>然而,作為一個縮寫,如果
字元串的第一個字元是一個句號,該字元串附加到應用程序的包名(由指定
元素的 包 屬性)。上面是相同的分配如下:<清單的包= “com.example.project”。。> <應用程序。。> <服務機器人:名稱= “。SecretService”。。。>。。。服務>。。。申請> 清單>Android的組件啟動時,創建一個命名的子類的實例。如果沒有指定一個子類,它創建一個基類的實例。
多個值
如果可以指定多個值,元素幾乎總是重複的,而不是在一個單一的元素列出多個值。例如,一個意圖過濾器可以列出幾個動作:<意圖過濾器。。。。。意圖過濾器> 資源值一些屬性,可以向用戶顯示的值 - 例如,一個標籤和一個活動的圖標。這些屬性的值應本地化,因此從資源或主題。資源值表示在下面的格式,[包:]類型:名稱
如果資源是在應用程序相同的包,其中包名稱可以省略,類型是一個類型的資源-如“串”或“繪製” -名稱是名稱標識的特定資源。例如:
< 活動:圖標= “@繪製/ smallPic”。。。>以類似的方式表達主題值,但與最初的“ ? “而不是“ @ “:
[包:]類型:名稱
字元串值如果屬性值是一個字元串,雙反斜杠(' \ \ ')必須使用
轉義字元-例如,“ \ \ N “一個換行符或” \ \ uxxxx“的Unicode字元。
功能
以下各節描述了一些Android的功能是如何體現在manifest文件中。
意圖過濾器
應用程序(它的活動,服務和廣 播接收機)的核心部件,被激活的意圖。意圖是信息(捆綁意向書,描述了一個理想的行動對象) -包括要採取行動時,組件類別的數據,應執行的行動,和其他有關說明。機器人找到一個合適的組件回應的意圖,啟動一個新的組件實例,如果需要的話,它傳遞的
Intent對象。
組件宣傳他們的能力-他們能夠應對各種意圖的意圖過濾器 -通過。由於Android系統必須學習一個組件可以處理其中的意圖之前推出的組件,意圖過濾器指定在清單 元素。一個組件可以有任何數量的過濾器,每一個不同的能力。
意圖明確命名一個目標組件將激活該組件;過濾器並沒有起到作用。但意圖不指定目標的名字,可以激活一個組件,只有當它可以通過組件的過濾器之一。
意向對象是如何對意圖過濾器測試的信息,看到一個單獨的文件,意圖和意圖過濾器。
圖標和標籤
一些元素可以向用戶顯示一個小圖標和文本標籤的圖標和標籤屬性。有些也有 描述較長的說明性文本,也可以在屏幕上顯示的屬性。例如,在
元素具有所有這三個屬性,這樣當用戶詢問是否要授予應用程序的許可權要求,一個圖標代表的許可權,許可權的名稱,描述它需要什麼都可以呈現給用戶。在任何情況下,包含元素的圖標,並在標籤集變成默認的 圖標和標籤設置為容器的所有子元素。因此,在設置的
元素的圖標和標籤 是默認的圖標,並為每個應用程序的組件標籤。同樣,圖標和標籤組件集-為例如, 的 元素-每個組件的默認設置 的 元素。如果 的 元素設置一個標籤,而是一種活動,其意圖過濾器沒有做,被視為應用程序標籤的活動和意圖過濾器的標籤。被用來代表一個組件時,該組件實現廣告過濾器的功能,向用戶意圖過濾器設置的圖標和標籤。例如,一個“過濾器android.intent.action.MAIN “和” android.intent.category.LAUNCHER “設置廣告作為一個,啟動一個應用程序的活動-即是,作為一個在應用程序啟動器應顯示。在過濾器中設置的圖標和標籤,因此在發射器上顯示的。
許可權
一個許可權是一種限制,限制訪問代碼的一部分,或在設備上的數據。施加的限制,以保護關鍵數據和代碼可能被濫用,扭曲或損害了用戶體驗。
每個許可權確定一個唯一的標籤。標籤往往表示,這是限制的行動。例如,這裡是由Android定義了一些許可權:
android.permission.CALL_EMERGENCY_NUMBERS
android.permission.READ_OWNER_DATA
android.permission.SET_WALLPAPER
android.permission.DEVICE_POWER
一個功能可以保護最多一個許可權。
如果應用程序需要訪問許可權保護功能,它必須聲明,它需要 在清單與許可權 的元素。然後,在設備上安裝應用程序時,安裝程序決定是否批准或者不批准通過檢查當局簽署的應用程序的證書,並在某些情況下,要求用戶請求的許可權。如果被授予的許可權,應用程序能夠使用的保護功能。如果沒有,只會失敗,沒有任何通知用戶試圖訪問這些功能。
應用程序還可以保護自己的組件(活動,服務,廣播接收機,內容提供商)與許可權。它可以採用任何定義的Android(在列出的許可權 android.Manifest.permission)或其他應用程序申報。或者也可以定義自己的。一個新的許可權宣布與
元素。例如,一個活動可以保護如下:<清單。。>:許可機器人:名稱= “com.example.project.DEBIT_ACCT。。/> <用途許可機器人:名稱= “com.example.project.DEBIT_ACCT” />。。。<應用程序。。。。>。。。活動> 申請> 清單>請注意,在這個例子中,DEBIT_ACCT許可不僅宣布
元素,它的使用也要求與 元素。為了應用程序的啟動保護活動的其他組成部分,必須要求其使用,即使是由應用程序本身施加保護。同樣的例子,如果在宣布在別處(例如作為android.permission.CALL_EMERGENCY_NUMBERS許可權,許可權屬性設置,它不會有必要宣布它再次
元素,但它仍然會一直有必要要求其與使用 。 元素聲明為一組,將在代碼中定義的許可權的命名空間。和 定義為一組的許可權(包括那些與艙單申報的標籤 元素和那些宣布在別處)。它的影響只有許可權如何分組時,呈現給用戶。 元素沒有指定屬於該組的許可權;它只是給該組的名稱。許可權被放置在該組分配的 元件的 permissionGroup,屬性組的名稱。 庫
每一個應用程序連接到默認的Android庫,其中包括建築應用(如活動,服務,意圖,查看“按鈕,應用,ContentProvider的,等通用類)的基本包。
然而,一些
軟體包駐留在自己的圖書館。如果您的應用程序使用這些包有任何的代碼,它必須明確要求對他們聯繫。艙單必須包含單獨
元素,每個命名的圖書館。(庫的名稱,可以發現在文件包)。MANIFEST 系統文件
C:\WINDOWS\WinSxS\Manifests\下有許多XML格式的manifest文件,這些是服務端的程序清單。
WinSxs是
windows XP以上版本提供的非託管并行緩存,裡面安裝了各種版本的經過強文件名簽名的系統庫,這些文件正是標註了系統中的強文件名簽名,如果與manifest 清單裡面所列出的依賴項對上的話,就會被載入。
C:\WINDOWS\WinSxS\Manifests\是一個重要的系統文件夾,不能刪除!