AndroidManifest文件詳解


AndroidManifest 官方解釋是 應用清單(Manifest意思是貨單),每個應用的根目錄中都必須包含一個,並且文件名必須為AndroidManifest。這個文件中包含了APP的配置信息,系統需要根據里面的內容運行APP的代碼,顯示界面。
Android四大組件都需要 聲明才能使用,每個組件都需要在 AndroidManifest.xml文件中進行配置。
Android四大組件如下:
  • Activity:界面組件,就是一個單獨的窗口(例如冷啟動應用進入界面的就是launchale-activity)。
  • Service:服務組件,用於在后台完成用戶指定的操作(如后台音樂播放)。
  • Cotent provider:內容組件,是一種數據共享型組件,用於向其他組件乃至其他應用共享數據(如短信和聯系人應用之間的數據共享)。
  • Broadcast receiver:消息組件,監聽/接收應用App發出的廣播消息並做出響應(如電話呼入,耳機插入)。
 
1、<manifest>元素
所有的AndroidManifest.xml 都必須包含<manifest>元素。這是文件的根節點,它必須包含<application>元素,並且指明xmlns:android 和 package。

 

xmlns:android屬性
這個屬性定義了android 命名空間。必須設置成“ http://schemas.android.com/apk/res/android”。不要手動修改。
 
package屬性
包名也代表着唯一的application ID,用來發布應用。包名由英文字母(大小寫均可)、數字和下划線組成。每個獨立的名字必須以字母開頭。
 
android:VersionCode屬性
內部的版本號。用戶表明那個版本更新,這個數字不會顯示給用戶,顯示給用戶的是VersionName。這個必須是數字,且不能為16進制
 
android:VersionName屬性
對外發布版本號。
 
2、<application>元素
應用的聲明,包含用於聲明每個應用組件的子元素,並且具有會影響所有組件的屬性。
其中許多屬性(如 icon、label、permission、process、taskAffinity 和allowTaskReparenting)會為組件元素的相應屬性設置默認值。其他屬性(如debuggable、enabled、description 和 allowClearUserData)則為整個應用設置值,並且不能被組件替換。

 

android: allowBackup屬性
是否允許應用參與備份和恢復基礎架構。如果設置為false,則不會為該應用執行備份或恢復,即使采用全系統備份方法也不例外(這種備份方法通常會通過 adb 保存所有應用數據),此屬性的默認值為true。
 
3、<permission>元素

聲明限制此類應用安全權限
 
android:name屬性
權限的名稱
 
android:protectionLevel屬性
出於安全考慮,Android對一些訪問進行了限制,比如網絡訪問(需付費)以及獲取聯系人(涉及隱私)等。應用程序如果想要進行此類訪問,則需要申請相應權限。Android對這些權限進行了四類分級,不同級別的權限對應不同的認證方式。
  • normal:低風險權限,只要申請了就可以使用(在AndroidManifest.xml中添加<uses-permission>標簽),安裝時不需要用戶確認。
  • dangerous:高風險權限,安裝時需要用戶的確認才可使用;
  • signature:只有當申請權限的應用程序的 數字簽名與聲明此權限的應用程序的數字簽名相同時(如果是申請系統權限,則需要與系統簽名相同),才能將權限授給它;
  • signatureOrSystem:申請權限的應用數字簽名與該應用數字簽名相同,或者申請權限的應用為 系統應用才可以授權。
 
4、<uses-permission>元素
指定用戶必須授予的系統權限,以便應用正常運行。當(在運行 Android 5.1 和更低版本的設備上)安裝應用或(在運行 Android 6.0 和更高版本的設備上)運行應用時,用戶需要手動授予權限

 

 

5、Activity界面組件

聲明實現應用部分可視化界面的 Activity,必須使用 AndroidManifest  中的 <activity> 元素表示所有 Activity。系統不會識別和運行任何未進行聲明的 Activity。

android:name屬性
表示實現 Activity 的類的名稱,是 Activity 的子類。
 
6、Service 服務組件
使用<service>將服務(Service)子類聲明為應用的一個組件,服務用於實現長時間運行的后台操作。

 

 

7、Receiver 消息組件
使用<receiver> 將廣播接收器(BroadcastReceiver 子類)聲明為應用的組件之一。廣播接收器允許應用接收由系統或其他應用廣播的 Intent。

 

8、Provider 內容組件
應用中的所有內容提供程序都必須在清單文件的<provider>元素中定義,聲明內容提供程序組件。

 

9、 <intent-filter>元素
意圖過濾器,主要用來過濾隱式意圖。當用戶進行一項操作的時候,Android系統會根據配置的意圖過濾器來尋找可以相應該操作的組件服務,由<action>、<category> 和 <data> 三個屬性構成。在四大組件中均可以存在此元素

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM