AndroidManifest.xml配置檔案詳解 .
點選(此處)摺疊或開啟
-
<?xml version=\"1.0\" encoding=\"utf-8\"?>
-
-
<manifest>
-
-
<!-- 基本配置 -->
-
<uses-permission />
-
<permission />
-
<permission-tree />
-
<permission-group />
-
<instrumentation />
-
<uses-sdk />
-
<uses-configuration />
-
<uses-feature />
-
<supports-screens />
-
<compatible-screens />
-
<supports-gl-texture />
-
-
<!-- 應用配置 -->
-
<application>
-
-
<!-- Activity 配置 -->
-
<activity>
-
<intent-filter>
-
<action />
-
<category />
-
<data />
-
</intent-filter>
-
<meta-data />
-
</activity>
-
-
<activity-alias>
-
<intent-filter> . . . </intent-filter>
-
<meta-data />
-
</activity-alias>
-
-
<!-- Service 配置 -->
-
<service>
-
<intent-filter> . . . </intent-filter>
-
<meta-data/>
-
</service>
-
-
<!-- Receiver 配置 -->
-
<receiver>
-
<intent-filter> . . . </intent-filter>
-
<meta-data />
-
</receiver>
-
-
<!-- Provider 配置 -->
-
<provider>
-
<grant-uri-permission />
-
<meta-data />
-
</provider>
-
-
<!-- 所需類庫配置 -->
-
<uses-library />
-
-
</application>
-
- </manifest>
從以上示例程式碼中,我們可以看出Android配置檔案採用XML作為描述語言,每個XML標籤都不同的含義,大部分的配置引數都放在標籤的屬性中,下面我們便按照以上配置檔案樣例中的先後順序來學習Android配置檔案中主要元素與標籤的用法。
AndroidManifest.xml配置檔案的根元素,必須包含一個
package="string"
android:sharedUserId="string"
android:sharedUserLabel="string resource"
android:versionCode="integer"
android:versionName="string"
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
... ...
為了保證Android應用的安全性,應用框架制定了比較嚴格的許可權系統,一個應用必須宣告瞭正確的許可權才可以使用相應的功能,例如我們需要讓應用能夠訪問網路就需要配置“android.permission.INTERNET”,而如果要使用裝置的相機功能,則需要設定“android.permission.CAMERA”等。
... ...
<!-- 網路相關功能 -->
<!-- 讀取電話狀態 -->
<!-- 通知相關功能 -->
... ...
許可權宣告標籤,定義了供給
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permissionGroup="string"
android:protectionLevel=["normal" | "dangerous" | "signature" | "signatureOrSystem"] />
用於宣告Instrumentation測試類來監控Android應用的行為並應用到相關的功能測試中,其中比較重要的屬性有:測試功能開關android:functionalTest,profiling除錯功能開關android:handleProfiling,測試用例目標物件android:targetPackage等。另外,我們需要注意的是Instrumentation物件是在應用程式的元件之前被例項化的,這點在組織測試邏輯的時候需要被考慮到。
android:handleProfiling=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:targetPackage="string" />
用於指定Android應用中所需要使用的SDK的版本,比如我們的應用必須執行於Android 2.0以上版本的系統SDK之上,那麼就需要指定應用支援最小的SDK版本數為5;當然,每個SDK版本都會有指定的整數值與之對應,比如我們最常用的Android 2.2.x的版本數是8。當然,除了可以指定最低版本之外,
android:targetSdkVersion="integer"
android:maxSdkVersion="integer" />
這兩個標籤都是用於描述應用所需要的硬體和軟體特性,以便防止應用在沒有這些特性的裝置上安裝。
android:reqHardKeyboard=["true" | "false"]
android:reqKeyboardType=["undefined" | "nokeys" | "qwerty" | "twelvekey"]
android:reqNavigation=["undefined" | "nonav" | "dpad" | "trackball" | "wheel"]
android:reqTouchScreen=["undefined" | "notouch" | "stylus" | "finger"] />
android:required=["true" | "false"]
android:glEsVersion="integer" />
用於指定Android應用可使用的使用者庫,除了系統自帶的android.app、android.content、android.view和android.widget這些預設類庫之外,有些應用可能還需要一些其他的Java類庫作為支援,這種情況下我們就可以使用
android:required=["true" | "false"] />
小貼士:
當執行Java程式時,首先執行JVM(Java虛擬機器),然後再把Java類載入到JVM裡頭執行,負責載入Java類的這部分就叫做ClassLoader。當然,ClassLoader是由多個部分構成的,每個部分都負責相應的載入工作。當執行一個程式的時候,JVM啟動,執行BootstrapClassLoader,該ClassLoader載入java核心API(ExtClassLoader和AppClassLoader也在此時被載入),然後呼叫ExtClassLoader載入擴充套件API,最後AppClassLoader載入CLASSPATH目錄下定義的Class,這就是一個Java程式最基本的載入流程。
對於一些應用或者遊戲來說,只能支援某些螢幕大小的裝置或者在某些裝置中的效果比較好,我們就會使用
android:smallScreens=["true" | "false"]
android:normalScreens=["true" | "false"]
android:largeScreens=["true" | "false"]
android:xlargeScreens=["true" | "false"]
android:anyDensity=["true" | "false"]
android:requiresSmallestWidthDp="integer"
android:compatibleWidthLimitDp="integer"
android:largestWidthLimitDp="integer"/>
應用配置的根元素,位於
android:backupAgent="string"
android:debuggable=["true" | "false"]
android:description="string resource"
android:enabled=["true" | "false"]
android:hasCode=["true" | "false"]
android:hardwareAccelerated=["true" | "false"]
android:icon="drawable resource"
android:killAfterRestore=["true" | "false"]
android:label="string resource"
android:logo="drawable resource"
android:manageSpaceActivity="string"
android:name="string"
android:permission="string"
android:persistent=["true" | "false"]
android:process="string"
android:restoreAnyVersion=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme" >
... ...
Activity活動元件(即介面控制器元件)的宣告標籤,Android應用中的每一個Activity都必須在AndroidManifest.xml配置檔案中宣告,否則系統將不識別也不執行該Activity。
android:alwaysRetainTaskState=["true" | "false"]
android:clearTaskOnLaunch=["true" | "false"]
android:configChanges=["mcc", "mnc", "locale",
"touchscreen", "keyboard", "keyboardHidden",
"navigation", "orientation", "screenLayout",
"fontScale", "uiMode"]
android:enabled=["true" | "false"]
android:excludeFromRecents=["true" | "false"]
android:exported=["true" | "false"]
android:finishOnTaskLaunch=["true" | "false"]
android:hardwareAccelerated=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:launchMode=["multiple" | "singleTop" | "singleTask" | "singleInstance"]
android:multiprocess=["true" | "false"]
android:name="string"
android:noHistory=["true" | "false"]
android:permission="string"
android:process="string"
android:screenOrientation=["unspecified" | "user" | "behind" |
"landscape" | "portrait" |
"sensor" | "nosensor"]
android:stateNotNeeded=["true" | "false"]
android:taskAffinity="string"
android:theme="resource or theme"
android:windowSoftInputMode=["stateUnspecified",
"stateUnchanged", "stateHidden",
"stateAlwaysHidden", "stateVisible",
"stateAlwaysVisible", "adjustUnspecified",
"adjustResize", "adjustPan"] >
... ...
Activity元件別名的宣告標籤,簡單來說就是Activity的快捷方式,屬性android:targetActivity表示的就是其相關的Activity名,當然必須是前面已經宣告過的Activity。除此之外,其他比較常見的屬性有:Activity別名名稱android:name,別名開關android:enabled,許可權控制android:permission等。另外,我們還需要注意的是,Activity別名也是一個獨立的Activity,可以擁有自己的
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:targetActivity="string" >
... ...
android:label="string resource"
android:priority="integer" >
android:mimeType="string"
android:path="string"
android:pathPattern="string"
android:pathPrefix="string"
android:port="string"
android:scheme="string" />
用於儲存預定義資料,和
ActivityInfo info = this.getPackageManager()
.getActivityInfo(getComponentName(), PackageManager.GET_META_DATA);
String testData = info.metaData.getString("testData");
System.out.println("testData:" + testData);
Service服務元件的宣告標籤,用於定義與描述一個具體的Android服務,主要屬性有:Service服務類名android:name,服務圖示android:icon,服務描述android:label以及服務開關android:enabled等。關於Service服務元件的概念和用法請參考2.1.4.2節的內容,以下是
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string" >
... ...
Boardcast Receiver廣播接收器元件的宣告標籤,用於定義與描述一個具體的Android廣播接收器,其主要屬性和
android:exported=["true" | "false"]
android:icon="drawable resource"
android:label="string resource"
android:name="string"
android:permission="string"
android:process="string" >
... ...
除Activity、Service和Boardcast Receiver之外的另一個“四大元件”,也就是Content Provider內容提供者的宣告標籤。關於內容提供者元件的概念和用法請參考2.1.4.4節的內容,不再贅述。
android:enabled=["true" | "false"]
android:exported=["true" | "false"]
android:grantUriPermissions=["true" | "false"]
android:icon="drawable resource"
android:initOrder="integer"
android:label="string resource"
android:multiprocess=["true" | "false"]
android:name="string"
android:permission="string"
android:process="string"
android:readPermission="string"
android:syncable=["true" | "false"]
android:writePermission="string" >
... ...
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/642366/viewspace-1672332/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- AndroidManifest.xml檔案詳解AndroidXML
- AndroidManifest.xml檔案內容詳解AndroidXML
- redis 配置檔案詳解Redis
- haproxy配置檔案詳解
- redis配置檔案詳解Redis
- SSH配置檔案詳解
- zookeeper配置檔案詳解
- nginx配置檔案詳解Nginx
- WCF配置檔案詳解
- Nginx的配置檔案詳解Nginx
- vim的配置檔案詳解
- Hibernate配置檔案詳解
- BIND配置檔案詳解(三)
- Spring 配置檔案詳解Spring
- vsftpd配置檔案詳解FTP
- Nagios配置檔案詳解iOS
- spring配置檔案詳解Spring
- Android學習筆記之AndroidManifest.xml檔案解析(詳解)Android筆記XML
- Nginx 配置檔案引數詳解Nginx
- 屬性配置檔案詳解(2)
- Docker Compose 配置檔案詳解Docker
- MyBatis--主配置檔案詳解MyBatis
- influx詳解(二):配置檔案UX
- Struts配置檔案詳細講解
- redis配置檔案引數詳解Redis
- AndroidManifest.xml檔案解析AndroidXML
- Mysql配置檔案my.ini配置項詳解MySql
- MyBatis 核心配置檔案詳細內容詳解MyBatis
- linux的啟動配置檔案inittab檔案詳解Linux
- PHP配置檔案詳解php.iniPHP
- nginx.conf 配置檔案詳解Nginx
- Tomcat 的 Server 檔案配置詳解!!!TomcatServer
- linux網路卡配置檔案詳解Linux
- Python之ini配置檔案詳解Python
- git config配置檔案詳解Git
- Maven pom.xml檔案配置詳解MavenXML
- MySQL 配置檔案 (my.ini) 詳解MySql
- sysctl.conf檔案配置詳解