Android復習(三)清單文件中的元素——>application
<application>
- 語法:
-
<application android:allowTaskReparenting=["true" | "false"] android:allowBackup=["true" | "false"] android:allowClearUserData=["true" | "false"] android:backupAgent="string" android:backupInForeground=["true" | "false"] android:banner="drawable resource" android:debuggable=["true" | "false"] android:description="string resource" android:directBootAware=["true" | "false"] android:enabled=["true" | "false"] android:extractNativeLibs=["true" | "false"] android:fullBackupContent="string" android:fullBackupOnly=["true" | "false"] android:hasCode=["true" | "false"] android:hardwareAccelerated=["true" | "false"] android:icon="drawable resource" android:isGame=["true" | "false"] android:killAfterRestore=["true" | "false"] android:largeHeap=["true" | "false"] android:label="string resource" android:logo="drawable resource" android:manageSpaceActivity="string" android:name="string" android:networkSecurityConfig="xml resource" android:permission="string" android:persistent=["true" | "false"] android:process="string" android:restoreAnyVersion=["true" | "false"] android:requiredAccountType="string" android:resizeableActivity=["true" | "false"] android:restrictedAccountType="string" android:supportsRtl=["true" | "false"] android:taskAffinity="string" android:testOnly=["true" | "false"] android:theme="resource or theme" android:uiOptions=["none" | "splitActionBarWhenNarrow"] android:usesCleartextTraffic=["true" | "false"] android:vmSafeMode=["true" | "false"] > . . . </application> - 包含于:
<manifest>- 可包含:
<activity><activity-alias><meta-data><service><receiver><provider><uses-library>- 說明:
- 應用的聲明。此元素包含用于聲明每個應用組件的子元素,并且具有會影響所有組件的屬性。其中許多屬性(如
icon、label、permission、process、taskAffinity和allowTaskReparenting)會為組件元素的相應屬性設置默認值。其他屬性(如debuggable、enabled、description和allowClearUserData)則為整個應用設置值,并且不能被組件替換。 - 屬性
android:allowTaskReparenting- 應用定義的 Activity 是否可以從啟動它們的任務移至對其具有粘性的任務(當下次將該任務置于前臺時)。如果它們可以移動,則設為
"true";如果它們必須一直與啟動它們的任務在一起,則設為"false"。默認值為"false"。<activity>元素有其自己的allowTaskReparenting屬性,該屬性可以替換此處設置的值。如需了解詳情,請參閱該屬性。 android:allowBackup- 是否允許應用參與備份和恢復基礎架構。如果將此屬性設為 false,則永遠不會為該應用執行備份或恢復,即使是采用全系統備份方法也不例外(這種備份方法通常會通過 adb 保存所有應用數據)。此屬性的默認值為 true。
android:allowClearUserData-
是否允許應用重置用戶數據。這些數據包括標志(如用戶是否看到了介紹性提示)以及用戶可自定義的設置和偏好設置。此屬性的默認值為
true。注意:只有屬于系統映像的應用才能明確聲明此屬性。第三方應用不能在其清單文件中包含此屬性。
如需了解詳情,請參閱在新設備上恢復用戶數據。
android:backupAgent- 實現應用的備份代理的類的名稱,它是
BackupAgent的子類。屬性值應該是一個完全限定類名(如"com.example.project.MyBackupAgent")。不過,作為一種簡寫形式,如果名稱的第一個字符是句點(例如".MyBackupAgent"),則會將其附加到<manifest>元素中指定的軟件包名稱。沒有默認值。必須指定相應名稱。
android:backupInForeground- 表示即使此應用處于前臺等效狀態,也可以對其執行自動備份操作。系統會在自動備份操作期間關閉應用,因此使用此屬性時應格外小心。將此標志設為 true 會影響應用處于活動狀態時的行為。
默認值為
false,這表示當應用在前臺運行時(如正在通過處于startForeground()狀態的服務播放音樂的音樂應用),操作系統會避免對其進行備份。 android:banner- 一種可繪制資源,可為其關聯項提供擴展圖形橫幅。它可以與
<application>標記一起使用,為所有應用 Activity 提供默認橫幅;也可以與<activity>標記一起使用,為特定 Activity 提供橫幅。系統在 Android TV 主屏幕中使用橫幅來代表應用。由于橫幅只顯示在主屏幕中,因此只能由具有能夠處理
CATEGORY_LEANBACK_LAUNCHERIntent 的 Activity 的應用指定。必須將此屬性設為對包含圖片的可繪制資源(例如
"@drawable/banner")的引用。沒有默認橫幅。如需了解詳情,請參閱“TV 應用入門”中的提供主屏幕橫幅。
android:debuggable- 是否可以調試應用(即使在處于用戶模式的設備上運行時)。如果可以調試,則設為
"true";如果無法調試,則設為"false"。默認值為"false"。 android:description- 有關應用的用戶可讀文本,比應用標簽更長且描述性更強。必須將值設為對字符串資源的引用。與標簽不同,它不能是原始字符串。沒有默認值。
android:directBootAware-
應用是否可感知直接啟動 (direct-boot);即,它是否可以在用戶解鎖設備之前運行。如果您使用的是
Application的自定義子類,并且應用內的任何組件可感知直接啟動,則整個自定義應用會被視為可感知直接啟動。注意:在直接啟動期間,應用只能訪問設備保護存儲空間內的數據。
默認值為
"false"。 android:enabled- Android 系統是否可以實例化應用的組件。如果可以實例化,則設為
"true";如果無法實例化,則設為"false"。如果值為"true",則每個組件的enabled屬性決定了是否啟用該組件。如果值為"false",則會替換特定于組件的值;所有組件都處于停用狀態。默認值為
"true"。 android:extractNativeLibs- 軟件包安裝程序是否將原生庫從 APK 提取到文件系統。如果設為
false,則原生庫必須保持頁面對齊狀態并以未壓縮的形式存儲在 APK 中。無需更改代碼,因為鏈接器在運行時直接從 APK 加載庫。默認值為
"true"。 android:fullBackupContent- 此屬性指向一個包含自動備份功能的完整備份規則的 XML 文件。這些規則決定了備份哪些文件。如需了解詳情,請參閱自動備份的 XML 配置語法。
此屬性是可選的。如果未指定,默認情況下,自動備份會涵蓋應用的大部分文件。如需了解詳情,請參閱備份的文件。
android:fullBackupOnly- 此屬性指示是否在設備上使用自動備份(如果可用)。如果設為
true,則應用安裝在搭載 Android 6.0(API 級別 23)或更高版本的設備上時會執行自動備份。在舊款設備上,應用會忽略此屬性并執行鍵值對備份。默認值為
"false"。 android:hasCode- 應用是否包含任何代碼。如果包含,則設為
"true";如果不包含,則設為"false"。如果值為"false",則系統在啟動組件時不會嘗試加載任何應用代碼。默認值為"true"。例如,如果您的應用支持 Google Play 的 Dynamic Delivery 并且包含不會生成任何 DEX 文件(它們是針對 Android 平臺優化的字節碼)的動態功能模塊,則您需要在模塊的清單文件中將此屬性設為
false。否則,您可能會遇到運行時錯誤。 android:hardwareAccelerated- 是否應為此應用中的所有 Activity 和視圖啟用硬件加速渲染。如果應啟用,則設為
"true";如果不應啟用,則設為"false"。如果已將minSdkVersion或targetSdkVersion設為"14"或更高版本,則默認值為"true";否則,值為"false"。從 Android 3.0(API 級別 11)開始,應用可使用硬件加速的 OpenGL 渲染程序來提高許多常見 2D 圖形操作的性能。啟用硬件加速的渲染程序后,Canvas、Paint、Xfermode、ColorFilter、Shader 和 Camera 中的大多數操作都會加速。這樣可使動畫和滾動更流暢并且可提高整體響應能力,即使對于沒有明確使用框架的 OpenGL 庫的應用也是如此。
請注意,并非所有 OpenGL 2D 操作都會加速。如果您啟用硬件加速的渲染程序,請對應用進行測試,以確保它可以毫無錯誤地使用該渲染程序。
如需了解詳情,請閱讀硬件加速指南。
android:icon- 整個應用的圖標,以及每個應用組件的默認圖標。請參閱
<activity>、<activity-alias>、<service>、<receiver>和<provider>元素各自的icon屬性。必須將此屬性設為對包含圖片的可繪制資源(例如
"@drawable/icon")的引用。沒有默認圖標。 android:isGame- 應用是否為游戲。系統可以將分類為游戲的應用歸入一組,或者將它們與其他應用分開顯示。
默認值為
false。 android:killAfterRestore- 在全系統恢復操作期間恢復相關應用的設置后是否應終止該應用。單個軟件包恢復操作絕不會導致應用關閉。全系統恢復操作通常只在首次設置手機時執行一次。第三方應用通常不需要使用此屬性。
默認值為
true,這表示應用在全系統恢復期間處理完其數據后會終止。 android:largeHeap- 是否應使用大型 Dalvik 堆創建應用的進程。此屬性適用于為應用創建的所有進程。它只適用于加載到進程中的第一個應用;如果您使用共享用戶 ID 允許多個應用使用一個進程,則它們必須全部以一致的方式使用此選項,否則會產生不可預知的結果。
大多數應用都不需要此屬性,而應專注于減少其總體內存使用量以提高性能。啟用此屬性也不能保證可用內存的固定增長,因為某些設備受其可用內存總量的限制。
要在運行時查詢可用內存大小,請使用
getMemoryClass()或getLargeMemoryClass()方法。 android:label- 整個應用的用戶可讀標簽,以及每個應用組件的默認標簽。請參閱
<activity>、<activity-alias>、<service>、<receiver>和<provider>元素各自的label屬性。應將標簽設為對字符串資源的引用,以便可以像界面中的其他字符串一樣進行本地化。不過,為了方便您開發應用,也可以將其設為原始字符串。
android:logo- 整個應用的徽標,以及 Activity 的默認徽標。
必須將此屬性設為對包含圖片的可繪制資源(例如
"@drawable/logo")的引用。沒有默認徽標。 android:manageSpaceActivity- 一個 Activity 子類的完全限定名稱,系統可以啟動該子類來讓用戶管理設備上的應用占用的內存。還應使用
<activity>元素來聲明相應 Activity。 android:name- 為應用實現的
Application子類的完全限定名稱。應用進程啟動后,此類會在應用的所有組件之前進行實例化。該子類是可選的;大多數應用都不需要它。在沒有子類的情況下,Android 會使用 Application 基類的實例。
android:networkSecurityConfig-
指定包含應用的網絡安全配置的 XML 文件的名稱。值必須是對包含相應配置的 XML 資源文件的引用。
此屬性是在 API 級別 24 中添加的。
android:permission- 客戶端為了與應用進行交互而必須具備的權限的名稱。使用此屬性可以方便地設置適用于所有應用組件的權限。您可以通過設置各個組件的
permission屬性來將其覆蓋。 android:persistent- 應用是否應始終保持運行狀態。如果應該,則設為
"true";如果不應該,則設為"false"。默認值為"false"。應用通常不應設置此標志;持久性模式僅適用于某些系統應用。 android:process- 一個進程的名稱,應用的所有組件都應在該進程中運行。每個組件都可以通過設置自己的
process屬性來替換此默認值。默認情況下,當應用的第一個組件需要運行時,Android 會為該應用創建一個進程。所有組件隨后都在該進程中運行。默認進程的名稱與由
<manifest>元素設置的軟件包名稱一致。通過將此屬性設為與其他應用共享的進程名稱,您可以安排兩個應用的組件在同一進程中運行,但前提是這兩個應用還共享用戶 ID 并使用同一證書進行了簽名。
如果為此屬性分配的名稱以冒號(“:”)開頭,則會在需要時創建一個應用專用的新進程。如果進程名稱以小寫字符開頭,則會創建一個采用該名稱的全局進程。一個應用可與其他應用共享全局進程,從而減少資源使用量。
android:restoreAnyVersion- 指示應用準備嘗試恢復任何備份的數據集,即使存儲該備份的應用版本比當前安裝在設備上的版本要高。將此屬性設為
true將允許備份管理器嘗試恢復,即使版本不匹配表明數據不兼容也是如此。使用時應格外小心!此屬性的默認值為
false。 android:requiredAccountType- 指定應用正常運行所需的帳號類型。如果您的應用需要
Account,則此屬性的值必須與您的應用使用的帳號身份驗證器類型(由AuthenticatorDescription定義,如“com.google”)相對應。默認值為 null,這表示應用可以在沒有任何帳號的情況下運行。
由于受限個人資料目前無法添加帳號,因此指定此屬性會使受限個人資料無法使用您的應用,除非您也聲明具有相同值的
android:restrictedAccountType。注意:如果帳號數據可能會泄露個人身份信息,請務必聲明此屬性并讓
android:restrictedAccountType為 null,這樣受限個人資料就無法使用您的應用來訪問屬于所有者用戶的個人信息。此屬性是在 API 級別 18 中添加的。
resizeableActivity-
指定應用是否支持多窗口顯示。您可以在
<activity>或<application>元素中設置此屬性。如果您將此屬性設為 true,則用戶可以在分屏模式和自由窗口模式下啟動 Activity。如果您將此屬性設為 false,則 Activity 不支持多窗口模式。如果此值為 false,并且用戶嘗試在多窗口模式下啟動 Activity,則 Activity 會占據整個屏幕。
如果您的應用的目標 API 級別為 24 或更高級別,但您沒有為此屬性指定值,則此屬性的值默認為 true。
此屬性是在 API 級別 24 中添加的。
android:restrictedAccountType- 指定此應用所需的帳號類型,并指明允許受限個人資料訪問屬于所有者用戶的此類帳號。如果您的應用需要
Account并且允許受限個人資料訪問主要用戶的帳號,則此屬性的值必須與您的應用使用的帳號身份驗證器類型(由AuthenticatorDescription定義,如“com.google”)相對應。默認值為 null,這表示應用可以在沒有任何帳號的情況下運行。
注意:指定此屬性將允許受限個人資料將您的應用與屬于所有者用戶的帳號一起使用,這樣可能會泄露個人身份信息。如果帳號可能會泄露個人詳細信息,則您不應使用此屬性,而應改為聲明
android:requiredAccountType屬性,以使受限個人資料無法使用您的應用。此屬性是在 API 級別 18 中添加的。
android:supportsRtl- 聲明您的應用是否愿意支持從右到左 (RTL) 布局。
如果設為
true并且targetSdkVersion設為 17 或更高版本,則系統會激活和使用各種 RTL API,以便您的應用可以顯示 RTL 布局。如果設為false或者如果targetSdkVersion設為 16 或更低版本,則 RTL API 將被忽略或不起作用,無論與用戶所選語言區域關聯的布局方向為何(布局始終是從左到右),應用的行為都相同。此屬性的默認值為
false。此屬性是在 API 級別 17 中添加的。
android:taskAffinity- 一個粘性名稱,適用于應用中的所有 Activity,但使用自己的
taskAffinity屬性設置不同粘性的 Activity 除外。如需了解詳情,請參閱該屬性。默認情況下,應用中的所有 Activity 具有相同的粘性。該粘性的名稱與由
<manifest>元素設置的軟件包名稱相同。 android:testOnly- 指示此應用是否僅用于測試目的。例如,它可能會在自身之外公開功能或數據,這樣會導致安全漏洞,但對測試很有用。此類 APK 只能通過
adb安裝,您不能將其發布到 Google Play。當您點擊 Run 圖標
時,Android Studio 會自動添加此屬性。 android:theme- 對樣式資源的引用,用于為應用中的所有 Activity 定義默認主題背景。各個 Activity 可以通過設置自己的
theme屬性來替換默認值。如需了解詳情,請參閱樣式和主題背景開發者指南。 android:uiOptions- 有關 Activity 界面的額外選項。
必須是以下某個值。
值 說明 "none"沒有額外的界面選項。這是默認值。 "splitActionBarWhenNarrow"當水平空間受限時(比如手機處于豎屏模式時),在屏幕底部添加一個欄,以顯示應用欄(也稱為操作欄)中的操作項。應用欄拆分成頂部導航區域和用于顯示操作項的底部欄,而不是在屏幕頂部的應用欄中顯示少量操作項。這樣可以確保不僅為操作項提供合理的空間,而且還為頂部的導航和標題元素提供合理的空間。菜單項并不拆分到這兩個欄中;它們總是一起顯示。 如需詳細了解應用欄,請參閱添加應用欄培訓課程。
此屬性是在 API 級別 14 中添加的。
android:usesCleartextTraffic- 指示應用是否打算使用明文網絡流量,如明文 HTTP。對于目標 API 級別為 27 或更低級別的應用,默認值為
"true"。對于目標 API 級別為 28 或更高級別的應用,默認值為"false"。如果將此屬性設為
"false",平臺組件(例如 HTTP 和 FTP 堆棧、DownloadManager和MediaPlayer)將拒絕應用要使用明文流量的請求。強烈建議第三方庫也遵循此設置。避免使用明文流量的主要原因是缺乏機密性、真實性和防止篡改的保護措施;網絡攻擊者可以竊聽傳輸的數據,還可以在不被檢測到的情況下修改數據。此標志的遵循只能盡力而為,因為鑒于提供給 Android 應用的訪問級別,不可能阻止來自這些應用的所有明文流量。例如,不要期望
SocketAPI 遵循此標志,因為它無法確定其流量是否采用明文形式。不過,來自應用的大部分網絡流量都由較高級別的網絡堆棧/組件處理,這些堆棧/組件可通過從ApplicationInfo.flags或NetworkSecurityPolicy.isCleartextTrafficPermitted()讀取來遵循此標志。注意:對于目標 API 級別為 26 及更高級別的應用,
WebView遵循此屬性。在應用開發過程中,可使用 StrictMode 識別來自應用的任何明文流量。如需了解詳情,請參閱
StrictMode.VmPolicy.Builder.detectCleartextNetwork()。此屬性是在 API 級別 23 中添加的。
如果存在 Android 網絡安全配置,則會在 Android 7.0(API 級別 24)及更高版本上忽略此標志。
android:vmSafeMode- 指示應用是否希望虛擬機在安全模式下運行。默認值為
"false"。此屬性是在 API 級別 8 中添加的,最初添加時,如果值為“true”,會停用 Dalvik 即時 (JIT) 編譯器。
此屬性在 API 級別 22 中進行了調整,調整后,如果值為“true”,會停用 ART 預先 (AOT) 編譯器。

時,Android Studio 會自動添加此屬性。
浙公網安備 33010602011771號