1. 程式人生 > 其它 >AndroidManifest檔案詳解

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> 三個屬性構成。在四大元件中均可以存在此元素