Đáp ứng yêu cầu của Google Play về cấp độ API mục tiêu

Khi bạn tải một tệp APK lên, tệp này phải đáp ứng các yêu cầu về cấp độ API mục tiêu của Google Play.

Kể từ ngày 31 tháng 8 năm 2023:

  • Ứng dụng mới phải nhắm đến Android 13 (API cấp 33) trở lên; ngoại trừ các ứng dụng Wear OS nhắm đến phiên bản từ Android 11 (API cấp 30) đến Android 13 (API cấp 33).

  • Các bản cập nhật ứng dụng phải nhắm đến Android 13 trở lên và điều chỉnh cho phù hợp với những thay đổi về hành vi trong Android 13; ngoại trừ các ứng dụng Wear OS phải nhắm đến Android 11.

Các ứng dụng riêng tư vĩnh viễn – chỉ dành cho người dùng trong một tổ chức cụ thể và chỉ nhằm phân phối nội bộ – không cần phải đáp ứng các yêu cầu về cấp độ API mục tiêu.

Lưu ý: Kể từ năm 2022, một số ứng dụng lỗi thời sẽ không hiển thị đối với người dùng mới sở hữu các thiết bị chạy phiên bản Android mới hơn.

Tại sao nên nhắm mục tiêu đến các SDK mới hơn?

Mỗi phiên bản Android mới đều có các thay đổi nhằm cải thiện hiệu suất và bảo mật, đồng thời nâng cao trải nghiệm người dùng Android. Một số thay đổi này chỉ áp dụng cho những ứng dụng tuyên bố rõ ràng là có hỗ trợ thông qua thuộc tính tệp kê khai targetSdkVersion của ứng dụng (còn được gọi là cấp độ API mục tiêu).

Việc định cấu hình ứng dụng để đáp ứng một cấp độ API mới giúp đảm bảo rằng người dùng có thể hưởng lợi từ những cải tiến này, trong khi ứng dụng của bạn vẫn có thể chạy trên những phiên bản Android cũ. Việc nhắm mục tiêu đến một cấp API mới cũng cho phép ứng dụng của bạn tận dụng các tính năng mới nhất của nền tảng để làm hài lòng người dùng. Hơn nữa, kể từ Android 10 (API cấp 29), người dùng sẽ thấy một cảnh báo khi khởi động ứng dụng lần đầu nếu ứng dụng đó nhắm đến Android 5.1 (API cấp 22) hoặc thấp hơn.

Tài liệu này nêu bật những điểm quan trọng bạn cần phải biết khi cập nhật cấp độ API mục tiêu để đáp ứng yêu cầu của Google Play.

Khi chuyển từ phiên bản thấp hơn, vui lòng xem danh sách đầy đủ các thay đổi bên dưới.

Lưu ý: Nếu tệp Gradle của bạn có chứa các mục trong tệp kê khai, bạn có thể xác nhận hoặc thay đổi giá trị hiện tại của targetSdkVersion trong tệp Gradle của ứng dụng, như mô tả trong phần Định cấu hình bản dựng của bạn. Ngoài ra, bạn có thể sử dụng thuộc tính android:targetSdkVersion trong tệp kê khai, như mô tả trong tài liệu cho phần tử tệp kê khai <uses-sdk>.

Di chuyển từ Android 12 (API cấp 31) sang Android 13 (API cấp 33)

Để cập nhật ứng dụng nhắm đến Android 13, hãy làm theo danh sách các thay đổi về hành vi.

Di chuyển từ Android 11 (API cấp 30) sang Android 12 (API cấp 31)

Tính bảo mật và quyền truy cập

