cú pháp:
<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>

có trong:
không có

phải chứa:
<application>
có thể chứa:
<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>

mô tả:
Phần tử gốc của tệp AndroidManifest.xml. Thành phần này phải chứa một phần tử <application>, đồng thời chỉ định các thuộc tính xmlns:androidpackage.
thuộc tính:
xmlns:android
Xác định vùng chứa tên Android. Thuộc tính này phải luôn được đặt thành "http://schemas.android.com/apk/res/android".
package
Tên gói đầy đủ kiểu ngôn ngữ Java cho ứng dụng Android. Tên có thể chứa chữ hoa hoặc chữ thường ('A' đến 'Z'), số và dấu gạch dưới ('_'). Tuy nhiên, mỗi phần của tên gói chỉ có thể bắt đầu bằng chữ cái.

Trong khi tạo ứng dụng dưới dạng một gói ứng dụng (APK), hệ thống bản dựng sử dụng thuộc tính package cho hai điều:

  • Thuộc tính áp dụng tên này làm không gian tên cho loạiR.java được tạo của ứng dụng (dùng để truy cập vào tài nguyên ứng dụng của bạn).

    Ví dụ: nếu package được đặt thành "com.example.myapp", lớp R sẽ được tạo tại com.example.myapp.R.

  • Tệp cũng lấy tên này để phân giải mọi tên lớp tương đối được khai báo trong tệp kê khai.

    Ví dụ: nếu đặt package thành "com.example.myapp", thì hoạt động khai báo là <activity android:name=".MainActivity"> sẽ được xử lý là com.example.myapp.MainActivity.

Đây cũng là tên mặc định của tiến trình ứng dụng (xem thuộc tính process của phần tử <application>). Đây là đối tượng chung sở thích mặc định cho các hoạt động (vui lòng xem thuộc tính taskAffinity của phần tử <activity>).

Tên này cũng đại diện cho mã ứng dụng. Mã này phải là duy nhất mang tính toàn cầu để phát hành ứng dụng trên Google Play. Tuy nhiên, vào cuối quá trình triển khai, các công cụ bản dựng sẽ ghi đè tên package bằng cách sử dụng thuộc tính applicationId từ tệp build.gradle (do các dự án Android Studio sử dụng) , Việc này không có gì đáng lo ngại miễn bạn giữ tên package của tệp kê khai giống với applicationId của tệp bản dựng. Tuy nhiên, nếu hai giá trị này khác nhau, bạn nên tìm hiểu sự khác biệt giữa "tên gói" và "mã ứng dụng" bằng cách đọc cách đặt mã ứng dụng.

Để tránh xung đột với các nhà phát triển khác, bạn nên sử dụng quyền sở hữu miền Internet làm cơ sở cho tên gói của mình (chẳng hạn đảo ngược tên). Ví dụ: các ứng dụng do Google phát hành sẽ bắt đầu bằng com.google.

Lưu ý: Cả hai vùng chứa com.examplecom.android đều bị Google Play cấm.

Nếu muốn thay đổi tên gói sau khi phát hành ứng dụng, bạn có thể thực hiện việc này, nhưng phải giữ nguyên applicationId. applicationId xác định danh tính riêng của ứng dụng trên Google Play. Vì vậy, nếu bạn thay đổi ứng dụng này, ứng dụng mới sẽ được coi là một ứng dụng khác và người dùng phiên bản trước đó sẽ không nhận được bản cập nhật. Để biết thêm thông tin, hãy xem nội dung cách đặt mã ứng dụng.

android:sharedUserId

Hằng số này không còn được dùng trong API cấp 29 nữa.
User ID (mã nhận dạng người dùng) chung gây ra hành vi không xác định trong trình quản lý gói. Do đó, không nên sử dụng mã này trong phiên bản Android sau này. Thay vào đó, ứng dụng nên sử dụng cơ chế giao tiếp phù hợp, chẳng hạn như các dịch vụ và nhà cung cấp nội dung, nhằm hỗ trợ khả năng tương tác giữa các thành phần dùng chung. Lưu ý các ứng dụng hiện có không thể xóa giá trị này, vì chúng không hỗ trợ di chuyển khỏi User ID (mã nhận dạng người dùng) được chia sẻ.

