久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      簡述AndroidManifest.xml的作用是什么?

      作用:1、描述app的包名;2、描述app使用的android系統(tǒng)版本信息;3、描述app本身的版本信息,這樣對于同一個app的兩個版本,系統(tǒng)就能區(qū)分那個是新版本,哪個是舊版本;4、描述應(yīng)用對外暴露的組件等等。

      簡述AndroidManifest.xml的作用是什么?

      我們在進行APP開發(fā)的時候都會遇到一個文件:AndroidManifest.xml。從剛開始進行Android開發(fā),到現(xiàn)在已經(jīng)過去了幾個月,還是對這個文件一知半解,只知道它是配置用的。但是這文件里的東西具體有什么用,該怎么用一直都沒有理解。借著做項目的機會,仔細研究一下這個文件。

      研究AndroidManifest.xml最好的方式自然就是對照著官方文檔詳細理解項目中每個字段的作用,并且做出一些修改來驗證。

      AndroidManifest是什么?AndroidManifest.xml是一個什么文件?

      AndroidManifest官方解釋是應(yīng)用清單(manifest意思是貨單),每個應(yīng)用的根目錄中都必須包含一個,并且文件名必須一模一樣。這個文件中包含了APP的配置信息,系統(tǒng)需要根據(jù)里面的內(nèi)容運行APP的代碼,顯示界面。

      AndroidManifest.xml是每個apk(zip)文件解壓后根目錄下的一個文件,每個apk都必須包含一個AndroidManifest.xml文件,且名字必須與此完全一致.

      AndroidManifest.xml的作用是什么?

      • 描述app的包名:

        Android設(shè)備據(jù)此區(qū)分不同的app,如果每個app是一個人的話,包名就相當(dāng)于是這個人的名字(為了防止惡意軟件仿冒其他app,只有新的app的包名和簽名均與舊的app相同時才能升級覆蓋安裝成功).

      • 描述app使用的android系統(tǒng)版本信息:

        因為android系統(tǒng)在不斷的升級,新的系統(tǒng)版本會增加新的API,但是舊的Android設(shè)備上并沒有這些API,那么就會出現(xiàn)新版本的應(yīng)用使用新的API但是在舊的系統(tǒng)上運行的問題(在舊的系統(tǒng)上調(diào)用新的API應(yīng)用會崩潰),因此需要說明本應(yīng)用支持的最低android系統(tǒng)版本是哪個,比如說將minSdkVersion設(shè)置為19就是說這個應(yīng)用在API19以及以上的設(shè)備上運行沒有問題.

      • 描述app本身的版本信息,這樣對于同一個app的兩個版本,系統(tǒng)就能區(qū)分那個是新版本,哪個是舊版本.

      • 很重要的一個作用是描述應(yīng)用對外暴露的組件(或者叫接口):

        Activity,Service,Provider,BroadcastReceiver這四大組件的每一個都可以獨立運行,都可以作為app啟動的入口點。

        AndroidManifest.xml可以告知系統(tǒng)點擊應(yīng)用圖標(biāo)后進入哪個Activity;可以告知系統(tǒng)本應(yīng)用某個類(BroadcastReceiver的子類)需要監(jiān)聽網(wǎng)絡(luò)變化等信息(廣播);告知系統(tǒng)本應(yīng)用可以其他應(yīng)用提供服務(wù)(ContentProvider和Service);告知系統(tǒng)本應(yīng)用某些類能夠處理一些特定的請求(比如打開pdf擴展名的文件);等等

      • 其他各種需要用文本直接告知系統(tǒng)的:比如申請的權(quán)限,應(yīng)用的主題等等。

      歸根結(jié)底就是Android系統(tǒng)的app需要通過文本方式直接告訴系統(tǒng)的信息太多了

      一份真實的AndroidManifest.xml文件

      <manifest xmlns:android="http://schemas.android.com/apk/res/android"           package="com.sample.teapot"           android:versionCode="1"           android:versionName="1.0.0.1" >    <uses-feature android:glEsVersion="0x00020000"></uses-feature>    <application       android:allowBackup="false"       android:fullBackupContent="false"       android:supportsRtl="true"       android:icon="@mipmap/ic_launcher"       android:label="@string/app_name"       android:theme="@style/AppTheme"       android:name="com.sample.teapot.TeapotApplication"       >      <!-- Our activity is the built-in NativeActivity framework class.          This will take care of integrating with our NDK code. -->     <activity android:name="com.sample.teapot.TeapotNativeActivity"               android:label="@string/app_name"               android:configChanges="orientation|keyboardHidden">       <!-- Tell NativeActivity the name of our .so -->       <meta-data android:name="android.app.lib_name"                  android:value="TeapotNativeActivity" />       <intent-filter>         <action android:name="android.intent.action.MAIN" />         <category android:name="android.intent.category.LAUNCHER" />       </intent-filter>     </activity>   </application> </manifest>

      這是Google官方示例中的teapots項目中的一個文件,我們就針對這份文件來分析字段的意義。字段的意義參考的是官方文檔。

      <manifest>元素

      首先,所有的xml都必須包含<manifest>元素。這是文件的根節(jié)點。它必須要包含<application>元素,并且指明xmlns:android和package屬性。

      <manifest>元素中的屬性

      xmlns:android

      這個屬性定義了Android命名空間。必須設(shè)置成"http://schemas.android.com/apk/res/android"。不要手動修改。

      package

      這是一個完整的Java語言風(fēng)格包名。包名由英文字母(大小寫均可)、數(shù)字和下劃線組成。每個獨立的名字必須以字母開頭。

      構(gòu)建APK的時候,構(gòu)建系統(tǒng)使用這個屬性來做兩件事:

      • 1、生成R.java類時用這個名字作為命名空間(用于訪問APP的資源)
        比如:package被設(shè)置成com.sample.teapot,那么生成的R類就是:com.sample.teapot.R
      • 2、用來生成在manifest文件中定義的類的完整類名。比如package被設(shè)置成com.sample.teapot,并且activity元素被聲明成<activity android:name=".MainActivity">,完整的類名就是com.sample.teapot.MainActivity。

      包名也代表著唯一的application ID,用來發(fā)布應(yīng)用。但是,要注意的一點是:在APK構(gòu)建過程的最后一步,package名會被build.gradle文件中的applicationId屬性取代。如果這兩個屬性值一樣,那么萬事大吉,如果不一樣,那就要小心了。

      android:versionCode

      內(nèi)部的版本號。用來表明哪個版本更新。這個數(shù)字不會顯示給用戶。顯示給用戶的是versionName。這個數(shù)字必須是整數(shù)。不能用16進制,也就是說不接受"0x1"這種參數(shù)

      android:versionName

      顯示給用戶看的版本號。

      簡述AndroidManifest.xml的作用是什么?

      <manifest>元素中的元素

      <uses-feature>元素

      Google Play利用這個元素的值從不符合應(yīng)用需要的設(shè)備上將應(yīng)用過濾。

      這東西的作用是將APP所依賴的硬件或者軟件條件告訴別人。它說明了APP的哪些功能可以隨設(shè)備的變化而變化。

      使用的時候要注意,必須在單獨的<uses-feature>元素中指定每個功能,如果要多個功能,需要多個<uses-feture>元素。比如要求設(shè)備同時具有藍牙和相機功能:

      <uses-feature android:name="android.hardware.bluetooth" /> <uses-feature android:name="android.hardware.camera" />

      <uses-feature>的屬性

      android:name

      該屬性以字符串形式指定了APP要用的硬件或軟件功能。

      android:required

      這項屬性如果值為true表示需要這項功能否則應(yīng)用無法工作,如果為false表示應(yīng)用在必要時會使用該功能,但是如果沒有此功能應(yīng)用也能工作。

      android:glEsVersion

      指明應(yīng)用需要的Opengl ES版本。高16位表示主版本號,低16位表示次版本號。例如,如果是要3.2的版本,就是0x00030002。如果定義多個glEsVersion,應(yīng)用會自動啟用最高的設(shè)置。

      <application>元素

      此元素描述了應(yīng)用的配置。這是一個必備的元素,它包含了很多子元素來描述應(yīng)用的組件,它的屬性影響到所有的子組件。許多屬性(例如icon、label、permission、process、taskAffinity和allowTaskReparenting)都可以設(shè)置成默認(rèn)值。

      <application>的屬性

      android:allowBackup

      表示是否允許APP加入到備份還原的結(jié)構(gòu)中。如果設(shè)置成false,那么應(yīng)用就不會備份還原。默認(rèn)值為true。

      android:fullBackupContent

      這個屬性指向了一個xml文件,該文件中包含了在進行自動備份時的完全備份規(guī)則。這些規(guī)則定義了哪些文件需要備份。此屬性是一個可選屬性。默認(rèn)情況下,自動備份包含了大部分app文件。

      android:supportsRtl

      聲明你的APP是否支持RTL(Right To Left)布局。如果設(shè)置成true,并且targetSdkVersion被設(shè)置成17或更高。很多RTL API會被集火,這樣你的應(yīng)用就可以顯示RTL布局了。如果設(shè)置成false或者targetSdkVersion被設(shè)置成16或更低。哪些RTL API就不起作用了。

      該屬性的默認(rèn)的值是false。

      android:icon

      APP的圖標(biāo),以及每個組件的默認(rèn)圖標(biāo)??梢栽诮M價中自定義圖標(biāo)。這個屬性必須設(shè)置成一個引用,指向一個可繪制的資源,這個資源必須包含圖片。系統(tǒng)不設(shè)置默認(rèn)圖標(biāo)。例如mipmap/ic_launcher引用的就是下面的資源

      簡述AndroidManifest.xml的作用是什么?

      android:label

      一個用戶可讀的標(biāo)簽,以及所有組件的默認(rèn)標(biāo)簽。子組件可以用他們的label屬性定義自己的標(biāo)簽,如果沒有定義,那么就用這個標(biāo)簽。

      標(biāo)簽必須設(shè)置成一個字符串資源的引用。這樣它們就能和其他東西一樣被定位,比如@string/app_name。當(dāng)然,為了開發(fā)方便,你也可以定義一個原始字符串。

      簡述AndroidManifest.xml的作用是什么?

      android:theme

      該屬性定義了應(yīng)用使用的主題的,它是一個指向style資源的引用。各個activity也可以用自己的theme屬性設(shè)置自己的主題。

      簡述AndroidManifest.xml的作用是什么?

      android:name

      Application子類的全名。包括前面的路徑。例如com.sample.teapot.TeapotApplication。當(dāng)應(yīng)用啟動時,這個類的實例被第一個創(chuàng)建。這個屬性是可選的,大多數(shù)APP都不需要這個屬性。在沒有這個屬性的時候,Android會啟動一個Application類的實例。

      <activity>元素

      該元素聲明一個實現(xiàn)應(yīng)用可視化界面的Activity(Activity類子類)。這是<application>元素中必要的子元素。所有Activity都必須由清單文件中的<activity>元素表示。任何未在該處聲明的Activity對系統(tǒng)都不可見,并且永遠不會被執(zhí)行。

      android:name

      Activity類的名稱,是Activity類的子類。該屬性值為完全限定類名稱,例如com.sample.teapot.TeapotNativeActivity。為了方便起見,如果第一個字符是點('.'),就需要加上<manifest>元素中的包名。應(yīng)用一旦發(fā)布,不應(yīng)更改該名稱。

      沒有默認(rèn)值,必須指定該名稱。

      android:label

      Activity標(biāo)簽,可以被用戶讀取。該標(biāo)簽會在Activity激活時顯示在屏幕上。如果未設(shè)置,用<application>中的label屬性。對屬性的設(shè)置要求和<application>中一樣。

      android:configChanges

      列出 Activity 將自行處理的配置更改消息。在運行時發(fā)生配置更改時,默認(rèn)情況下會關(guān)閉 Activity 然后將其重新啟動,但使用該屬性聲明配置將阻止 Activity 重新啟動。 Activity 反而會保持運行狀態(tài),并且系統(tǒng)會調(diào)用其 onConfigurationChanged()方法。

      :應(yīng)避免使用該屬性,并且只應(yīng)在萬不得已的情況下使用。 如需了解有關(guān)如何正確處理配置更改所致重新啟動的詳細信息,請閱讀處理運行時變更。

      這屬性可以設(shè)置的項很多,這里列出常用的項:

      • orientation
        屏幕放心啊發(fā)生了變化,比如用戶旋轉(zhuǎn)了設(shè)備
      • keyboardHidden
        鍵盤無障礙功能發(fā)生了變化,比如用戶顯示了硬件鍵盤
      • android:launchMode
        關(guān)于如何啟動Activity的指令。一共有四種指令:
        “standard”
        “singleTop”
        “singleTask”
        “singleInstance”
        默認(rèn)情況下是standard。這些模式被分為兩大類:"standard"和"singleTop"是一類。該模式的Activity可以多次實例化。實例可屬于任何任務(wù),并且可以位于Activity堆棧中的任何位置。"singleTask"和"singleInstance"是一類。該模式只能啟動任務(wù),它們始終位于Activity堆棧的根位置。此外,設(shè)備一次只能保留一個Activity實例。
        設(shè)置成singleTask后,系統(tǒng)在新任務(wù)的根位置創(chuàng)建Activity并向其傳送Intent。如果已經(jīng)存在一個Activity實例,則系統(tǒng)會通過調(diào)用該實例的onNewIntent()方法向其傳送Intent而不是創(chuàng)建一個新的Activity實例。

      android:theme

      設(shè)定主題格式,與<application>中的theme類似。

      <meta-data>元素

      指定額外的數(shù)據(jù)項,該數(shù)據(jù)項是一個name-value對,提供給其父組件。這些數(shù)據(jù)會組成一個Bundle對象,可以由PackageItemInfo.metaData字段使用。雖然可以使用多個<meta-data>元素標(biāo)簽,但是不推薦這么使用。如果有多個數(shù)據(jù)項要指定,推薦做法是:將多個數(shù)據(jù)項合并成一個資源,然后使用一個<meta-data>包含進去。

      該元素有三個屬性:

      • android:name

        數(shù)據(jù)項名稱,這是一個唯一值。

      • android:resource

        一個資源的引用。

      • android:value

        數(shù)據(jù)項的值。

      <intent-filter>元素

      指明這個activity可以以什么樣的意圖(intent)啟動。該元素有幾個子元素可以包含。我們先介紹遇到的這兩個:

      <action>元素

      表示activity作為一個什么動作啟動,android.intent.action.MAIN表示作為主activity啟動。

      <category>元素

      這是action元素的額外類別信息,android.intent.category.LAUNCHER表示這個activity為當(dāng)前應(yīng)用程序優(yōu)先級最高的Activity。

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號