Sử dụng bộ sưu tập để sắp xếp ngăn nắp các trang Lưu và phân loại nội dung dựa trên lựa chọn ưu tiên của bạn.
cú pháp:
<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>

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
Giá trị của thuộc tính package trong tệp kê khai của APK đại diện cho ID ứng dụng duy nhất trên toàn ứng dụng của bạn. Thuộc tính này phải được định dạng dưới dạng tên gói có ngôn ngữ Java đầy đủ 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.

Vui lòng lưu ý không thay đổi giá trị package, vì điều đó về cơ bản sẽ tạo một ứng dụng mới và người dùng phiên bản trước của ứng dụng sẽ không nhận được bản cập nhật cũng như không thể chuyển dữ liệu qua lại giữa các phiên bản cũ và mới.

Trong hệ thống xây dựng dựa trên Gradle, bắt đầu từ AGP 7.3, bạn không nên đặt giá trị package trong tệp kê khai nguồn trực tiếp. Vui lòng xem phần Đặt ID ứng dụng để biết thêm thông tin chi tiết.

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 đó, bạn không nên sử dụng mã này, và mã này có thể bị xoá trong các phiên bản Android trong tương lai. 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 nhà cung cấp nội dung và dịch vụ, 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ể loại bỏ giá trị này, vì chúng không hỗ trợ di chuyển khỏi mã nhận dạng người dùng chung. Bạn nên thêm android:sharedUserMaxSdkVersion="32" vào các ứng dụng này để tránh việc sử dụng mã nhận dạng người dùng chung trên các lượt cài đặt người dùng mới.

Tên của một 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 đến 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 đó, bạn không nên sử dụng mã này, và mã này có thể bị xoá trong các phiên bản Android trong tương lai. 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 nhà cung cấp nội dung và dịch vụ, 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ể loại bỏ giá trị này, vì chúng không hỗ trợ di chuyển khỏi mã nhận dạng người dùng chung.

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

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 đó, bạn không nên sử dụng mã này, và mã này có thể bị xoá trong các phiên bản Android trong tương lai. 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 nhà cung cấp nội dung và dịch vụ, nhằm hỗ trợ khả năng tương tác giữa các thành phần dùng chung.

Phiên bản SDK tối đa mà hệ thống vẫn sử dụng android:sharedUserId. Nếu ứng dụng mới được cài đặt trên một thiết bị chạy phiên bản SDK cao hơn giá trị được chỉ định, thì ứng dụng của bạn sẽ hoạt động như thể bạn chưa từng xác định android:sharedUserId.

Thuộc tính này ra mắt trong API cấp 33. Đ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ã hoá "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ừ khoá 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 tuỳ 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ã hoá bằng một khoá 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à tuỳ 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>