versionName là chuỗi tên phiên bản được hiển thị, còn versionCode là số nguyên Android dùng để sắp xếp phiên bản và ngăn việc hạ cấp. Vì vậy, nhìn vào tên “2.0” chưa đủ để biết hai gói ứng dụng có cùng bản nội bộ hay không. Tài liệu Android về versioning mô tả hai trường này theo đúng vai trò đó.
Chuẩn bị ba bản ghi để đối chiếu
Trước khi so sánh, xác nhận các bản ghi thuộc cùng một application ID. Nếu hai ID khác nhau, không gộp chúng vào một chuỗi cập nhật chỉ vì tên app giống nhau. Nếu ID chưa được cung cấp, ghi rõ điểm còn thiếu; đừng tự điền từ biểu tượng hay tên quảng cáo.
Trong bài tập bên dưới, A, B và C được giả định là ba gói của cùng một ứng dụng. Cột tên và cột mã được giữ riêng. Không có tệp nào được tải, cài hoặc kiểm thử; các giá trị chỉ phục vụ phép đối chiếu.
Ví dụ so sánh cụ thể
Ví dụ giả định, không phải ứng dụng đã kiểm thử: cùng một application ID có ba bản ghi như sau:
| Bản ghi | versionName | versionCode | Cách đọc thứ tự |
|---|---|---|---|
| Gói A | 2.0 | 41 | Thấp hơn gói B |
| Gói B | 2.0 | 42 | Cao hơn gói A |
| Gói C | 3.0 | 40 | Thấp hơn gói B |
So sánh theo versionCode: 40 < 41 < 42. Vì thế, gói C có nhãn “3.0” nhưng không đứng sau gói B trong thứ tự nội bộ; code 40 vẫn thấp hơn 42. Đây là lý do một tên hiển thị lớn hơn chưa đủ để kết luận đó là bản mới hơn.
Giới hạn khi dùng thông tin phiên bản
Hai trường này chỉ giúp đối chiếu nhận dạng và thứ tự phiên bản trong phạm vi metadata được cung cấp. Chúng không tự cho biết ứng dụng có tương thích với thiết bị hay an toàn hay không. Cũng không nên suy ra chất lượng, chức năng hoặc nguồn phát hành chỉ từ con số 41, 42 hay nhãn “3.0”.
Khi ghi chép một bản tải xuống, hãy lưu nguyên cặp giá trị: versionName=2.0 và versionCode=42. Kèm application ID và nguồn của bản ghi để lần sau không trộn dữ liệu giữa hai ứng dụng. Với bảng này, chỉ B có code 42; A tuy cùng nhãn 2.0 vẫn là một bản ghi khác.