AndroidManifest.xml學(xué)習(xí)

  1. <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.changxm11.myapplication">
    <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity
    android:name=".MainActivity"
    android:label="@string/app_name"
    android:theme="@style/AppTheme.NoActionBar">
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    </application>
    </manifest>

2.AndroidManifest.xml結(jié)構(gòu)

<?xmlversion="1.0"encoding="utf-8"?>
<manifest>
<application>
   <activity>
       <intent-filter>
           <action/>
           <category/>
       </intent-filter>
  </activity>
   <activity-alias>
       <intent-filter></intent-filter>
       <meta-data/>
  </activity-alias>
   <service>
       <intent-filter></intent-filter>
       <meta-data/>
   </service>
   <receiver>
       <intent-filter></intent-filter>
       <meta-data/>
   </receiver>
   <provider>
       <grant-uri-permission/>
       <meta-data/>
   </provider>
   <uses-library/>
</application>
<uses-permission/>
<permission/>
<permission-tree/>
<permission-group/>
<instrumentation/>
<uses-sdk/>
<uses-configuration/> 
<uses-feature/> 
<supports-screens/>
</manifest>

3.下面由外向內(nèi)開始闡述~~
(1)第一層(<manifest>):(屬性)

<manifest  
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.woody.test"          
android:sharedUserId="string"          
android:sharedUserLabel="string resource"          
android:versionCode="integer"          
android:versionName="string"          
android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
</manifest>

A、xmlns:android
定義android命名空間,一般為http://schemas.android.com/apk/res/android,這樣使得Android中各種標(biāo)準(zhǔn)屬性能在文件中使用,提供了大部分元素中的數(shù)據(jù)。
B、package
指定本應(yīng)用內(nèi)java主程序包的包名,它也是一個應(yīng)用進(jìn)程的默認(rèn)名稱
C、sharedUserId
表明數(shù)據(jù)權(quán)限,因為默認(rèn)情況下,Android給每個APK分配一個唯一的UserID,所以是默認(rèn)禁止不同APK訪問共享數(shù)據(jù)的。若要共享數(shù)據(jù),第一可以采用Share Preference方法,第二種就可以采用sharedUserId了,將不同APK的sharedUserId都設(shè)為一樣,則這些APK之間就可以互相共享數(shù)據(jù)了。詳見:http://wallage.blog.163.com/blog/static/17389624201011010539408/
D、sharedUserLabel
一個共享的用戶名,它只有在設(shè)置了sharedUserId屬性的前提下才會有意義
E、versionCode

是給設(shè)備程序識別版本(升級)用的必須是一個interger值代表app更新過多少次,比如第一版一般為1,之后若要更新版本就設(shè)置為2,3等等。。。

F、versionName

這個名稱是給用戶看的,你可以將你的APP版本號設(shè)置為1.1版,后續(xù)更新版本設(shè)置為1.2、2.0版本等等。。。

G、installLocation

安裝參數(shù),是Android2.2中的一個新特性,installLocation有三個值可以選擇:internalOnly、auto、preferExternal

選擇preferExternal,系統(tǒng)會優(yōu)先考慮將APK安裝到SD卡上(當(dāng)然最終用戶可以選擇為內(nèi)部ROM存儲上,如果SD存儲已滿,也會安裝到內(nèi)部存儲上)

選擇auto,系統(tǒng)將會根據(jù)存儲空間自己去適應(yīng)

選擇internalOnly是指必須安裝到內(nèi)部才能運行

(注:需要進(jìn)行后臺類監(jiān)控的APP最好安裝在內(nèi)部,而一些較大的游戲APP最好安裝在SD卡上?,F(xiàn)默認(rèn)為安裝在內(nèi)部,如果把APP安裝在SD卡上,首先得設(shè)置你的level為8,并且要配置android:installLocation這個參數(shù)的屬性為preferExternal)

  1. 第二層(<application>):屬性
    一個AndroidManifest.xml中必須含有一個Application標(biāo)簽,這個標(biāo)簽聲明了每一個應(yīng)用程序的組件及其屬性(如icon,label,permission等)
  <application  android:allowClearUserData=["true" | "false"]             
android:allowTaskReparenting=["true" | "false"]             
android:backupAgent="string"             
android:debuggable=["true" | "false"]             
android:description="string resource"             
android:enabled=["true" | "false"]             
android:hasCode=["true" | "false"]             
android:icon="drawable resource"             
android:killAfterRestore=["true" | "false"]             
android:label="string 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" >
</application>

A、android:allowClearUserData('true' or 'false')

用戶是否能選擇自行清除數(shù)據(jù),默認(rèn)為true,程序管理器包含一個選擇允許用戶清除數(shù)據(jù)。當(dāng)為true時,用戶可自己清理用戶數(shù)據(jù),反之亦然

B、android:allowTaskReparenting('true' or 'false')

是否允許activity更換從屬的任務(wù),比如從短信息任務(wù)切換到瀏覽器任務(wù)

C、android:backupAgent

這也是Android2.2中的一個新特性,設(shè)置該APP的備份,屬性值應(yīng)該是一個完整的類名,如com.project.TestCase,此屬性并沒有默認(rèn)值,并且類名必須得指定(就是個備份工具,將數(shù)據(jù)備份到云端的操作)