Trải nghiệm người dùng

  • Thông báo tuỳ chỉnh: Thông báo có khung hiển thị nội dung tuỳ chỉnh sẽ không còn sử dụng khu vực thông báo đầy đủ; thay vào đó, hệ thống sẽ áp dụng một mẫu chuẩn. Mẫu này đảm bảo rằng thông báo tuỳ chỉnh có cách trang trí giống như các thông báo khác ở tất cả các trạng thái. Hành vi này gần giống với hành vi của Notification.DecoratedCustomViewStyle.
  • Các thay đổi đối với quy trình xác minh Đường liên kết trong ứng dụng Android: Khi sử dụng tính năng xác minh Đường liên kết ứng dụng Android, hãy đảm bảo rằng bộ lọc ý định của bạn bao gồm danh mục BROWSABLE và hỗ trợ lược đồ HTTPS.

Hiệu suất

  • Hạn chế chạy dịch vụ trên nền trước: Để nhắm mục tiêu Android 12 trở lên, ứng dụng của bạn không thể bắt đầu các dịch vụ trên nền trước trong khi chạy ở chế độ nền, ngoại trừ một vài trường hợp đặc biệt. Nếu một ứng dụng cố gắng bắt đầu một dịch vụ trên nền trước trong khi chạy ở chế độ nền, thì sẽ có ngoại lệ (ngoại trừ một vài trường hợp đặc biệt).

    Cân nhắc sử dụng WorkManager để lên lịch và bắt đầu công việc ưu tiên trong khi ứng dụng của bạn chạy ở chế độ nền. Để hoàn tất các thao tác cần chính xác về thời gian mà người dùng yêu cầu, hãy bắt đầu các dịch vụ trên nền trước trong phạm vi chuông báo chính xác.

  • Hạn chế về thành phần phản hồi với thao tác nhấn vào thông báo (notification trampoline): Khi người dùng nhấn vào thông báo, một số ứng dụng sẽ phản hồi bằng cách chạy thành phần ứng dụng bắt đầu hoạt động mà người dùng nhìn thấy và tương tác. Thành phần ứng dụng này được gọi là thành phần phản hồi với thao tác nhấn vào thông báo.

    Ứng dụng không được bắt đầu hoạt động từ các dịch vụ hoặc broadcast receiver dùng làm thành phần phản hồi với thao tác nhấn vào thông báo. Sau khi người dùng nhấn vào một thông báo hoặc nút hành động trong thông báo, ứng dụng của bạn sẽ không thể gọi startActivity() bên trong một dịch vụ hoặc broadcast receiver.

Xem toàn bộ các thay đổi ảnh hưởng đến ứng dụng nhắm mục tiêu Android 12 (API cấp 31).

Di chuyển từ phiên bản Android 11 trở xuống (API cấp 30)

Chọn phiên bản Android bạn sẽ di chuyển khỏi:

Di chuyển sang Android 5 (API cấp 21)

Xem trang Các thay đổi về hành vi tương ứng với từng bản phát hành sau đây để đảm bảo ứng dụng của bạn đã có các thay đổi được giới thiệu trong những bản phát hành này:

Tiếp tục bằng cách làm theo hướng dẫn ở phần tiếp theo.

Di chuyển sang Android 6 (API cấp 23)

Những điểm cần cân nhắc sau đây áp dụng cho các ứng dụng nhắm đến Android 6.0 và các phiên bản cao hơn của nền tảng này:

  • Quyền khi bắt đầu chạy

    • Các quyền nguy hiểm chỉ được cấp khi bắt đầu chạy. Luồng giao diện người dùng (UI flows) của bạn phải cung cấp các thành phần cho phép cấp những quyền này.

    • Bất cứ khi nào có thể, hãy đảm bảo rằng ứng dụng của bạn sẵn sàng xử lý sự từ chối đối với các yêu cầu cấp quyền. Ví dụ: nếu người dùng từ chối yêu cầu truy cập vào GPS của thiết bị, hãy đảm bảo ứng dụng của bạn có cách khác để tiếp tục.

Để có danh sách đầy đủ các thay đổi có trong Android 6.0 (API cấp 23), hãy xem trang Các thay đổi về hành vi cho phiên bản nền tảng đó.

Tiếp tục bằng cách làm theo hướng dẫn ở phần tiếp theo.

Di chuyển sang Android 7 (API cấp 24)