Tên của một User ID (mã nhận dạng người dùng) Linux sẽ được chia sẻ với các ứng dụng khác. Theo mặc định, Android chỉ định cho mỗi ứng dụng User ID (mã nhận dạng người dùng) duy nhất của riêng ứng dụng đó. Tuy nhiên, nếu thuộc tính này được đặt thành một giá trị cho hai hoặc nhiều ứng dụng, thì tất cả các ứng dụng đó sẽ có cùng một mã, miễn là bộ chứng chỉ của chúng giống nhau. Các ứng dụng có cùng mã người dùng có thể truy cập vào dữ liệu của nhau, ngoài ra còn có thể chạy quy trình đó trong cùng một quy trình nếu muốn.

android:targetSandboxVersion
Target sandbox sử dụng cho ứng dụng này. Mã phiên bản sandbox càng cao thì mức độ bảo mật càng cao. Giá trị mặc định là 1; bạn cũng có thể đặt thành 2. Việc đặt thuộc tính này thành 2 sẽ chuyển ứng dụng sang một SELinux sandbox khác.

Các hạn chế sau áp dụng cho sandbox cấp 2:

  • Giá trị mặc định của usesCleartextTraffic trong Cấu hình bảo mật mạng là false.
  • Không cho phép chia sẻ trợ giúp

Đối với các ứng dụng Android tức thì nhắm mục tiêu phiên bản Android 8.0 (API cấp 26) trở lên, bạn phải đặt thuộc tính này thành 2. Có thể đặt cấp sandbox trong phiên bản cài đặt của ứng dụng thành cấp 1 ít hạn chế hơn. Tuy nhiên, nếu bạn làm như vậy, ứng dụng sẽ không duy trì dữ liệu từ ứng dụng tức thì sang phiên bản đã cài đặt của. Bạn phải đặt giá trị sandbox của ứng dụng đã cài đặt thành 2 để chuyển dữ liệu từ ứng dụng tức thì đến phiên bản đã cài đặt.

Sau khi cài đặt một ứng dụng, bạn chỉ có thể cập nhật target sandbox lên giá trị cao hơn. Để hạ cấp giá trị target sandbox, bạn phải gỡ cài đặt ứng dụng và thay thế bằng một phiên bản mà tệp kê khai chứa giá trị thấp hơn cho thuộc tính này.

android:sharedUserLabel

Hằng số này không còn được dùng trong API cấp 29 nữa.
User ID (mã nhận dạng người dùng) chung gây ra hành vi không xác định trong trình quản lý gói. Do đó, không nên sử dụng mã này trong phiên bản Android sau này. Thay vào đó, ứng dụng nên sử dụng cơ chế giao tiếp phù hợp, chẳng hạn như các dịch vụ và nhà cung cấp nội dung, nhằm hỗ trợ khả năng tương tác giữa các thành phần dùng chung. Lưu ý các ứng dụng hiện có không thể xóa giá trị này, vì chúng không hỗ trợ di chuyển khỏi User ID (mã nhận dạng người dùng) được chia sẻ.

Nhãn người dùng có thể đọc được cho User ID (mã nhận dạng người dùng) được chia sẻ. Nhãn phải được đặt làm tham chiếu đến tài nguyên chuỗi; nó không thể là một chuỗi thô.

Thuộc tính này ra mắt trong API cấp 3. Điều này chỉ có ý nghĩa khi bạn cũng đặt thuộc tính sharedUserId.

android:versionCode
Số phiên bản nội bộ. Số này chỉ được dùng để xác định xem một phiên bản có mới hơn phiên bản khác hay không, số cao hơn đại diện có các phiên bản mới hơn. Đây không phải là số phiên bản hiển thị với người dùng; số đó được đặt bởi thuộc tính versionName.

