一:概述java
全部的app都要在根目錄下AndroidManifest.xml文件,這個文件顯示了app告訴android系統的基本信息。在app代碼運行以前,android系統從這個文件獲取基本信息android
功能:app
二:Manifest文件的結構框架
1 <?xml version="1.0" encoding="utf-8"?> 2 3 <manifest> 4 5 <uses-permission /> 6 <permission /> 7 <permission-tree /> 8 <permission-group /> 9 <instrumentation /> 10 <uses-sdk /> 11 <uses-configuration /> 12 <uses-feature /> 13 <supports-screens /> 14 <compatible-screens /> 15 <supports-gl-texture /> 16 17 <application> 18 19 <activity> 20 <intent-filter> 21 <action /> 22 <category /> 23 <data /> 24 </intent-filter> 25 <meta-data /> 26 </activity> 27 28 <activity-alias> 29 <intent-filter> . . . </intent-filter> 30 <meta-data /> 31 </activity-alias> 32 33 <service> 34 <intent-filter> . . . </intent-filter> 35 <meta-data/> 36 </service> 37 38 <receiver> 39 <intent-filter> . . . </intent-filter> 40 <meta-data /> 41 </receiver> 42 43 <provider> 44 <grant-uri-permission /> 45 <meta-data /> 46 <path-permission /> 47 </provider> 48 49 <uses-library /> 50 51 </application> 52 53 </manifest>
三:Manifest文件慣例ide
element:函數
每個Manifest文件都必需要出現一次<manifest>和<application>元素,其餘元素根據功能須要決定出現一次、屢次或一次也不出現。spa
全部值經過屬性來設置,不會做爲元素內的字符數據。code
同一級別的元素是亂序排列的。( <activity-alias> 元素是個例外,它必須跟在它所引用的<activity> 後面。)xml
Attribute:
對象
正式意義上來講,每一個元素的屬性都是可選擇的,可是在完成某個功能的前提下,某些元素的屬性值必需要說明的,使用文檔做爲指引。對於真正可選的屬性,它會說起一個默認值或講述在規範缺乏的時候發生什麼。
除了根元素<manifest>的屬性值外,其餘全部屬性值都必須之前綴android:
開始,由於前綴是通常性概念,因此當經過名稱引用屬性時文檔一般會忽略它
Declaring class names:
一些元素至關於java對象,包括<application>以及四大組件<activity>、<service>、<receiver>、<provider>
若是你想定義一個組件類的子類時,這個子類的聲明經過name屬性,name屬性包括了完整包名
1 <manifest . . . > 2 <application . . . > 3 <service android:name="com.example.project.SecretService" . . . > 4 . . . 5 </service> 6 . . . 7 </application> 8 </manifest>
可是,做爲簡寫。若是字符串的第一個字符是".",字符串將被添加到app的包名的尾部
1 <manifest package="com.example.project" . . . > 2 <application . . . > 3 <service android:name=".SecretService" . . . > 4 . . . 5 </service> 6 . . . 7 </application> 8 </manifest>
當啓動一個組件時,android建立一個子類的對象,若是子類未指定,它會建立一個基類
Multiple values:
若是指定的值多於一個,一般要將元素重複再指定值,而不是在一個元素單元內列出多個值
<intent-filter . . . > <action android:name="android.intent.action.EDIT" /> <action android:name="android.intent.action.INSERT" /> <action android:name="android.intent.action.DELETE" /> . . . </intent-filter>
Resource values:
一些資源有顯示給用戶的值,例如,activity的一個label或者icon,這個屬性值應該被本地化,所以被設置成來自同一個資源或主題。
資源值用如下格式來表達
1 @[package:]type:name
package:當資源在app的同一個包裏時,package值可缺省
type:資源的類型,例如string、drawable
name:是一種用來指定特殊資源的名字。
1 <activity android:icon="@drawable/smallPic" . . . >
主題值用如下格式表達
1 ?[package:]type:name
String values:
屬性值爲字符串時,表示轉義字符要加"\\"。例如,'\\n'用做回車或'\\uxxxx'用做一個Unicode字符。