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