Giá trị phải được đặt là số nguyên dương lớn hơn 0. Bạn có thể xác định dữ liệu này theo ý muốn, miễn là mỗi phiên bản kế tiếp luôn có số cao hơn. Ví dụ: số này có thể là số bản dựng. Hoặc bạn có thể dịch số phiên bản ở định dạng "xy" sang số nguyên bằng cách mã hóa "x" và "y" riêng biệt trong khoảng trên dưới 16 bit. Hoặc bạn chỉ cần tăng thêm một số mỗi lần ra phiên bản mới.

android:versionName
Số phiên bản hiển thị cho người dùng. Thuộc tính này có thể được đặt dưới dạng chuỗi thô hoặc tham chiếu đến một tài nguyên chuỗi. Chuỗi này không có mục đích nào khác ngoài hiển thị cho người dùng. Thuộc tính versionCode chứa số phiên bản quan trọng được sử dụng nội bộ.
android:installLocation
Vị trí cài đặt mặc định cho ứng dụng.

Các chuỗi từ khóa sau được chấp nhận:

Giá trị Mô tả
"internalOnly" Ứng dụng chỉ được cài đặt trên bộ nhớ trong của thiết bị. Nếu bạn đặt chính sách này, ứng dụng sẽ không bao giờ được cài đặt trên bộ nhớ ngoài. Nếu bộ nhớ trong đã đầy, hệ thống sẽ không cài đặt ứng dụng. Đây cũng là chế độ mặc định nếu bạn không xác định android:installLocation.
"auto" Ứng dụng cũng có thể được cài đặt trên bộ nhớ ngoài, nhưng hệ thống sẽ cài đặt trên bộ nhớ trong theo mặc định. Nếu bộ nhớ trong đã đầy, hệ thống sẽ cài đặt bộ nhớ ngoài đó. Sau khi cài đặt, người dùng có thể chuyển ứng dụng sang bộ nhớ trong hoặc bộ nhớ ngoài thông qua phần cài đặt hệ thống.
"preferExternal" Ứng dụng muốn được cài đặt trên bộ nhớ ngoài (thẻ SD). Hệ thống có thể sẽ không chấp thuận yêu cầu này. Ứng dụng có thể được cài đặt trên bộ nhớ trong nếu nội dung nghe nhìn bên ngoài không có hoặc đã đầy. Sau khi cài đặt, người dùng có thể chuyển ứng dụng sang bộ nhớ trong hoặc bộ nhớ ngoài thông qua các tùy chọn cài đặt hệ thống.

Lưu ý: Theo mặc định, ứng dụng sẽ được cài đặt trên bộ nhớ trong và không thể cài đặt trên bộ nhớ ngoài, trừ khi bạn quy định thuộc tính này là "auto" hoặc "preferExternal".

Khi một ứng dụng được cài đặt ở bộ nhớ ngoài:

  • Tệp .apk được lưu vào bộ nhớ ngoài, nhưng mọi dữ liệu ứng dụng (chẳng hạn như cơ sở dữ liệu) vẫn được lưu vào bộ nhớ trong của thiết bị.
  • Vùng chứa lưu tệp .apk được mã hóa bằng một khóa cho phép ứng dụng chỉ hoạt động trên thiết bị đã cài đặt tệp. (Người dùng không thể chuyển thẻ SD sang một thiết bị khác và sử dụng các ứng dụng đã cài đặt trên thẻ.) Tuy nhiên, bạn có thể sử dụng nhiều thẻ SD với cùng một thiết bị.
  • Theo yêu cầu của người dùng, ứng dụng có thể được chuyển vào bộ nhớ trong.

Người dùng cũng có thể yêu cầu di chuyển ứng dụng từ bộ nhớ trong sang bộ nhớ ngoài. Tuy nhiên, hệ thống sẽ không cho phép người dùng chuyển ứng dụng sang bộ nhớ ngoài nếu thuộc tính này được đặt là internalOnly, đây cũng là tùy chọn cài đặt mặc định.

Vui lòng đọc Vị trí cài đặt ứng dụng để biết thêm thông tin về cách sử dụng thuộc tính này (bao gồm cách duy trì khả năng tương thích ngược).

Ra mắt trong: API cấp 8.

ra mắt từ:
API cấp 1 đối với tất cả các thuộc tính, trừ khi có lưu ý khác trong phần mô tả thuộc tính.

xem thêm:
<application>