Hướng dẫn này giải thích cách nền tảng Android và Google Play xử lý các bản cập nhật ứng dụng, đồng thời trình bày về những lựa chọn dành cho các nhà phát triển xuất bản ứng dụng trên nhiều cửa hàng ứng dụng.
Cách Android xử lý bản cập nhật ứng dụng
Mỗi ứng dụng Android đều có một mã ứng dụng duy nhất có dạng như tên gói Java hoặc Kotlin, chẳng hạn như com.example.myapp
. Mã này giúp xác định riêng biệt từng ứng dụng trên thiết bị. Tại mỗi thời điểm, mỗi thiết bị Android chỉ có thể có một ứng dụng đã cài đặt mang một mã ứng dụng nhất định.
Để nền tảng Android chấp nhận bản cập nhật, các điều kiện sau đây phải được đáp ứng:
- Mã ứng dụng của bản cập nhật phải giống với ứng dụng đã cài đặt.
- Chứng chỉ ký của bản cập nhật phải giống với chứng chỉ ký của ứng dụng đã cài đặt hoặc phải chứa một proof-of-rotation hợp lệ.
- Mã phiên bản của bản cập nhật phải cao hơn hoặc bằng mã phiên bản của ứng dụng đã cài đặt.
- Trong một số trường hợp, có thể người dùng cần phải chấp nhận bản cập nhật.
Xin lưu ý rằng không có sẵn tính năng nào ngăn các trình cài đặt cập nhật ứng dụng khi bản cập nhật có cùng chứng chỉ ký và có mã phiên bản bằng hoặc cao hơn.
Để cài đặt một ứng dụng không đáp ứng các điều kiện trên, trước tiên, người dùng phải gỡ cài đặt phiên bản hiện đã được cài đặt. Việc này sẽ xoá mọi dữ liệu ứng dụng khỏi thiết bị.
Cách Google Play cập nhật ứng dụng
Phương pháp cập nhật ứng dụng của Google Play được dựa trên các nguyên tắc sau đây:
- Giúp người dùng nhận được phiên bản mới nhất. Chúng tôi luôn đề xuất việc cập nhật ứng dụng lên phiên bản mới nhất nhằm bảo vệ người dùng khỏi các vấn đề bảo mật và giúp họ được hưởng lợi từ những cải tiến mới nhất về tính năng.
- Tôn trọng lựa chọn của người dùng. Google Play cập nhật những ứng dụng liên kết với tài khoản của người dùng và dựa trên lựa chọn ưu tiên của họ về việc cập nhật, chẳng hạn như cho phép hoặc không cho phép sử dụng dữ liệu có đo lượng.
- Tôn trọng lựa chọn của nhà phát triển. Google Play sử dụng các lựa chọn cấu hình của nhà phát triển khi xác định bản cập nhật ứng dụng.
- Tránh lãng phí tài nguyên. Tiết kiệm pin bằng cách tối ưu hoá thời điểm tải bản cập nhật xuống và giảm thiểu mức sử dụng dữ liệu bằng cách sử dụng các kỹ thuật như nén và vá.
Đối với một ứng dụng cụ thể được cài đặt trên thiết bị, Google Play sẽ cập nhật ứng dụng nếu ứng dụng đó đáp ứng những điều kiện sau đây:
- Ứng dụng được phát hành trên Google Play với cùng một mã ứng dụng.
- Chứng chỉ ký của ứng dụng đã phát hành khớp với chứng chỉ ký của phiên bản đã được cài đặt hoặc chứa một proof-of-rotation hợp lệ.
- Ứng dụng có trong thư viện của người dùng hoặc được nhà sản xuất thiết bị gốc (OEM) tải trước.
- Ứng dụng có sẵn cho người dùng này và thiết bị này, theo các tuỳ chọn nhắm mục tiêu do nhà phát triển đặt ra.
- Ứng dụng đã cài đặt đã lỗi thời so với phiên bản hiện có trên Google Play.
Chỉ cần những điều kiện này được đáp ứng, Google Play có thể cập nhật ứng dụng. Các tiểu mục dưới đây cung cấp thông tin chi tiết về một số điều kiện nêu trên.
Xin lưu ý rằng có những lúc Google Play tải nội dung ứng dụng xuống hoặc thay mặt nhà phát triển bảo trì tệp nhị phân của ứng dụng mà không thay đổi mã phiên bản Android (ví dụ: khi hoàn tất quá trình tải xuống một phần hoặc tải xuống các phần tách theo yêu cầu).
Đã phát hành trên Google Play
Google Play sử dụng mã ứng dụng để xác định riêng biệt những ứng dụng được phát hành trên Google Play. Điều kiện này được đáp ứng nếu mã ứng dụng của ứng dụng đã cài đặt khớp với mã ứng dụng của ứng dụng được phát hành trên Google Play.
Có trong thư viện của người dùng
Điều kiện này được đáp ứng nếu một trong các trường hợp sau đây là đúng:
- Một Tài khoản Google nào đó đang hoạt động trên thiết bị này từng có được ứng dụng này bằng cách nhấn vào nút cài đặt hoặc nút mua trên Google Play.
- Nhà sản xuất thiết bị gốc (OEM) đã tải trước ứng dụng này dưới dạng một phần của hình ảnh hệ thống.
Người dùng cũng có thể xoá các ứng dụng khỏi thư viện của họ theo cách thủ công.
Đã lỗi thời
Google Play xác định xem liệu một ứng dụng đã cài đặt trên thiết bị có lỗi thời hay không bằng cách xem mã phiên bản — nếu phiên bản có sẵn để tải xuống trên Google Play có mã phiên bản cao hơn phiên bản đã cài đặt, thì Google Play sẽ coi ứng dụng đã cài đặt đó là lỗi thời.
Ứng dụng trên nhiều cửa hàng ứng dụng
Có một số cách để kiểm soát việc cập nhật xuyên cửa hàng khi bạn phát hành một ứng dụng trên nhiều cửa hàng ứng dụng. Các phần sau đây trình bày những cách như vậy kèm theo các lợi ích và hạn chế tương ứng.
Ngăn việc cập nhật xuyên cửa hàng
Có thể bạn muốn ngăn từng cửa hàng ứng dụng thực hiện việc cập nhật ứng dụng xuyên cửa hàng. Bạn có thể chọn cách này nếu có sự khác biệt giữa phiên bản ứng dụng tại từng cửa hàng. Bạn có thể thực hiện việc này bằng cách phát hành ứng dụng với hai mã ứng dụng riêng biệt hoặc phát hành ứng dụng có cùng mã ứng dụng nhưng dùng hai khoá ký riêng biệt.
Bạn nên giảm thiểu việc dùng lại khoá ký để làm giảm rủi ro phát sinh khi khoá bị xâm phạm, đồng thời sử dụng khoá ký ứng dụng riêng biệt cho từng cửa hàng ứng dụng. Cách này sẽ giúp ngăn chặn việc cập nhật xuyên cửa hàng.
Bất kể bạn chọn phương pháp nào, Android đều coi những ứng dụng không có cùng mã nhận dạng ứng dụng và khoá ký ứng dụng là những ứng dụng không tương thích. Người dùng muốn chuyển từ cửa hàng này sang cửa hàng khác sẽ phải xoá ứng dụng đã cài đặt (việc này cũng sẽ xoá toàn bộ dữ liệu liên kết với ứng dụng đó) rồi cài đặt lại qua cửa hàng mới.
Cho phép cập nhật xuyên cửa hàng
Có thể bạn muốn cho phép từng cửa hàng ứng dụng thực hiện việc cập nhật ứng dụng xuyên cửa hàng. Bạn có thể chọn cách này nếu phân phối ứng dụng có cùng nội dung trên mọi cửa hàng ứng dụng và muốn ưu tiên việc cập nhật kịp thời cho người dùng. Miễn là bạn dùng cùng một mã ứng dụng và khoá ký trên tất cả cửa hàng ứng dụng nơi bạn phát hành ứng dụng, thì mỗi cửa hàng ứng dụng đó đều có thể cập nhật bản cài đặt ứng dụng của bạn bất kể ban đầu người dùng tải ứng dụng xuống qua đâu.
Tuy nhiên, việc này có thể dẫn đến hành vi ngoài mong muốn đối với người dùng, tuỳ thuộc vào cách mỗi cửa hàng ứng dụng chọn triển khai bản cập nhật ứng dụng xuyên cửa hàng. Ví dụ: có thể người dùng tắt chế độ cập nhật ở một cửa hàng mà không nhận ra rằng có một cửa hàng khác vẫn tiếp tục cung cấp bản cập nhật.
Nếu từng cho phép việc cập nhật xuyên cửa hàng nhưng giờ đây bạn muốn bắt đầu ưu tiên một nguồn cập nhật cụ thể khi nguồn đó có mặt trên thiết bị, thì bạn có thể phát hành ứng dụng với mã phiên bản cao hơn trên cửa hàng ứng dụng mà bạn ưu tiên và tiếp tục phát hành với mã phiên bản thấp hơn trên các cửa hàng ứng dụng khác. Sau khi bản cập nhật mang mã phiên bản cao hơn ở nguồn ưu tiên đã được cài đặt, các cửa hàng ứng dụng khác sẽ không thể cập nhật xuyên cửa hàng trên thiết bị đó.