manifest文件的作用是聲明組件,并指定app的一些權(quán)限(permission)和instrumentation(安全控制和測試);manifest作為整個Android應(yīng)用的入口,其Manifest.xml描述了package中暴露的組件,他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。
本教程操作環(huán)境:Windows10系統(tǒng)、Dell G3電腦。
manifest文件有什么用?
Android——Manifest.xml文件的作用
每一個Android的APP都會有一個重要的文件,那就是下面截圖中的Manifest文件,這個文件有很多作用,是整個應(yīng)用的入口,接下來將詳細(xì)講解一下
整體介紹:作為整個Android應(yīng)用的入口,Manifest.xml 描述了package中暴露的組件,他們各自的實現(xiàn)類,各種能被處理的數(shù)據(jù)和啟動位置。除了四大組件的聲明,還指定了app的一些權(quán)限(permission)和instrumentation(安全控制和測試)。
1. Manifest屬性
package:指定應(yīng)用中java主程序的包名,這個也是整個應(yīng)用程序默認(rèn)的名稱
還有一些常用的可以加進(jìn)去
android:versionCode = "1" :版本號
android:versionName="first version" :版本名字
android:installLocation=["auto" | "internalOnly" | "preferExternal"] :幾個選項,分別是auto自動選擇安裝位置,internalOnly必須安裝在ROM上,preferExternal優(yōu)先安裝到SD卡上面去
2. permission屬性
uses-sdk: 這里是對最小版本sdk的要求
各種需要的permission權(quán)限都需要添加到文件中。
3. application屬性:聲明一個應(yīng)用程序的組件及其屬性(icon,label,permission等等)
基本上大多數(shù)在生成project的時候就會默認(rèn)生成,一般的開發(fā)者也不需要多管
android:allowBackup: 允許用戶通過adb backup和adb restore來進(jìn)行對應(yīng)數(shù)據(jù)的備份和恢復(fù)。
android:label:project的工程名字
android:roundIcon: 現(xiàn)在android新建項目一般有兩個圖標(biāo),一個是icon(普通圖標(biāo)),一個是roundIcon(圓形圖標(biāo))。
android:supportsRtl: 是否支持right-to-left布局,API 17新添加的功能
android:theme: android應(yīng)用的風(fēng)格,可以自定義風(fēng)格,上面的是默認(rèn)風(fēng)格
4. Activity屬性
一個最簡單的activity聲明就是上圖所示,一般activity的生命會自動添加
android:launchMode,Activity的加載模式,一共有四種,在我的另一篇文章中講到過
android:multiprocess:是否允許多進(jìn)程,默認(rèn)是false的
android:screenOrientation:顯示模式,默認(rèn)是unspecified(自動調(diào)整方向)
這里列舉了幾個常用的,當(dāng)然還有很多很多activity屬性,這里不再一一贅述
5. intent-filter屬性
這個當(dāng)時被問到這個問題,問我filter有什么屬性,常見的屬性就這兩種,結(jié)果面試官說有三種,回來看了一下,真的有三種
action,只有android:name這個屬性,常見的也就是上圖所示,表示這個activity是程序的入口
category,也只有一個android:name屬性,決定應(yīng)用程序是否顯示在程序列表中
data,就是這個東西,貌似可以在這里存一下元數(shù)據(jù),當(dāng)在程序中需要的時候可以獲取他的value值。就是下面這個結(jié)構(gòu)
當(dāng)然intent-filter本身也有一些屬性
android:icon
android:label
android:priority=“Integer” 有序廣播按聲明的優(yōu)先級來進(jìn)行,取值范圍是-1000到1000,數(shù)字越大優(yōu)先級越高
6. 其他的三大組件,除了BroadcastReceiver可以動態(tài)注冊外,都需要在manifest.xml中進(jìn)行注冊,這里不再一一贅述各自的屬性,貼一張service的圖