每個android項目都包含一個AndroidMainfest.xml文件,它包含了組成應用程序的每一個Acitivity、Service、Content Provider和Broadcast Receiver的節點,並使用Intent Filter 和權限來確定這些組件之間以及這些組件和其他應用程序是如何交互的。
1.根節點manifest:
package屬性:當前應用的包名
versionCode屬性:將當前應用程序的版本定義為一個整數,每次版本迭代時,該數字都會增加
versionName屬性:定義一個顯示給用戶的公共版本號
installLocation屬性:指定是否允許(或者首選)將應用程序安裝到外部存儲器(通常為SD卡)。其值可以為:preferExternal或auto,使用前者,只要有可能就會把應用程序安裝在外部存儲器上,后者則由系統決定。若不指定installLocation屬性,則將當前應用安裝到內部存儲器,而不能將其移動到外部存儲器。
如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="cn.csc.mydemo"
android:versionCode="1"
android:versionName="1.0 Beta"
android:installLocation=”preferExternal”>
</manifest>
2.manifest的常見子節點:
1)uses-sdk:
如:<uses-sdk
android:minSdkVersion="10"
android:targetSdkVersion="14" />
minSdkVersion屬性:指定應用要求的最低SDK版本,未指定,則默認為1
maxSdkVersion屬性:最高SDK版本,一般最好不要指定,除非知道應用在更新版本的平台上肯定不能正確運行。
targetSdkVersion屬性:用於指定開發和測試中所使用的平台版本。即使應用程序沒有使用任何新的API,也應當將目標SDK設為最新的平台版本,這被認為是一種最佳實踐。
2)uses-permission:
配置應用程序所需要的權限,在安裝應用程序時,設定的所有權限將會告訴給用戶,由他們來決定是否同意安裝使用。
如:<uses-permission android:name="android.permission.INTERNET"/>需要網絡權限
3)instrumentation:
單元測試時,用到
如:<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="cn.csc.demo" />指定要測試的包名
4)application:
一個mainfest文件只能有一個application節點,它的屬性和子節點都比較常用
3.application節點:
如:<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
icon屬性:指定當前應用程序的圖標
label屬性:指定當前應用程序的標題
1)activity子節點:
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
應用程序中用到的每一個Activity都要求有一個Activity子節點,啟動一個沒有在Manifest中定義的Activity時都會拋出一個運行時異常。每個Activity節點都允許使用intent-filter子節點來定義用於啟動該Activity的Intent。
name屬性:指定Activity類的名字
2)service子節點:應用程序使用的service
3)provider子節點:應用程序使用的Content Provider
4)receiver子節點:引用程序使用的Broadcast Receiver
5)uses-library子節點:用於指定應用程序需要的共享庫