<manifest>

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

包含於:

必須包含:
<application>
可包含:
<compatible-screens>
<instrumentation>
<permission>
<permission-group>
<permission-tree>
<queries>
<supports-gl-texture>
<supports-screens>
<uses-configuration>
<uses-feature>
<uses-permission>
<uses-permission-sdk-23>
<uses-sdk>

說明:
AndroidManifest.xml 檔案的根元素。其中必須包含 <application> 元素,並指定 xmlns:androidpackage 屬性。
屬性:
xmlns:android
定義 Android 命名空間。這個屬性一律設為 "http://schemas.android.com/apk/res/android"
package
APK 資訊清單檔案內的 package 屬性值代表應用程式的通用唯一應用程式 ID。如果是 Android 應用程式,套件名稱格式必須是完整的 Java 語言樣式。名稱可包含大寫或小寫字母、數字及底線 (「_」)。不過,個別套件名稱部分只能以英文字母做為開頭。

請注意不要變更 package 的值,因為變更後等同於建立新的應用程式,如此一來,舊版應用程式的使用者便無法收到更新,也不能在新舊版本間轉移資料。

在以 Gradle 為基礎的建構系統中,從 AGP 7.3 起,請不要直接在來源資訊清單檔案中設定 package 的值。詳情請參閱「設定應用程式 ID」。

android:sharedUserId

此常數已於 API 級別 29 淘汰。
共用使用者 ID 在套件管理器中會造成不確定因素的行為。因此,強烈建議您不要使用。我們可能會在日後推出的 Android 版本中移除這個屬性。請改用適當的通訊機制 (例如服務和內容供應者),以促進共用元件之間的互通性。現有應用程式不支援移除共用使用者 ID,因此無法移除此值。請在這些應用程式中新增 android:sharedUserMaxSdkVersion="32",避免在新使用者安裝時使用共用使用者 ID。

與其他應用程式共用的 Linux 使用者 ID 名稱。根據預設,Android 會為每個應用程式指派不會重複的使用者 ID。但是,如果兩個以上的應用程式針對此屬性設定相同的值,只要其憑證集都相同,就會全部共用相同的 ID。擁有相同使用者 ID 的應用程式可存取彼此的資料,如果使用者想在同一個程序中執行這些應用程式也沒問題。

android:targetSandboxVersion
此應用程式要使用的目標沙箱。沙箱版本號碼越高,安全性等級就越高。預設值為 1;您也可以將該值設為 2。 只要將這項屬性設為 2,應用程式就會切換至其他 SELinux 沙箱。

以下限制適用於等級 2 沙箱:

如果 Android 免安裝應用程式指定 Android 8.0 (API 級別 26) 以上版本,則這項屬性必須設為 2。您可以在應用程式的安裝版本中將沙箱等級設為限制較少的等級 1。不過這樣一來,應用程式就不會將免安裝應用程式中的應用程式資料儲存到安裝版應用程式。您必須將安裝版應用程式的沙箱值設為 2,才能讓資料從免安裝應用程式儲存到已安裝版本。

應用程式安裝完畢後,只能將目標沙箱更新至更高的值。若要降級目標沙箱值,請將該應用程式解除安裝並更換版本,且在新版本的資訊清單中,該屬性值必須小於前值。

android:sharedUserLabel

此常數已於 API 級別 29 淘汰。
共用使用者 ID 在套件管理器中會造成不確定因素的行為。因此,強烈建議您不要使用。我們可能會在日後推出的 Android 版本中移除這個屬性。請改用適當的通訊機制 (例如服務和內容供應者),以促進共用元件之間的互通性。現有應用程式不支援停用共用使用者 ID,因此無法移除此值。

共用使用者 ID 的使用者可理解的標籤。這個標籤應設為字串資源的參照,不能是原始字串。

這項屬性是在 API 級別 3 中導入。只有同時設定了 sharedUserId 屬性,此屬性才有意義。

android:sharedUserMaxSdkVersion

共用的使用者 ID 會在套件管理員中造成不確定因素的行為。因此,強烈建議您不要使用。我們可能會在日後推出的 Android 版本中移除這個屬性。請改用適當的通訊機制 (例如服務和內容供應者),以促進共用元件之間的互通性。

最高 SDK 版本,而系統仍使用 android:sharedUserId。如果您最近在裝置上安裝了應用程式,且裝置搭載的 SDK 版本高於指定值,則應用程式會如從未定義過 android:sharedUserId 一般運作。

這項屬性是在 API 級別 33 中導入。只有同時設定了 sharedUserId 屬性,此屬性才有意義。

android:versionCode
內部版本號碼。該號碼只是用來判斷某版本是否比另一個版本更新,號碼越大表示版本越新。這不是透過 versionName 屬性設定,使用者看到的版本號碼。

此值必須設為大於 0 的正整數。您可以用自己想要的方式定義,只要每個後續版本的號碼更高即可。 舉例來說,它可以是版本號碼,或者,您也可以將「x」和「y」分別編碼為低於和高於 16 位元的格式,將「x.y」格式的版本號碼轉譯為整數。或者,您可以在每次發布新版本時將這個數字加 1。

android:versionName
向使用者顯示的版本號碼。此設定可設定為原始字串,或是字串資源的參照。字串只是用來向使用者顯示,沒有其他用途。versionCode 屬性保存了內部使用的重要版本號碼。
android:installLocation
應用程式的預設安裝位置。 可接受以下關鍵字字串:

說明
"internalOnly" 應用程式只會在內部裝置儲存空間中安裝。如果設定了這個值,應用程式就不會在外部儲存空間 (例如 SD 卡) 中安裝。如果內部儲存空間已滿,系統就不會安裝應用程式。如果您未定義 android:installLocation,這會是預設行為。
"auto" 應用程式可以安裝在外部儲存空間中,但系統預設會將應用程式安裝在內部儲存空間中。如果內部儲存空間已滿,系統會在外部儲存空間安裝應用程式。安裝完成後,使用者可以透過系統設定將應用程式移至內部或外部儲存空間。
"preferExternal" 應用程式優先安裝在外部儲存空間。我們無法保證系統一定會回應這項要求。如果外部儲存媒體無法使用或已滿,則系統可能會在內部儲存空間中安裝應用程式。安裝完成後,使用者可以透過系統設定將應用程式移至內部或外部儲存空間。

注意:根據預設,您的應用程式會安裝在內部儲存空間中,除非您將這項屬性定義為 "auto""preferExternal",否則無法安裝在外部儲存空間。

如果在外部儲存空間中安裝應用程式:

  • APK 檔案會儲存在外部儲存空間,但所有應用程式資料 (例如資料庫) 仍會儲存在內部裝置的記憶體中。
  • 儲存 APK 檔案的容器會以金鑰進行加密,該金鑰可讓應用程式僅可在安裝該檔案的裝置上運作。使用者無法將 SD 卡轉移至其他裝置,也無法使用安裝在卡上的應用程式。不過,同一部裝置可以同時使用多張 SD 卡。
  • 因應使用者要求,應用程式可以移至內部儲存空間。

使用者也可以要求將應用程式從內部儲存空間移至外部儲存空間。不過,如果這項屬性設為 "internalOnly" (此為預設設定),使用者就無法將應用程式移至外部儲存空間。

如要進一步瞭解如何使用這個屬性,包括如何維持回溯相容性,請參閱「應用程式安裝位置」。

導入版本:API 級別 8。

導入版本:
為所有屬性導入 API 級別 1 (在屬性說明中另行註明者除外)。

另請參閱:
<application>