D、android:debuggable

這個從字面上就可以看出是什么作用的,當(dāng)設(shè)置為true時,表明該APP在手機上可以被調(diào)試。默認(rèn)為false,在false的情況下調(diào)試該APP,就會報以下錯誤:

Device XXX requires that applications explicitely declare themselves as debuggable in their manifest.

Application XXX does not have the attribute 'debuggable' set to TRUE in its manifest and cannot be debugged.

E、android:description/android:label

此兩個屬性都是為許可提供的,均為字符串資源,當(dāng)用戶去看許可列表(android:label)或者某個許可的詳細(xì)信息(android:description)時,這些字符串資源就可以顯示給用戶。label應(yīng)當(dāng)盡量簡短,之需要告知用戶該許可是在保護(hù)什么功能就行。而description可以用于具體描述獲取該許可的程序可以做哪些事情,實際上讓用戶可以知道如果他們同意程序獲取該權(quán)限的話,該程序可以做什么。我們通常用兩句話來描述許可,第一句描述該許可,第二句警告用戶如果批準(zhǔn)該權(quán)限會可能有什么不好的事情發(fā)生

F、android:enabled

Android系統(tǒng)是否能夠?qū)嵗搼?yīng)用程序的組件,如果為true,每個組件的enabled屬性決定那個組件是否可以被 enabled。如果為false,它覆蓋組件指定的值;所有組件都是disabled。

G、android:hasCode('true' or 'false')

表示此APP是否包含任何的代碼,默認(rèn)為true,若為false,則系統(tǒng)在運行組件時,不會去嘗試加載任何的APP代碼

一個應(yīng)用程序自身不會含有任何的代碼,除非內(nèi)置組件類,比如Activity類,此類使用了AliasActivity類,當(dāng)然這是個罕見的現(xiàn)象

(在Android2.3可以用標(biāo)準(zhǔn)C來開發(fā)應(yīng)用程序,可在androidManifest.xml中將此屬性設(shè)置為false,因為這個APP本身已經(jīng)不含有任何的JAVA代碼了)

H、android:icon

這個很簡單,就是聲明整個APP的圖標(biāo),圖片一般都放在drawable文件夾下

I、android:killAfterRestore

J、android:manageSpaceActivity

K、android:name

為應(yīng)用程序所實現(xiàn)的Application子類的全名。當(dāng)應(yīng)用程序進(jìn)程開始時,該類在所有應(yīng)用程序組件之前被實例化。

若該類(比方androidMain類)是在聲明的package下,則可以直接聲明android:name="androidMain",但此類是在package下面的子包的話,就必須聲明為全路徑或android:name="package名稱.子包名成.androidMain"

L、android:permission

設(shè)置許可名,這個屬性若在<application>上定義的話,是一個給應(yīng)用程序的所有組件設(shè)置許可的便捷方式,當(dāng)然它是被各組件設(shè)置的許可名所覆蓋的

M、android:presistent

該應(yīng)用程序是否應(yīng)該在任何時候都保持運行狀態(tài),默認(rèn)為false。因為應(yīng)用程序通常不應(yīng)該設(shè)置本標(biāo)識,持續(xù)模式僅僅應(yīng)該設(shè)置給某些系統(tǒng)應(yīng)用程序才是有意義的。

N、android:process

應(yīng)用程序運行的進(jìn)程名,它的默認(rèn)值為<manifest>元素里設(shè)置的包名,當(dāng)然每個組件都可以通過設(shè)置該屬性來覆蓋默認(rèn)值。如果你想兩個應(yīng)用程序共用一個進(jìn)程的話,你可以設(shè)置他們的android:process相同,但前提條件是他們共享一個用戶ID及被賦予了相同證書的時候

O、android:restoreAnyVersion

同樣也是android2.2的一個新特性,用來表明應(yīng)用是否準(zhǔn)備嘗試恢復(fù)所有的備份,甚至該備份是比當(dāng)前設(shè)備上更要新的版本,默認(rèn)是false

P、android:taskAffinity

擁有相同的affinity的Activity理論上屬于相同的Task,應(yīng)用程序默認(rèn)的affinity的名字是<manifest>元素中設(shè)定的package名

Q、android:theme

是一個資源的風(fēng)格,它定義了一個默認(rèn)的主題風(fēng)格給所有的activity,當(dāng)然也可以在自己的theme里面去設(shè)置它,有點類似style。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,039評論 25 709
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,555評論 19 139
  • <manifest> 首先,我們的根標(biāo)簽就是 manifest,有開始標(biāo)簽就有結(jié)束標(biāo)簽,所以每個標(biāo)簽都是成對出現(xiàn)的...
    IT_xiao小巫閱讀 967評論 0 2
  • 我還在等誰 我等過了多少個舂夏秋冬 我等過了多少個輪回 我還在等誰 我癡癡地盼 癡癡地等 我在等著誰的歸 我還在等...
    Aayue閱讀 318評論 12 8
  • 愛自己是終身浪漫的開始
    teresaysj閱讀 155評論 0 0

友情鏈接更多精彩內(nèi)容