當前位置:編程學習大全網 - 源碼下載 - AndroidManifest.xml的作用是什麽?

AndroidManifest.xml的作用是什麽?

我們在開發壹個APP的時候,會遇到壹個文件:AndroidManifest.xml從Android開發開始到現在已經好幾個月了,我對這個文件還是壹知半解,只知道是用來配置的。但這份文件裏的東西具體有什麽用,怎麽用,壹直沒搞明白。利用做項目的機會仔細研究這份文件。

學習AndroidManifest.xml最好的方法就是對照官方文檔詳細了解項目中各個字段的作用,並做壹些修改來驗證。

什麽是AndroidManifest?AndroidManifest.xml是什麽文件?

Androidmanifest的官方解釋是應用程序清單(manifest就是清單的意思),每個應用程序在根目錄下必須包含壹個,文件名必須完全相同。這個文件包含了APP的配置信息,系統需要運行APP的代碼,根據內容顯示界面。

AndroidManifest.xml是每個apk(zip)文件解壓後根目錄下的壹個文件,每個apk必須包含壹個同名的AndroidManifest.xml文件。

AndroidManifest.xml的作用是什麽?

描述應用程序的包名:

安卓設備據此區分不同的app。如果每個app都是壹個人,那麽包名就相當於那個人的名字(為了防止惡意軟件假冒其他app,只有新app的包名和簽名與舊app相同,才能覆蓋安裝成功升級)。

描述app使用的安卓系統版本信息:

因為android系統在不斷升級,新的系統版本會增加新的API,而舊的android設備沒有這些API,所以會出現新版本的應用使用新的API卻在舊系統上運行的問題(在舊系統上調用新的API會崩潰),所以需要說明這個應用支持的最低Android系統版本是哪個,比如將minSdkVersion設置為19就意味著這個應用在API19。

描述app本身的版本信息,這樣對於同壹個app的兩個版本,系統可以區分哪個是新版本,哪個是舊版本。

壹個重要的角色是描述應用程序公開的組件(或接口):

Activity、Service、Provider和BroadcastReceiver都可以獨立運行,都可以作為啟動應用程序的入口點。

AndroidManifest.xml可以告訴系統是哪個活動;點擊應用圖標後進入;可以通知系統這個應用的某個類(BroadcastReceiver的子類)需要監聽網絡變化(廣播)等信息;通知系統該應用程序可以通過其他應用程序提供服務(ContentProvider和service);告訴系統這個應用的壹些類可以處理壹些特定的請求(比如打開pdf擴展名的文件);等等

其他需要以文本方式直接告知系統的事項:如申請權限、申請主題等。

說到底,安卓系統的app需要直接通過文字告訴系統太多的信息。

壹個真正的AndroidManifest.xml文件。

這是Google官方示例中茶壺項目中的壹個文件,我們會根據這個文件來分析字段的含義。該字段的含義指的是正式文檔。

元素

首先,所有xml都必須包含元素。這是文件的根節點。它必須包含元素並指示xmlns:android和包屬性。

元素中的屬性

安卓系統

這個屬性定義了Android名稱空間。必須設置為“/apk/res/android”。不要手動修改它。

包裹

這是壹個完整的Java語言風格的包名。包名由英文字母(大寫和小寫)、數字和下劃線組成。每個獨立名稱必須以字母開頭。

構建APK時,構建系統使用該屬性做兩件事:

1.生成R.java類時,使用此名稱作為命名空間(用於訪問應用程序的資源)。

例如,如果package設置為com.sample.teapot,則生成的R類為com.sample.teapot.R2,用於生成清單文件中定義的類的完整類名。例如,package設置為com.sample.teapot,activity元素聲明為,完整的類名為com.sample.teapot.MainActivity。包名還表示唯壹的應用程序ID,用於發布應用程序。但是,需要註意的是,在APK構建過程的最後壹步,包名將被build.gradle文件中的applicationId屬性所替換。如果這兩個屬性值相同,那麽壹切正常。如果不是,請小心。

android:版本代碼

內部版本號。用於指示更新了哪個版本。該號碼不會顯示給用戶。向用戶顯示的是versionName。該數字必須是整數。不能使用16基數,這意味著不接受參數“0x1”。

android:版本名稱

