語法:
<application android:allowTaskReparenting=["true" | "false"]
             android:allowBackup=["true" | "false"]
             android:allowClearUserData=["true" | "false"]
             android:allowNativeHeapPointerTagging=["true" | "false"]
             android:appCategory=["accessibility" | "audio" | "game" |
             "image" | "maps" | "news" | "productivity" | "social" | "video"]
             android:backupAgent="string"
             android:backupInForeground=["true" | "false"]
             android:banner="drawable resource"
             android:dataExtractionRules="string resource"
             android:debuggable=["true" | "false"]
             android:description="string resource"
             android:enabled=["true" | "false"]
             android:extractNativeLibs=["true" | "false"]
             android:fullBackupContent="string"
             android:fullBackupOnly=["true" | "false"]
             android:gwpAsanMode=["always" | "never"]
             android:hasCode=["true" | "false"]
             android:hasFragileUserData=["true" | "false"]
             android:hardwareAccelerated=["true" | "false"]
             android:icon="drawable resource"
             android:isGame=["true" | "false"]
             android:isMonitoringTool=["parental_control" | "enterprise_management" |
             "other"]
             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:requestLegacyExternalStorage=["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>
<profileable>
<provider>
<uses-library>
<uses-native-library>
說明:
應用程式宣告。這個元素包含的子元素會宣告每個應用程式元件,並具備可影響所有元件的屬性。其中的許多屬性 (例如 iconlabelpermissionprocesstaskAffinityallowTaskReparenting) 會針對元件元素的對應屬性設定預設值。而 debuggableenableddescriptionallowClearUserData 等其他屬性會設定應用程式整體的值,且無法由元件覆寫。
屬性
android:allowTaskReparenting
可指定在下一次相依工作移到前景時,應用程式定義的活動是否可以從啟動活動的工作移至該相依工作。如果這個屬性設為 "true",表示可以移動活動;如果這個屬性設為 "false",表示活動必須保留在啟動活動的工作中。 預設值為 "false"

<activity> 元素有專屬的 allowTaskReparenting 屬性,可覆寫此處設定的值。詳情請參閱該屬性。

android:allowBackup

可指定是否允許應用程式參與備份與還原基礎架構。如果這個屬性設為 false,系統就不會為應用程式執行備份或還原,即使是透過 ADB 儲存所有應用程式資料的完整系統備份也一樣。這個屬性的預設值為 true

注意:假如應用程式在搭載 Android 12 以上版本的裝置上執行,而且指定 Android 12 (API 級別 31) 以上版本,您就無法停用應用程式檔案的裝置對裝置遷移功能。在這種情況下,系統會自動允許這項功能。

不過,即使您的應用程式指定 Android 12 (API 級別 31) 以上版本,您還是可以將這個屬性設為 false,藉此停用應用程式的雲端檔案備份與還原功能。

詳情請參閱這個章節的備份與還原說明。本頁面說明了指定 Android 12 (API 級別 31) 以上版本的應用程式有哪些行為變更。

android:allowClearUserData

可指定是否允許應用程式重設使用者資料。這類資料包括旗標 (例如使用者是否已看過介紹工具提示),以及使用者可自訂的設定和偏好設定。此屬性的預設值為 true

注意:只有屬於系統映像檔的應用程式才能明確宣告這個屬性。第三方應用程式不能在資訊清單檔案中包含這個屬性。

詳情請參閱「還原新裝置上的使用者資料」

android:allowNativeHeapPointerTagging

應用程式是否已啟用堆積指標標記功能。此屬性的預設值為 true

注意:停用這項功能無法解決基礎程式碼的健康情況問題。未來的硬體裝置可能不支援這個資訊清單標記。

詳情請參閱「標記指標」。

android:appCategory
宣告這個應用程式的類別。類別可用來將多個應用程式分成不同的群組,例如匯總電池、網路或磁碟用量。只有在應用程式符合其中一個特定類別時,才應該定義這個值。

必須是下列其中一個常數值。

說明
無障礙功能主要為無障礙的應用程式,例如螢幕閱讀器。
音訊主要提供音訊或音樂的應用程式,例如音樂播放器。
遊戲主要是遊戲的應用程式。
圖片這類應用程式主要提供圖片或相片,例如相機或圖片庫應用程式。
地圖主要是地圖的應用程式,例如導航應用程式。
新聞主要是新聞應用程式,例如報紙、雜誌或運動應用程式。
實用工具主要是效率提升應用程式,例如雲端儲存空間或工作場所應用程式。
社交主要是社交應用程式,例如訊息、通訊、電子郵件或社交網路應用程式。
影片主要提供影片或電影的應用程式,例如串流影片應用程式。

android:backupAgent
實作應用程式備份代理程式的類別名稱,為 BackupAgent 的子類別。屬性值應為完整的類別名稱 (例如 "com.example.project.MyBackupAgent")。不過為了精簡起見,如果名稱的第一個字元是半形句號 (例如 ".MyBackupAgent"),則會加到 <manifest> 元素中所指定套件名稱的後方。

沒有預設值。必須指定名稱。

android:backupInForeground
表示即使應用程式在前景執行,系統也可以對其執行自動備份作業。系統會在自動備份作業期間關閉應用程式,因此使用此屬性時請小心。將此旗標設為 True,可能會影響應用程式運作期間的行為。

預設值為 false,表示當應用程式在前景執行時 (例如音樂應用程式正在透過 startForeground() 狀態下的服務播放音樂),作業系統將避免為該應用程式進行備份。

android:banner
可繪製的資源,用於為關聯項目提供延伸圖片橫幅。可與 <application> 標記搭配使用,為所有應用程式活動提供預設橫幅,或是與 <activity> 標記搭配使用,為特定活動提供橫幅。

系統會使用橫幅代表 Android TV 主畫面上的應用程式。由於橫幅只會顯示在主畫面上,因此應用程式只有在含有處理 CATEGORY_LEANBACK_LAUNCHER 意圖的活動時,才需要指定橫幅。

這個屬性必須設為包含圖片的可繪製資源的參照 (例如 "@drawable/banner")。沒有預設橫幅。

更多資訊請參閱《開始使用電視應用程式》中的提供主螢幕橫幅。

android:dataExtractionRules

應用程式可將此屬性設為 XML 資源,在當中指定規則,以決定您可以在備份或傳輸作業中從裝置複製哪些檔案和目錄。

如需瞭解 XML 檔案的格式,請參閱「備份與還原」文件。

android:debuggable
可指定是否可以對應用程式執行偵錯 (即使應用程式在處於使用者模式下的裝置上執行)。屬性設為 "true" 表示可以,而設為 "false" 表示無法執行。預設值為 "false"
android:description
表示使用者可理解的應用程式文字,比應用程式標籤更長且說明更明確。此值必須設定為對字串資源的參照。與標籤不同,其不能是原始字串。沒有預設值。
android:enabled
Android 系統是否能對應用程式的元件執行個體化。如果可以,設為 "true",如果不行,則設為 "false"。如果值為 "true",每個元件的 enabled 屬性會決定是否啟用該元件。如果值為 "false",則會覆寫元件專屬值;所有元件都會停用。

預設值為 "true"

android:extractNativeLibs

自 AGP 4.2.0 起,extractNativeLibs 資訊清單屬性已由 DSL 選項 useLegacyPackaging 取代。您應使用應用程式 build.gradle 檔案中的 useLegacyPackaging 設定原生資料庫的壓縮行為,而非使用在資訊清單檔案中的 extractNativeLibs。詳情請參閱版本資訊使用 DSL 封裝壓縮的原生資料庫

此屬性表示套件安裝程式是否要將原生資料庫從 APK 擷取至檔案系統。如果設為 "false",原生資料庫會以未壓縮的形式儲存在 APK 中。雖然您的 APK 可能較大,但應用程式的載入速度應該會更快,因為資料庫會直接在執行階段從 APK 載入。

extractNativeLibs 的預設值取決於 minSdkVersion 和您使用的 AGP 版本。在多數情況下,預設行為可能符合您的需求,因此您不必明確設定這個屬性。

android:fullBackupContent
這個屬性指向一個含有自動備份完整備份規則的 XML 檔案。這些規則會決定要備份的檔案。詳情請參閱自動備份的 XML 設定語法」。

此屬性為選用項目。如果未指定屬性值,自動備份功能會預設為包含大部分的應用程式檔案。詳情請參閱「已備份的檔案」。

android:fullBackupOnly
此屬性表示是否在裝置上使用自動備份功能 (如可用)。如果設為 true,當應用程式安裝在搭載 Android 6.0 (API 級別 23) 以上版本的裝置上時,就會執行自動備份功能。在較舊的裝置上,應用程式則會忽略此屬性,並執行鍵/值備份

預設值為 "false"

android:gwpAsanMode
此屬性表示是否使用 GWP-ASan;其為一種原生記憶體配置功能,可協助找出釋放後使用及堆疊-緩衝-溢位的錯誤。

預設值為 "never"

android:hasCode
應用程式是否含有任何程式碼。如果有,設為"true",如果沒有,則設為 "false"。假如屬性值為 "false",系統就不會在啟動元件時嘗試載入任何應用程式程式碼。預設值為 "true"

例如,如果您的應用程式支援 Play Feature Delivery 功能,而且包含不會產生任何 DEX 檔案的功能模組 (也就是根據 Android 平台最佳化的位元碼),您就必須在模組的資訊清單檔案中,將這個屬性設為 false。否則,可能會發生執行階段錯誤。

android:hasFragileUserData
使用者解除安裝應用程式時,是否向使用者顯示保留應用程式資料的提示。預設值為 "false"
android:hardwareAccelerated
可指定是否應為這個應用程式中的所有活動和檢視畫面啟用硬體加速轉譯功能。設為 "true" 表示應啟用,而設為 "false" 表示不應啟用。預設值為 "false"。不過,如果您將 minSdkVersiontargetSdkVersion 設為 "14" 以上,預設值就會是 "true"

自 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:isMonitoringTool

表示此應用程式的設計宗旨為監控其他人。

注意:如果應用程式在資訊清單中宣告此屬性,開發人員必須遵循「追蹤軟體」政策,才能將應用程式發布到 Google Play。

沒有預設值。開發人員必須指定下列其中一個值:

說明
"parental_control"應用程式的設計目的是提供家長監護功能,特別鎖定想要確保兒童安全的家長為目標對象。
"enterprise_management"應用程式的設計目的是專供企業管理及追蹤分配給員工的裝置。
"other"應用程式的用途未於此表中另行指定。
android:killAfterRestore
可指定在完整系統還原作業期間,為有問題的應用程式還原設定後,是否要終止該應用程式。 單一套件還原作業絕不會導致應用程式關閉。完整系統還原操作通常只會在首次設定手機時執行一次。第三方應用程式通常不需要使用這個屬性。

預設值為 true,表示應用程式在完整系統還原作業期間處理完資料後就會終止。

android:largeHeap
是否應使用大型 Dalvik 堆積建立應用程式的處理程序。這適用於為應用程式建立的所有處理程序。這個屬性只會套用到第一個載入至處理程序的應用程式。如果您採用共用的使用者 ID 來允許多個應用程式使用同一個處理程序,則這些應用程式都必須以一致的方式採用此選項,否則會產生無法預測的結果。

大多數的應用程式都不需要此屬性,而應著重在降低整體記憶體用量以提高效能。此外,啟用這個屬性無法保證可用記憶體會增加固定的量,因為某些裝置會受到可用記憶體總量的限制。

如要查詢執行階段的可用記憶體大小,請使用 getMemoryClass()getLargeMemoryClass() 方法。

android:label
使用者可理解的應用程式整體標籤,以及每個應用程式元件的預設標籤。請參閱 <activity><activity-alias><service><receiver><provider> 各自的 label屬性。

這個標籤應設為字串資源的參照,這樣才能像使用者介面中的其他字串一樣進行本地化。不過為了方便起見,您也可以在開發應用程式時將其設為原始字串。

android:logo
整個應用程式的標誌,以及活動的預設標誌。

這個屬性必須設為包含圖片的可繪製資源的參照 (例如 "@drawable/logo")。沒有預設標誌。

android:manageSpaceActivity
活動子類別的完整名稱,系統可啟動該子類別,讓使用者對管理裝置上的應用程式管理佔用的記憶體。也應使用 <activity> 元素宣告該活動。
android:name
為應用程式實作的完整 Application 子類別名稱。應用程式處理程序啟動後,此類別會在應用程式的所有元件之前執行個體化。

該子類別為選用項目,大部分的應用程式都不需要設定。如果沒有子類別,Android 會使用基礎應用程式類別的執行個體。

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:requestLegacyExternalStorage

應用程式是否停用限定範圍儲存空間

注意:視政策或應用程式相容性的相關變更而定,系統可能不會接受這項停用要求。

android:requiredAccountType
指定應用程式運作所需的帳戶類型。 假如您的應用程式需要 Account,這個屬性的值必須符合應用程式使用的帳戶驗證器類型 (由 AuthenticatorDescription 所定義),例如「com.google」。

預設值為空值,表示應用程式不需任何帳戶就能運作。

由於受限的設定檔目前無法新增帳戶,因此指定這項屬性後,受限的設定檔就無法使用您的應用程式,除非您也使用相同的值宣告 android:restrictedAccountType

注意:如果帳戶資料可能揭露個人識別資訊,請務必宣告這個屬性,並讓 android:restrictedAccountType 保留空值,讓受限的設定檔無法使用您的應用程式存取擁有者的使用者個人資訊。

這項屬性於 API 級別 18 中新增。

android:resizeableActivity

指定應用程式是否支援多視窗模式。您可以在 <activity><application> 元素中設定這個屬性。

如果將這個屬性設為 true,使用者就能以分割畫面和任意形式模式啟動活動。如果將屬性設為 false,應用程式就無法在多視窗環境中進行測試或最佳化。系統仍會套用相容模式的多視窗模式活動。此外,將這項屬性設為 True,也無法保證多視窗模式 (例如子母畫面) 或其他螢幕上不會顯示其他應用程式。因此,設定這個旗標並不能確保應用程式具有專屬資源存取權。

如果您的應用程式指定的 API 級別為 24 以上,但您未指定這個屬性的值,則屬性值會預設為 true。

如果您的應用程式指定的 API 級別為 31 以上,則這屬性在小螢幕和大型螢幕上的運作方式都不同:

  • 大螢幕 (sw >= 600dp):所有應用程式皆支援多視窗模式。這個屬性可指出應用程式能否調整大小 (不適用於應用程式是否支援多視窗模式)。設為 resizeableActivity="false" 時,應用程式會在必要時處於相容模式,以符合顯示尺寸。
  • 小螢幕 (sw < 600dp):如果 resizeableActivity="true" 以及主要活動的最小寬度和最小高度都符合多視窗模式的要求,應用程式就會支援多視窗模式。如果設為 resizeableActivity="false",無論活動的最小寬度和高度如何,該應用程式不支援多視窗模式,。

注意事項:裝置製造商可覆寫 API 級別 31 的行為。

這個屬性已新增至 API 級別 24。

注意事項:工作的根活動值會套用至該工作啟動的所有額外活動。也就是說,如果工作的根層級活動可以調整大小,系統就會將工作中的所有其他活動視為可調整大小。如果根層級活動無法調整大小,工作中的其他活動就無法調整大小。

android:restrictedAccountType
指定這個應用程式需要的帳戶類型,並表示允許受限制的設定檔存取屬於擁有者使用者的這類帳戶。假如您的應用程式需要 Account,而且受限的設定檔可存取主要使用者的帳戶,這個屬性的值必須符合應用程式使用的帳戶驗證器類型 (由 AuthenticatorDescription 定義),例如「com.google」。

預設值為空值,表示應用程式不需任何帳戶就能運作。

注意:指定這個屬性後,受限的設定檔就能使用您的應用程式和擁有者的使用者帳戶,而這可能會透露個人識別資訊。如果帳戶可能會顯示個人資訊,您就不應使用這項屬性,而是改為宣告 android:requiredAccountType 屬性,讓受限的設定檔無法使用您的應用程式。

這項屬性於 API 級別 18 中新增。

android:supportsRtl
宣告應用程式是否支援從右至左 (RTL) 的版面配置。

如果將這個屬性設為 true 並將 targetSdkVersion 設為 17 以上,系統將啟用並使用多種 RTL API,讓您的應用程式顯示 RTL 版面配置。 如果將這個屬性設為 false 或將 targetSdkVersion 設為 16 以下,則 RTL API 會遭到忽略或不會具有任何影響力,而且無論使用者選擇的語言代碼採用哪種方向的版面配置,應用程式的行為都不變 (版面配置方向一律為由左至右)。

此屬性的預設值為 false

這項屬性於 API 級別 17 中新增。

android:taskAffinity
表示相依性名稱,適用於應用程式中的所有活動,除了使用專屬 taskAffinity 屬性設定不同相依性的活動以外。詳情請參閱該屬性。

根據預設,應用程式中的所有活動都具有相同的相依性。該相依性名稱與 <manifest> 元素設定的套件名稱相同。

android:testOnly
表示此應用程式是否僅供測試。例如,它可能對外公開功能或資料,這樣會導致安全性漏洞引發,但對於測試非常有用。這類 APK 只能透過 adb 安裝,無法發布到 Google Play。

只要按一下「執行」,Android Studio 就會自動新增這個屬性。

android:theme
對樣式資源的參照,用於為應用程式中的所有活動定義預設主題。個別活動可以透過設定專屬的 theme 屬性來覆寫預設值。詳情請參閱樣式和主題開發人員指南。
android:uiOptions
表示活動使用者介面的額外選項。

必須是下列其中一個值。

說明
"none"沒有額外的 UI 選項。此為預設值。
"splitActionBarWhenNarrow"當水平空間受限時 (例如手機處於直向模式),在畫面底部新增一列,以便在「應用程式列」(又稱為「動作列」) 中顯示操作項目。應用程式列不會顯示在畫面頂端並提供少量操作項目,而是分成畫面頂端的導航部分和底部的操作項目列。這確保了不僅為操作項目,而且為頂端的導航和標題元素提供了合理的空間。選單項目不會分隔成兩個長條。兩者會一同顯示

如要進一步瞭解應用程式列,請參閱「新增應用程式列」的訓練課程。

這項屬性於 API 級別 14 中新增。

android:usesCleartextTraffic
表示應用程式是否打算使用明文網路流量 (例如純文字 HTTP)。 針對以 API 級別 27 以下為目標的應用程式,預設值為 "true"。針對以 API 級別 28 以上為目標的應用程式,則預設為 "false"

屬性設為 "false" 時,HTTP 和 FTP 堆疊、DownloadManagerMediaPlayer 等平台元件會拒絕應用程式使用明文流量的要求。強烈建議第三方資料庫也要遵循這項設定。避免使用明文流量的主要原因在於,這類流量缺乏機密性、真實性以及防範竄改的保護機制。網路攻擊者不僅可以竊聽傳輸的資料,還可以在系統不會偵測到的情況下修改該資料。

系統只能盡可能遵循這個旗標,原因在於根據提供給 Android 應用程式的存取級別,系統不可能防止 Android 應用程式的所有明文流量。比如,Socket API 無法識別流量是否為純文字,因此無法期待它遵循此旗標。不過,來自應用程式的網路流量大多是由較高層級的網路堆疊/元件處理,因此為遵循這個旗標,系統可從 ApplicationInfo.flagsNetworkSecurityPolicy.isCleartextTrafficPermitted() 讀取該旗標。

注意: 針對以 API 級別 26 以上的為目標的應用程式,WebView 遵循此屬性。

在應用程式開發期間,StrictMode 可用來識別應用程式中的所有純無字流量。詳情請參閱 StrictMode.VmPolicy.Builder.detectCleartextNetwork()

這項屬性於 API 級別 23 中新增。

如有 Android 網路安全性設定,則 Android 7.0 (API 級別 24) 以上版本將忽略此旗標。

android:vmSafeMode
表示應用程式是否要讓虛擬機器 (VM) 以安全模式運作。預設值為 "false"

這項屬性於 API 級別 8 新增,其中「true」值會停用 Dalvik 即時(JIT) 編譯器。

此屬性在 API 級別 22 版本中進行調整,其中「true」值會停用 ART 預先 (AOT) 編譯器。

導入版本:
API 級別 1
另請參閱:
<activity>
<service>
<receiver>
<provider>