android的AndroidManifest.xml文件介紹

聲明:本文轉自http://dengm1010.iteye.com/blog/443866

AndroidManifest.xml是每一個應用都需要的文件, 位於應用根目錄下,它 描述了程序包的全局變量, 包括暴露的應用組件(activities, services等等)和爲每個組件的實現類, 什麼樣的數據可以操作, 以及在什麼地方運行。 

主要包括以下各個元素。 
A.包名(package):指定本應用內java主程序包的包名。當沒有指定apk的文件名時,編譯後產生程序包將以此命名。本包名應當在Android系統運行時唯一。 

B.認證(certificate):指定本應用程序所授予的信任級別,目前有的認證級別有platform(system)、shared、media以及應用自定義的認證。不同的認證可以享受不同的權限。 

C.權限組(permission-group):權限組的定義是爲了描述一組具有共同特性的權限。 

D.權限(permission):權限用來描述是否擁有做某件事的權力。Android系統中權限是分級的,前分爲普通級別(Normal),危險級別(dangerous),簽名級別(signature)和系統/簽名級別(signature or system)。系統中所有預定義的權限根據作用的不同,分別屬於不同的級別。對於普通和危險級別的權限,我們稱之爲低級權限,應用申請即授予。其他兩級權限,我們稱之爲高級權限或系統權限,應用擁有platform級別的認證才能申請。當應用試圖在沒有權限的情況下做受限操作,應用將被系統殺掉以警示。系統應用可以使用任何權限。權限的聲明者可無條件使用該權限。 

E.權限樹(permission-tree)權限樹的設置是爲了統一管理一組權限,聲明於該樹下的權限所有者歸屬該應用。系統提供了API,應用可以在運行時動態添加。 PackageManager.addPermission() 

F.使用權限(uses-permission):應用需要的權限應當在此處申請,所申請的權限應當被系統或某個應用所定義,否則視爲無效申請。同時,使用權限的申請需要遵循權限授予條件,非platform認證的應用無法申請高級權限。 

G:SDK(uses-sdk):標識本應用運行的SDK版本。高兼容性的應用可以忽略此項。 

H.application:application是Android應用內最高級別(top level)的模塊,每個應用內最多只能有一個application,如果應用沒有指定該模塊,一個默認的application將被啓用。application將在應用啓動時最先被加載,並存活在應用的整個運行時生命週期。因此一些初始化的工作適合在本模塊完成. Application元素有許多屬性,其中:“persistent”表示本應用是否爲常駐內存,“enable”表示本應用當前是否應當被加載。 
<application android:icon="@drawable/icon" android:label="@string/app_name"> 
<activity android:name=".HelloOPhone" 
android:label="@string/app_name"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
</intent-filter> 
</activity> 
</application> 

在AndroidManifest.xml文件中,運行時模塊的定義都作爲本模塊的子元素。當運行時模塊被調度時,如果應用沒有啓動,將首先啓動應用進行初始化,然後調度對應模塊。 

I.activity:activity是application模塊的運行時子元素,標識了一個UI。除了application,一個應用可以聲明並實現零至多個其它運行時模塊,activity也同樣。activity也包含了許多定義它工作狀態的屬性,其中:“name”是必須的,它指定了該activity所在的文件名,如果該文件所屬包不同於該應用的包名(即本描述文件的最開始處),那麼名字前面需要加入所在包名。activity通過增加intent-fliter來標識哪些intent可以被處理,同時intent也是調度activity的主要參數。 

J.receiver:receiver也是application的運行時子元素。receiver通過增加intent-fliter來標識它需要接受哪些intent。當收到intent後,receiver將根據不同的intent進行不同的處理。當一個Intent發出後,所有註冊了該intent的receiver都將會收到,系統會根據receiver在系統中的註冊次序順序發送。當一個receiver處理完該Intent後,系統纔會向下一個receiver發送。當一個receiver有多個未接收的intent時,將按照intent發送的次序順序接收。 
在本實例中,intent-filter如下: 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 

K.service:service也是application的運行時子元素。Service屬於後臺模塊,啓動後將長時間運行,除非停止該service或所在應用進程被殺死。 

L.provider:provider也是application的運行時子元素。它繼承於ContentProvider,是對該應用管理的用戶數據的結構化接入,是基於數據庫操作方式的封裝。如果應用允許外部應用訪問/管理它的用戶數據,provider是Android平臺提供的最佳方式。 

M.activity-alias:顧名思義,是已有activity的別名。 

N:uses-library:標識應用啓動所必須的共享庫。

發佈了22 篇原創文章 · 獲贊 15 · 訪問量 8萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章