向用戶顯示的版本號。

元素中的元素

元素

Google Play使用該元素的值對從不滿足應用程序需求的設備進行過濾。

這個東西的作用就是告訴別人APP所依賴的硬件或者軟件條件。說明了APP的哪些功能可以隨著設備的變化而變化。

使用時,應註意每個函數必須在單獨的元素中指定。想要多種功能,就需要多種元素。例如,要求設備同時具有藍牙和照相功能:

的屬性

android:名稱

此屬性以字符串的形式指定應用程序要使用的硬件或軟件功能。

android:必需

如果該屬性的值為true,則意味著需要該函數,否則應用程序將無法工作。如果為false,則表示應用程序將在必要時使用該函數,但應用程序可以在沒有該函數的情況下工作。

android:glEsVersion

指示應用程序所需的Opengl ES版本。高16位表示主版本號,低16位表示次版本號。比如妳要3.2版,就是0x00030002。如果定義了多個glEsVersion,應用程序將自動啟用最高設置。

元素

這個元素描述了應用程序的配置。這是壹個必不可少的元素,它包含許多子元素來描述應用程序的組件,它的屬性影響所有子組件。許多屬性,如圖標、標簽、權限、流程、taskAffinity和allowTaskReparenting,都可以設置為默認值。

的屬性

android:allowBackup

指示是否允許應用加入備份和還原結構。如果設置為false,則應用程序將不會備份和恢復。默認值為true。

android:完整備份內容

該屬性指向壹個xml文件,該文件包含進行自動備份時的完整備份規則。這些規則定義了哪些文件需要備份。該屬性是可選的。默認情況下,自動備份包含大多數應用程序文件。

android:支持sRtl

說明您的應用程序是否支持RTL(從右到左)布局。如果設置為true,並且targetSdkVersion設置為17或更高。許多RTL API將被設置為on fire,以便您的應用程序可以顯示RTL布局。如果設置為false或者targetSdkVersion設置為16或更低。哪個RTL API不起作用?

該屬性的默認值為false。

安卓:圖標

應用程序的圖標和每個組件的默認圖標。您可以自定義團體價格中的圖標。此屬性必須設置為對可繪制資源的引用,該資源必須包含圖片。系統不設置默認圖標。例如,mipmap/ic_launcher引用以下資源。

安卓:標簽

所有組件的用戶可讀標簽和默認標簽。子組件可以用自己的標簽屬性定義自己的標簽,如果沒有定義,就使用這個標簽。

標簽必須設置為對字符串資源的引用。這樣它們就可以像其他東西壹樣被定位,比如@string/app_name。當然,為了方便開發,也可以定義壹個原字符串。

安卓:主題

該屬性定義應用程序使用的主題,並且是對樣式資源的引用。每個活動也可以用自己的主題屬性設置自己的主題。

android:名稱

應用程序子類的全名。包括之前的路徑。比如com。當應用程序啟動時,首先創建該類的壹個實例。這個屬性是可選的,大多數app都不需要這個屬性。如果沒有這個屬性,Android將啟動應用程序類的壹個實例。

元素

該元素聲明了壹個實現應用程序可視化接口的活動(activity類的子類)。這是元素中必要的子元素。所有活動都必須由清單文件中的元素表示。任何沒有在那裏聲明的活動對系統來說都是不可見的,並且永遠不會被執行。

android:名稱

活動類的名稱是活動類的子類。屬性值是完全限定的類名,如com。為方便起見,如果第壹個字符是點(' . ')),需要在元素中添加包名。壹旦應用程序發布,就不應該更改名稱。

沒有默認值,必須指定名稱。

安卓:標簽

活動標簽,用戶可以閱讀。激活活動時,標簽將顯示在屏幕上。如果未設置,請使用中的label屬性。設置屬性的要求與中的相同。

android:配置更改

列出了活動將自行處理的配置更改消息。當運行時發生配置更改時,默認情況下,活動將被關閉,然後重新啟動,但是使用此屬性聲明配置將會阻止活動重新啟動。活動將保持運行,系統將調用它的onConfigurationChanged()方法。

  • 上一篇:linux內核文件存放在哪個目錄中linux內核文件
  • 下一篇:哪些端口容易被功擊
  • copyright 2024編程學習大全網