Những điểm cần cân nhắc sau đây áp dụng cho các ứng dụng nhắm đến Android 7.0 và các phiên bản cao hơn của nền tảng này:

  • Chế độ Nghỉ và Chế độ chờ ứng dụng

    Nội dung thiết kế cho các hành vi được mô tả ở phần Tối ưu hoá cho chế độ Nghỉ và Chế độ chờ ứng dụng, bao gồm các thay đổi gia tăng có trong một số bản phát hành của nền tảng.

    Khi thiết bị ở vào chế độ Nghỉ và Chế độ chờ ứng dụng, hệ thống sẽ hoạt động như sau:

  • Các thay đổi về quyền

    • Hệ thống hạn chế quyền truy cập vào các thư mục riêng tư của ứng dụng.
    • Việc hiển thị một URI file:// bên ngoài ứng dụng của bạn sẽ kích hoạt FileUriExposedException. Nếu bạn cần chia sẻ tệp ra bên ngoài ứng dụng, hãy triển khai FileProvider
  • Hệ thống cấm việc liên kết với các thư viện không phải NDK.

Để có danh sách đầy đủ các thay đổi có trong Android 7.0 (API cấp 24), hãy xem trang Các thay đổi về hành vi cho phiên bản nền tảng đó.

Tiếp tục bằng cách làm theo hướng dẫn ở phần tiếp theo.

Di chuyển sang Android 8 (API cấp 26)

Những điểm cần cân nhắc sau đây áp dụng cho các ứng dụng nhắm đến Android 8.0 và các phiên bản cao hơn của nền tảng này:

Để có danh sách đầy đủ các thay đổi được giới thiệu trên Android 8.0 (API cấp 26), hãy xem trang Các thay đổi về hành vi cho phiên bản nền tảng đó.

Di chuyển từ Android 8 (API 26) sang Android 9 (API 28)

Để xem danh sách đầy đủ các thay đổi được giới thiệu trong Android 9.0 (API cấp 28), hãy xem phần thay đổi về hành vi.

Di chuyển từ Android 9 (API cấp 28) sang Android 10 (API cấp 29)

Di chuyển từ Android 10 (API cấp 29) sang Android 11 (API cấp 30)

Để xem danh sách đầy đủ các thay đổi được giới thiệu trên Android 11 (API cấp 30), hãy xem trang Các thay đổi về hành vi.

Hãy tiếp tục cập nhật lên API 31 bằng cách làm theo các hướng dẫn trong phần trước.

Hiện đại hoá ứng dụng của bạn

Khi cập nhật cấp độ API mục tiêu cho ứng dụng, hãy cân nhắc việc áp dụng các tính năng gần đây của nền tảng để hiện đại hoá ứng dụng của bạn và làm hài lòng người dùng.

  • Hãy sử dụng CameraX (đang trong giai đoạn thử nghiệm) để khai thác tối đa việc sử dụng máy ảnh.
  • Sử dụng các thành phần Jetpack để giúp bạn thực hiện các phương pháp tối ưu nhất mà không phải viết các mã nguyên mẫu, đồng thời đơn giản hoá các tác vụ phức tạp để bạn có thể tập trung vào các mã mà bạn quan tâm.
  • Sử dụng Kotlin để viết ứng dụng tốt hơn nhanh hơn và với ít mã hơn.
  • Hãy đảm bảo bạn tuân thủ các phương pháp tối ưu và các yêu cầu về quyền riêng tư.
  • Thêm tính năng hỗ trợ cho giao diện tối vào ứng dụng.
  • Thêm tuỳ chọn hỗ trợ thao tác bằng cử chỉ vào các ứng dụng của bạn.
  • Di chuyển ứng dụng từ dịch vụ Gửi thông báo qua đám mây của Google (GCM) sang Giải pháp gửi thông báo qua đám mây của Firebase phiên bản mới nhất.
  • Tận dụng tính năng quản lý cửa sổ nâng cao.

Kiểm tra và cập nhật SDK cũng như thư viện của bạn

