AndroidManifest.xml文件與build.gradle在Android項(xiàng)目中都是兩大靈魂人物,在項(xiàng)目中的地位舉足輕重。熟練掌握AndroidManifest文件的配置,就能在整個(gè)項(xiàng)目的開發(fā)中有更強(qiáng)大的把控力。
-
manifest標(biāo)簽:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.dev">
package 聲明包名;
xmlns 命名空間的聲明,使得各種Android系統(tǒng)級(jí)的屬性能讓我們使用。
installLocation 程序的安裝位置,
有三個(gè)值可以選擇:internalOnly、auto、preferExternal
分別為只能裝內(nèi)置內(nèi)存中、可相互轉(zhuǎn)移,優(yōu)先裝入SD卡中。

uses-configuration標(biāo)簽
這個(gè)屬性用于指定該應(yīng)用程序所需要的硬件和軟件功能。
<uses-configuration android:reqFiveWayNav=["true" | "false"]
android:reqHardKeyboard=["true" | "false"]
android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
supports-screens標(biāo)簽
聲明應(yīng)用支持的分辨率類型
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:resizeable="true"
android:smallScreens="true"
android:xlargeScreens="true" />
resizeable 是否可以調(diào)整尺寸,增加屏幕適配的兼容性
anyDensity 是否包含了能夠適用于任何屏幕密度的資源。
uses-permission標(biāo)簽
應(yīng)用所需權(quán)限的聲明,常用權(quán)限聲明
<!-- 用于進(jìn)行網(wǎng)絡(luò)定位 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- 用于訪問GPS定位 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- 獲取運(yùn)營商信息,用于支持提供運(yùn)營商信息相關(guān)的接口 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!-- 用于訪問wifi網(wǎng)絡(luò)信息,wifi信息會(huì)用于進(jìn)行網(wǎng)絡(luò)定位 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!-- 這個(gè)權(quán)限用于獲取wifi的獲取權(quán)限,wifi信息會(huì)用來進(jìn)行網(wǎng)絡(luò)定位 -->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<!-- 用于訪問網(wǎng)絡(luò),網(wǎng)絡(luò)定位需要上網(wǎng) -->
<uses-permission android:name="android.permission.INTERNET" />
<!-- 用于讀取手機(jī)當(dāng)前的狀態(tài) -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
<!-- 寫入擴(kuò)展存儲(chǔ),向擴(kuò)展卡寫入數(shù)據(jù),用于寫入緩存定位數(shù)據(jù) -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!-- 撥打電話 -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<!-- 調(diào)用相機(jī) -->
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />
<!-- 調(diào)用閃光燈 -->
<uses-permission android:name="android.permission.FLASHLIGHT" />
<!-- 震動(dòng)器 -->
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!-- 讀取通訊錄 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
application標(biāo)簽
設(shè)置應(yīng)用整體屬性
name 設(shè)置Application
label 設(shè)置應(yīng)用名
icon 啟動(dòng)圖標(biāo)
theme 應(yīng)用統(tǒng)一theme
largeHeap 請求開辟更大的應(yīng)用內(nèi)存
hardwareAccelerated 全局開啟硬件加速。不推薦在application中開啟,非要開可以在單獨(dú)使用的activity標(biāo)簽中開,避免過大內(nèi)存開銷。
debuggable 指定應(yīng)用程序是否能夠被調(diào)試
process 這個(gè)屬性用于定義一個(gè)進(jìn)程名稱
activity標(biāo)簽
screenOrientation 設(shè)置當(dāng)前Activity固定屏幕方向
configChanges 配置的內(nèi)容變化是否重啟生命周期
launchMode 設(shè)置當(dāng)前Activity啟動(dòng)模式
exported 設(shè)置該activity是否可以被其他應(yīng)用啟動(dòng),設(shè)置為true也可以直接啟動(dòng)就進(jìn)入該activity
windowSoftInputMode 共9個(gè)屬性,可以分別為軟鍵盤設(shè)置始終隱藏,始終顯示,大小調(diào)整等類型
taskAffinity 指定在任務(wù)棧的標(biāo)識(shí)
hardwareAccelerated 開啟硬件加速
meta-data標(biāo)簽
這個(gè)元素用name-value對的格式給其父組件提供任意可選的數(shù)據(jù)。
比如各種第三方sdk設(shè)置key使用的方式。
<!-- 友盟Key配置 -->
<meta-data
android:name="UMENG_APPKEY"
android:value="" />
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
<!-- 高德地圖 -->
<meta-data
android:name="com.amap.api.v2.apikey"
android:value="" />