versionCode: số nguyên nội bộ, người dùng không thấy. Google Play và hệ điều hành dùng nó để biết bản nào mới hơn: mỗi lần upload phải lớn hơn bản trước, và Android chặn cài bản cóversionCodethấp hơn bản đang có (chống downgrade). Giá trị tối đa Play cho phép là 2.100.000.000.versionName: chuỗi hiển thị cho người dùng, ví dụ"2.3.1". Hệ thống không dùng nó để so sánh.
Trong Flutter, cả hai lấy từ pubspec.yaml:
yaml
version: 2.3.1+45 # 2.3.1 -> versionName, 45 -> versionCodeCó thể ghi đè khi build CI: flutter build appbundle --build-name=2.3.1 --build-number=45. Bên iOS, cặp tương ứng là CFBundleShortVersionString (hiển thị) và CFBundleVersion (build number).
Lưu ý: upload trùng versionCode sẽ bị Play từ chối — CI thường tự tăng build number (theo số lần chạy pipeline) để tránh lỗi này.