Hãy đảm bảo rằng các phần phụ thuộc SDK bên thứ ba của bạn hỗ trợ API 31: Một số nhà cung cấp SDK phát hành nội dung này trong tệp kê khai của họ; số khác sẽ cần phải điều tra thêm. Nếu bạn sử dụng một SDK không hỗ trợ API 31, hãy ưu tiên làm việc với nhà cung cấp SDK để giải quyết vấn đề này.

Ngoài ra, xin lưu ý rằng targetSdkVersion của ứng dụng hoặc trò chơi có thể hạn chế quyền truy cập vào thư viện nền tảng Android riêng tư; xem phần Các ứng dụng NDK liên kết với thư viện nền tảng để biết chi tiết.

Bạn cũng nên xác minh mọi hạn chế có thể tồn tại trong phiên bản Thư viện hỗ trợ Android mà bạn đang sử dụng. Như mọi khi, bạn phải đảm bảo tính tương thích giữa phiên bản chính của Thư viện hỗ trợ Android và compileSdkVersion của ứng dụng.

Bạn nên chọn targetSdkVersion nhỏ hơn hoặc bằng phiên bản chính của Thư viện hỗ trợ. Chúng tôi khuyến khích bạn cập nhật lên phiên bản Thư viện hỗ trợ tương thích gần đây để tận dụng các tính năng tương thích mới nhất và các bản sửa lỗi.

Kiểm thử ứng dụng

Sau khi cập nhật cấp API của ứng dụng và các tính năng phù hợp, bạn nên kiểm tra một số trường hợp sử dụng chính. Các đề xuất sau đây không mang tính toàn diện mà chỉ nhằm mục đích hướng dẫn quy trình thử nghiệm của bạn. Bạn nên kiểm tra xem:

  • Ứng dụng của bạn biên dịch thành API 29 mà không gặp phải lỗi hoặc cảnh báo.
  • Ứng dụng của bạn có chiến lược cho các trường hợp người dùng từ chối yêu cầu cấp quyền và nhắc người dùng cấp quyền. Cách làm như sau:
    • Chuyển đến màn hình Thông tin ứng dụng và vô hiệu hoá từng quyền.
    • Mở ứng dụng và đảm bảo rằng không xảy ra sự cố.
    • Thực hiện các thử nghiệm trường hợp sử dụng chính và đảm bảo rằng các quyền bắt buộc được nhắc lại.

  • Xử lý chế độ Nghỉ với kết quả dự kiến và không có lỗi.
    • Sử dụng adb, đặt thiết bị thử nghiệm của bạn ở chế độ Nghỉ trong khi ứng dụng của bạn đang chạy.
      • Kiểm thử bất kỳ trường hợp sử dụng nào kích hoạt thông báo qua Giải pháp gửi thông báo qua đám mây của Firebase.
      • Thử nghiệm bất kỳ trường hợp sử dụng nào có dùng đến Báo thức hoặc Công việc.
      • Loại bỏ bất kỳ phần phụ thuộc nào có trên các dịch vụ nền.
    • Đặt ứng dụng của bạn ở Chế độ chờ ứng dụng
      • Kiểm thử bất kỳ trường hợp sử dụng nào kích hoạt thông báo qua Giải pháp gửi thông báo qua đám mây của Firebase.
      • Kiểm thử bất kỳ trường hợp sử dụng nào có dùng đến Chuông báo.

  • Xử lý ảnh / video mới đang được chụp hoặc quay
  • Xử lý chia sẻ tệp cho các ứng dụng khác
    • Kiểm thử mọi trường hợp sử dụng có chia sẻ dữ liệu tệp với bất kỳ ứng dụng nào khác (kể cả một ứng dụng khác của cùng nhà phát triển)
    • Thử nghiệm nội dung hiển thị trong ứng dụng khác và không gây ra sự cố.

Thông tin khác

Hãy Chọn nhận email trong Google Play Console để chúng tôi có thể gửi cho bạn các thông tin cập nhật và thông báo quan trọng từ Android và Google Play, bao gồm cả bản tin hằng tháng của chúng tôi về đối tác.