- 語法:
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="string" android:sharedUserId="string" android:sharedUserLabel="string resource" 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:android
及package
屬性。 - 屬性:
-
xmlns:android
- 定義 Android 命名空間。此屬性應一律設為「
http://schemas.android.com/apk/res/android
」。 package
- Android 應用程式的完整 Java 語言樣式套件名稱。名稱可包含大小寫字母 (「A」到「Z」)、號碼和底線 (_)。不過,個別套件名稱部分只能以英文字母作為開頭。
將應用程式建構到應用程式套件 (APK) 時,建構系統會使用
package
屬性進行以下兩項操作:- 此名稱會做為應用程式產生的
R.java
類別的命名空間(用於存取應用程式資源)。舉例來說,如果
package
設為"com.example.myapp"
,系統就會在com.example.myapp.R
建立R
類別。 - 此名稱會用來解析資訊清單檔案所宣告的任何相關類別名稱。
舉例來說,如果
package
設為"com.example.myapp"
,則宣告為<activity android:name=".MainActivity">
的活動會解析為com.example.myapp.MainActivity
。
此名稱也是應用程式作業的預設名稱(請參閱
<application>
元素的process
屬性)。此外,它也會被視為活動所預設的工作同質性(請參閱<activity>
元素的taskAffinity
屬性)。此名稱也代表了應用程式 ID,在 Google Play 中發布應用程式時,此 ID 不可重複。不過,在建構程序最後,建構工具會使用
build.gradle
檔案的applicationId
屬性(為 Android Studio 專案所使用)將package
名稱覆寫過去。只要資訊清單的package
名稱與建構檔案的applicationId
相同,就不必擔心有問題。不過,如果兩個值不同,請參閱如何設定應用程式 ID一文,瞭解「套件名稱」及「應用程式 ID」之間的差異。為了避免與其他開發人員產生衝突,您應使用網際網路網域的擁有權做為套件名稱的基礎(以反向的方式表示)。舉例來說,Google 發布的應用程式開頭為
com.google
。注意:Google Play 禁止使用
com.example
及com.android
命名空間。發布應用程式後,如果想變更套件名稱 沒有問題,但是必須保持一致的
applicationId
。applicationId
定義了應用程式在 Google Play 上唯一的使用者身分。因此,如果您將其變更,系統就會將新版應用程式視為不同的應用程式,而舊版的使用者就不會收到更新。詳情請參閱如何設定應用程式 ID 一文。 - 此名稱會做為應用程式產生的
android:sharedUserId
-
此常數已從 API 級別 29 中淘汰。
共用的使用者 ID 在套件管理器中會造成不確定因素的行為。因此,強烈建議您不要使用,而且日後推出的 Android 版本可能會予以移除。因此,應用程式應採用適當的通訊機制(例如服務和內容供應者),促進共用元件之間的互通性。請注意,現有應用程式不支援移除共用使用者 ID,因此無法移除此值。與其他應用程式共用 Linux 使用者 ID 的名稱。 在預設的情況下,Android 會為每個應用程式指派不會重複的使用者 ID。但是,如果兩個以上的應用程式針對此屬性設定成相同的值,只要其憑證集都相同,就會共用相同的 ID。擁有相同使用者 ID 的應用程式可存取彼此的資料,如有需要,也會在同一個程序中執行。
android:targetSandboxVersion
- 此應用程式要使用的目標沙箱。沙箱版本號碼越高,安全性等級就越高。預設值為
1
;您也可以將該值設為2
。 只要將這項屬性設為2
,應用程式就會切換至其他 SELinux 沙箱。以下限制適用於第 2 級沙箱:
- 網路安全性設定中的
usesCleartextTraffic
預設值為否。 - 不允許共用 Uid。
如果 Android 免安裝應用程式指定 Android 8.0(API 級別 26)或更高版本,則這項屬性必須設為 2。您可以將已安裝的應用程式版本的沙箱等級設為限制較低的 1 級,但這樣一來,應用程式就不會將免安裝應用程式中的應用程式資料傳送至已安裝的版本。您必須將已安裝應用程式的沙箱值設為 2,才能讓資料從免安裝應用程式保留到已安裝版本。
應用程式安裝完畢後,只能將目標沙箱更新至更高的值。若要將目標的沙箱值降級,必須解除安裝應用程式,並替換為這個屬性的資訊清單具有較低的值的版本。
- 網路安全性設定中的
android:sharedUserLabel
-
此常數已從 API 級別 29 中淘汰。
共用的使用者 ID 在套件管理器中會造成不確定因素的行為。因此,強烈建議您不要使用,而且日後推出的 Android 版本可能會予以移除。因此,應用程式應採用適當的通訊機制(例如服務和內容供應者),促進共用元件之間的互通性。請注意,現有應用程式不支援移除共用使用者 ID,因此無法移除此值。共用使用者 ID 的使用者的可讀標籤。該標籤必須設定為參照某字串資源;但不能是原始字串。
此屬性在 API 級別 3 中推出。只有同時設定了
sharedUserId
屬性,此屬性才有意義。 android:versionCode
- 內部版本號碼。該號碼只是用來判斷某版本是否比另一個版本新,號碼越大表示版本越新。這不是使用者看到的版本號碼;該號碼是由
versionName
屬性設定。此值必須設為大於 0 的正整數。您可以用自己想要的方式定義,只要每個後續版本的號碼都更高即可。舉例來說,可以是版本號碼。或者,您也可以將「x」和「y」分別編碼為低於或高於 16 位元的格式,將 "x.y" 格式的號碼轉換為整數。或者,您可以在每次發佈新版本時將這個號碼加 1。
android:versionName
- 顯示給使用者的版本號碼。此屬性可設為原始字串,或參照某字串資源。字串單純是為了用來對使用者顯示。
versionCode
屬性保存了內部使用的重要版本號碼。 android:installLocation
- 應用程式的預設安裝位置。
可接受以下關鍵字字串:
值 說明 「 internalOnly
」應用程式只能安裝在裝置的內部儲存空間上。如果設定了這個值,系統就不會在外部儲存空間上安裝應用程式。如果內部儲存空間已滿,系統就不會安裝應用程式。如果您並未定義 android:installLocation
,這也會是預設的行為。「 auto
」應用程式可以安裝在外部儲存空間上,但系統預設會將應用程式安裝在內部儲存空間上。如果內部儲存空間已滿,系統會安裝在外部儲存空間。安裝完成後,使用者可以透過系統設定將應用程式移至內部或外部儲存空間。 「 preferExternal
」應用程式優先選擇安裝在外部儲存空間(SD 卡)上。無法保證系統一定會回應這項要求。如果外部媒體無法使用或已滿,則可能會在內部儲存空間上安裝應用程式。安裝完成後,使用者可以透過系統設定將應用程式移至內部或外部儲存空間。 注意:根據預設,您必須將應用程式安裝在內部儲存空間中,而且無法安裝在外部儲存空間,除非您將這項屬性定義為「
auto
」或「preferExternal
」。在外部儲存空間上安裝應用程式時:
.apk
檔案會儲存在外部儲存空間,但所有應用程式資料(例如資料庫)仍會儲存在內部裝置的記憶體中。- 儲存
.apk
檔案的容器會以金鑰進行加密,該金鑰可讓應用程式僅可在安裝該檔案的裝置上運作。(使用者無法將 SD 卡轉移至其他裝置,也無法使用安裝在卡上的應用程式)。不過,同一部裝置可以同時使用多張 SD 卡。 - 若使用者要求,應用程式可以移至內部儲存空間。
使用者也可以要求將應用程式從內部儲存空間移至外部儲存空間。但是,如果將這項屬性設為
internalOnly
(預設設定),使用者就無法將應用程式移至外部儲存空間。請參閱應用程式安裝位置一文,進一步瞭解如何使用這項屬性(包括如何維持回溯相容性)。
導入版本:API 級別 8。
- 導入版本:
- 適用於所有屬性的 API 級別 1(屬性說明另有註明者除外)。
- 另請參閱:
-
<application>