manifest是一種軟件,屬于AndroidManifest.XML文件,在簡單的Android系統的應用中提出了重要的信息,它可以運行任何應用程序的代碼。
主要功能
文件
每個安卓應用程序必須有一個AndroidManifest.xml文件,在app/manifests目錄中。它在簡單的Android系統的應用中提出了重要的信息,信息系統必須具備之前,它可以運行任何應用程序的代碼。除其他事項外,清單中執行下列操作:
它給應用程序的Java包命名,包的名稱作為應用程序的唯一標識符。
它描述了應用程序的組件的活動、服務,廣播接收機,內容提供商,應用程序組成。它命名的類,實現每個組件,并出版自己的能力(例如,可以處理哪些意圖的消息)。這些聲明讓Android系統知道這些組件是什么和在什么條件下,他們可以推出。
它決定哪些進程將運行應用程序組件。
它決定了應用程序必須有權限才能訪問受保護的API部分,并與其他應用程序進行交互。
它還決定了其他人與應用程序的組件交互所需要的權限。
它宣布了Android API的應用程序需要的最低水平。
它列出了庫,應用程序必須與之配對。
結構
下圖顯示了manifest文件和每一個元素,它可以包含的一般結構。每個元素,連同其所有屬性記錄在一個單獨的文件。要查看有關的任何元素的詳細信息,單擊圖中的元素的名稱,在按字母順序排列的列表,如下圖,或任何其他元素的名稱提到的元素。
<?XML版本= “1.0”編碼= “UTF-8” ?>
的 下面列出的所有元素可以出現在manifest文件中按字母順序排列。這是唯一合法的元素,你不能添加自己的元素或屬性。 <receiver> 約定 一些公約和規則普遍適用于清單中的所有元素和屬性: 分子 只有 一般不會下令在同一級別的元素。例如, 屬性 在正式意義上說,所有的屬性都是可選的。不過,也有一些必須指定為元素,以實現其目的。使用的文件,作為指導。對于真正的可選屬性,它提到一個默認值或規范的情況下發生的事情。除了 根屬性 名稱 許多元素對應到Java對象,包括應用程序本身的元素(的 <清單。。> <應用程序。。> <服務機器人:名稱= “com.Exampleproject.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.Exampleproject.DEBIT_ACCT。。/> <用途許可機器人:名稱= “com.example.project.DEBIT_ACCT” />。。。<應用程序。。。。>。。。活動> 申請> 清單>請注意,在這個例子中,DEBIT_ACCT許可不僅宣布 同樣的例子,如果在宣布在別處(例如作為android.permission.CALL_EMERGENCY_NUMBERS權限,權限屬性設置,它不會有必要宣布它再次 庫 每一個應用程序連接到默認的Android庫,其中包括建筑應用(如活動,服務,意圖,查看“按鈕,應用,ContentProvider的,等通用類)的基本包。 然而,一些軟件包駐留在自己的圖書館。如果您的應用程序使用這些包有任何的代碼,它必須明確要求對他們聯系。艙單必須包含單獨 MANIFEST 系統文件 C:\WINDOWS\WinSxS\Manifests\下有許多XML格式的manifest文件,這些是服務端的程序清單。WinSxS是windows XP以上版本提供的非托管并行緩存,里面安裝了各種版本的經過強文件名簽名的系統庫,這些文件正是標注了系統中的強文件名簽名,如果與manifest 清單里面所列出的依賴項對上的話,就會被加載。 C:\WINDOWS\WinSxS\Manifests\是一個重要的系統文件夾,不能刪除! 參考資料 >