Build Number — τι είναι, σημασία της παραμέτρου και αύξηση

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-04-18 Χρόνος ανάγνωσης: 8 λεπ

Build Number — είναι ένα μοναδικό αριθμητικό αναγνωριστικό της μεταγλώττισης μιας εφαρμογής για κινητά, το οποίο χρησιμεύει για την εσωτερική αναγνώριση εκδόσεων. Σε αντίθεση με το Version Name, αυτή η παράμετρος δεν εμφανίζεται στον χρήστη, αλλά είναι κρίσιμη για τα καταστήματα εφαρμογών. Σύμφωνα με τα δεδομένα των Android Developers, 2025, η σωστή χρήση του Build Number αποτρέπει συγκρούσεις κατά τη δημοσίευση ενημερώσεων.

Κύρια σημεία

  • Build Number — αριθμητικό αναγνωριστικό κάθε μεταγλώττισης, που χρησιμοποιείται για την εσωτερική καταγραφή εκδόσεων.
  • Στο Android ορίζεται με την παράμετρο versionCode στο build.gradle, στο iOS — CFBundleVersion στο Info.plist.
  • Το Build Number πρέπει να αυξάνεται με κάθε νέα μεταγλώττιση — τα καταστήματα εφαρμογών ελέγχουν αυτή τη συνθήκη.
  • Σε αντίθεση με το Version Name, το Build Number δεν εμφανίζεται στους χρήστες στο Google Play και το App Store.
  • Αυτόματη αύξηση του Build Number μέσω CI/CD εξαλείφει σφάλματα διπλασιασμού των αριθμών μεταγλώττισης.

Τι είναι το Build Number

Build Number — είναι ένα μοναδικό ακέραιο αναγνωριστικό που εκχωρείται σε κάθε μεταγλώττιση της εφαρμογής για κινητά. Τα καταστήματα εφαρμογών το χρησιμοποιούν για να προσδιορίσουν την καινούργια έκδοση — όσο μεγαλύτερος είναι ο αριθμός, τόσο νεότερη είναι η μεταγλώττιση.

Στο Android αυτή η παράμετρος ονομάζεται versionCode, στο iOS — CFBundleVersion. Και οι δύο παράμετροι είναι υποχρεωτικές για δημοσίευση και πρέπει να αυξάνονται μονότονα με κάθε νέα μεταγλώττιση.

Σύμφωνα με τα δεδομένα του Google Play Console Help (2025), το versionCode ελέγχεται σε κάθε μεταφόρτωση APK: εάν η μεταγλώττιση που μεταφορτώνεται έχει versionCode μικρότερο ή ίσο με αυτό που έχει ήδη δημοσιευτεί, το Google Play απορρίπτει το αρχείο με σφάλμα.

Χρησιμοποιήστε το Build Number για εσωτερική παρακολούθηση μεταγλωττίσεων — συνδέστε τον αριθμό με το commit hash στο σύστημα ελέγχου εκδόσεων για γρήγορη αναγνώριση μιας προβληματικής έκδοσης.

Γιατί χρειάζεται το Build Number

Build Number λύνει το πρόβλημα της μοναδικής αναγνώρισης κάθε μεταγλωττισμένης έκδοσης της εφαρμογής. Χωρίς αυτό, είναι αδύνατο να προσδιοριστεί ποια μεταγλώττιση είναι νεότερη εάν το Version Name δεν έχει αλλάξει.

Τα καταστήματα εφαρμογών, όπως το Google Play και το App Store, χρησιμοποιούν το Build Number για την επίλυση συγκρούσεων κατά την ενημέρωση. Εάν ο χρήστης εγκαθιστά μια νέα έκδοση πάνω από μια παλιά, το σύστημα συγκρίνει το Build Number και προσφέρει ενημέρωση μόνο εάν η τιμή είναι μεγαλύτερη.

Αυτός ο μηχανισμός είναι κρίσιμος για τη σωστή παράδοση ενημερώσεων: χωρίς μονότονα αυξανόμενο Build Number, οι χρήστες μπορεί να κολλήσουν σε μια παλιά έκδοση της εφαρμογής.

Μορφές Build Number

Build Number μπορεί να είναι ένας απλός διαδοχικός αριθμός (1, 2, 3...) ή σύνθετος, που κωδικοποιεί πρόσθετες πληροφορίες. Οι σύνθετοι αριθμοί συχνά περιλαμβάνουν την ημερομηνία μεταγλώττισης ή τον αριθμό μεταγλώττισης του συστήματος CI/CD.

Για Android το versionCode είναι ένας ακέραιος αριθμός τύπου int, μέγιστη τιμή — 2100000000. Για iOS το CFBundleVersion είναι μια συμβολοσειρά τριών αριθμών διαχωρισμένων με τελείες, κάθε ένας όχι μεγαλύτερος από 255.

Σύμφωνα με τα δεδομένα της Apple Developer (2025), το CFBundleVersion υποστηρίζει έως 3 στοιχεία, αλλά το App Store τα χρησιμοποιεί ως έναν ενιαίο αύξοντα αριθμό για σύγκριση εκδόσεων.

Build Number στο Android

Στο Android το Build Number ορίζεται με την παράμετρο versionCode στο αρχείο build.gradle. Είναι ένας ακέραιος αριθμός που πρέπει να είναι μοναδικός για κάθε έκδοση της εφαρμογής που δημοσιεύεται στο Google Play.

Η παράμετρος δηλώνεται εντός του μπλοκ android.defaultConfig και πρέπει να αυξάνεται με κάθε νέα έκδοση. Το Google Play δεν επιτρέπει τη μεταφόρτωση APK με versionCode που έχει ήδη χρησιμοποιηθεί για άλλη έκδοση της ίδιας εφαρμογής.

Σύμφωνα με τα δεδομένα του Google Play Developer API (2025), η μέγιστη τιμή του versionCode είναι 2100000000. Συνιστάται να ξεκινάτε από το 1 και να αυξάνετε κατά 1 για κάθε νέα μεταγλώττιση για να αποφύγετε την εξάντληση του ορίου.

Χρησιμοποιήστε σύνθετο versionCode που κωδικοποιεί τον αριθμό έκδοσης: Major * 1000000 + Minor * 1000 + Patch — αυτό απλοποιεί την αντιστοίχιση με τη σημασιολογική έκδοση.

Περιορισμοί του versionCode στο Android

versionCode έχει αυστηρούς περιορισμούς: είναι ένας 32-bit ακέραιος αριθμός με πρόσημο, επομένως η μέγιστη τιμή είναι 2100000000. Όταν εξαντληθεί το όριο, η εφαρμογή δεν θα μπορεί να ενημερωθεί στο Google Play.

Για Android App Bundle, το versionCode καθορίζεται επίσης στη βασική μονάδα και κάθε μονάδα λειτουργίας μπορεί να έχει το δικό της versionCode. Το Google Play τα συνδυάζει σε ένα ενιαίο σύστημα επαλήθευσης.

Αυτός ο περιορισμός είναι σημαντικό να λαμβάνεται υπόψη κατά την επιλογή στρατηγικής έκδοσης — η πολύ γρήγορη αύξηση του αριθμού μπορεί να οδηγήσει σε προβλήματα μακροπρόθεσμα.

Build Number στο iOS

Στο iOS το Build Number ορίζεται με το κλειδί CFBundleVersion στο αρχείο Info.plist. Σε αντίθεση με το Android, αυτή η παράμετρος είναι μια συμβολοσειρά, αλλά επίσης πρέπει να αυξάνεται με κάθε νέα μεταγλώττιση.

Η μορφή του CFBundleVersion — από έναν έως τρεις αριθμούς διαχωρισμένους με τελείες. Κάθε αριθμός δεν μπορεί να υπερβαίνει το 255. Το App Store ερμηνεύει τη συμβολοσειρά ως ακολουθία αριθμών για σύγκριση: το 1.0.1 θεωρείται νεότερο από το 1.0.0.

Σύμφωνα με τα δεδομένα του Apple Developer Documentation (2025), το App Store Connect απαιτεί μοναδικότητα του CFBundleVersion για κάθε μεταφόρτωση μεταγλώττισης. Εάν μεταφορτωθεί μια μεταγλώττιση με ήδη χρησιμοποιημένο αριθμό, το σύστημα θα την απορρίψει.

Διαχειριστείτε το CFBundleVersion μέσω agvtool ή σεναρίων μεταγλώττισης Xcode για να εγγυηθείτε μονότονη αύξηση του αριθμού σε κάθε μεταγλώττιση.

Ενσωμάτωση με τις ρυθμίσεις μεταγλώττισης Xcode

Xcode επιτρέπει τη διαχείριση του CFBundleVersion μέσω των ρυθμίσεων Build Settings. Το πεδίο “Current Project Version” ορίζει τη βασική τιμή και τα σενάρια Build Phase μπορούν να την αυξάνουν αυτόματα.

Για CI/CD χρησιμοποιήστε το πρόσθετο fastlane increment_build_number, το οποίο διαβάζει την τρέχουσα έκδοση από το Info.plist και την αυξάνει κατά μια δεδομένη τιμή. Αυτό εγγυάται τη μοναδικότητα κάθε μεταγλώττισης.

Αυτή η προσέγγιση αυτοματοποιεί πλήρως τη διαχείριση του Build Number και εξαλείφει τα ανθρώπινα σφάλματα κατά την προετοιμασία μιας έκδοσης.

Αυτόματη αύξηση Build Number

Αυτόματη αύξηση του Build Number είναι κοινή πρακτική σε σύγχρονους αγωγούς CI/CD. Η χειροκίνητη αύξηση του αριθμού μεταγλώττισης οδηγεί σε σφάλματα και συγκρούσεις κατά τη δημοσίευση.

GitHub Actions, GitLab CI και Jenkins παρέχουν ενσωματωμένες μεταβλητές με τον αριθμό μεταγλώττισης. Αυτές οι μεταβλητές χρησιμοποιούνται σε σενάρια Gradle ή Xcode για αυτόματη αντικατάσταση του Build Number.

Σύμφωνα με τα δεδομένα του GitLab CI Documentation (2025), η μεταβλητή CI_PIPELINE_IID εγγυάται έναν μοναδικό αριθμό για κάθε αγωγό, ο οποίος είναι ιδανικός για χρήση ως Build Number.

Διαμορφώστε την αυτόματη αύξηση σε επίπεδο CI/CD — αυτό θα εξαλείψει την ανάγκη χειροκίνητης αλλαγής του Build Number σε κάθε commit στον κλάδο έκδοσης.

Δημοφιλή εργαλεία αυτοματισμού

GitHub Actions υποστηρίζει την ενσωματωμένη μεταβλητή run_number, η οποία αυξάνεται αυτόματα για κάθε εκτέλεση αγωγού. Η τιμή μπορεί να μεταβιβαστεί στο Gradle μέσω versionCode.

Jenkins χρησιμοποιεί τη μεταβλητή BUILD_NUMBER, η οποία είναι διαθέσιμη σε όλα τα στάδια μεταγλώττισης. Για έργα Xcode, το Jenkins εκτελεί το agvtool με αυτόν τον αριθμό.

Επιλέξτε το εργαλείο που είναι ενσωματωμένο στη στοίβα τεχνολογίας σας για να ελαχιστοποιήσετε την πρόσθετη διαμόρφωση.

Build Number και Version Name

Build Number και Version Name λειτουργούν ως ζεύγος: το πρώτο — για μηχανές, το δεύτερο — για ανθρώπους. Το Build Number παρέχει τεχνική μοναδικότητα, το Version Name — σημασιολογία κατανοητή από τον χρήστη.

Στο Android αυτές οι δύο παράμετροι είναι ανεξάρτητες: το versionCode μπορεί να αυξηθεί χωρίς αλλαγή του versionName (για παράδειγμα, για διόρθωση σφάλματος μεταγλώττισης). Στο iOS, το CFBundleVersion επίσης δεν συνδέεται με το CFBundleShortVersionString.

Σύμφωνα με τα δεδομένα του Stack Overflow Developer Survey (2024), το 82% των ομάδων χρησιμοποιεί αυτόματη αύξηση του Build Number, αλλά μόνο το 45% αυτοματοποιεί την ενημέρωση του Version Name — αυτή είναι μια από τις συχνές αιτίες σφαλμάτων κατά την έκδοση.

Αυξάνετε πάντα το Build Number σε κάθε μεταγλώττιση, ακόμη και αν το Version Name δεν αλλάζει — αυτό εγγυάται τη σωστή λειτουργία του μηχανισμού ενημέρωσης στα καταστήματα εφαρμογών.

Βέλτιστες πρακτικές για Build Number

Ξεκινήστε το versionCode από το 1 και αυξήστε κατά 1 για κάθε μεταγλώττιση. Για iOS χρησιμοποιήστε ανάλογη προσέγγιση με το CFBundleVersion. Αποφύγετε σύνθετους αριθμούς εάν δεν υπάρχει αυστηρή ανάγκη — ένας απλός διαδοχικός αριθμός είναι ευκολότερο να παρακολουθηθεί.

Συνδέστε το Build Number με τον αριθμό μεταγλώττισης του συστήματος CI/CD — αυτό απλοποιεί την ανίχνευση από το σφάλμα στο συγκεκριμένο commit. Το Git tag με τον αριθμό μεταγλώττισης και την έκδοση είναι η βέλτιστη πρακτική για τον έλεγχο εκδόσεων.

Παραδείγματα ρύθμισης Build Number

Παραδείγματα κώδικα δείχνουν πώς να ρυθμίσετε την αυτόματη αύξηση του Build Number και στις δύο πλατφόρμες.

versionCode στο Gradle με μεταβλητή CI

Στο Android το versionCode μπορεί να οριστεί μέσω μιας μεταβλητής περιβάλλοντος CI/CD. Εάν η μεταβλητή δεν έχει οριστεί, χρησιμοποιείται η προεπιλεγμένη τιμή.

groovy
android {
    defaultConfig {
        versionCode System.getenv("CI_PIPELINE_ID")?.toInteger() ?: 1
        versionName "1.2.0"
    }
}

versionCode λαμβάνει την τιμή από τη μεταβλητή CI/CD, η οποία εγγυάται τη μοναδικότητα του αριθμού για κάθε μεταγλώττιση στον αγωγό.

Αύξηση CFBundleVersion μέσω agvtool

Στο iOS για αυτόματη αύξηση του Build Number χρησιμοποιείται το agvtool, το οποίο είναι ενσωματωμένο στα Xcode Command Line Tools.

bash
# Αύξηση του αριθμού build κατά 1
xcrun agvtool next-version -all

# Ορισμός συγκεκριμένου αριθμού build
xcrun agvtool new-version -all "3.0.1"

Η σημαία -all ενημερώνει την έκδοση σε όλους τους στόχους του έργου, η οποία εγγυάται τον συγχρονισμό των τιμών μεταξύ της κύριας εφαρμογής και των επεκτάσεων.

Fastlane για αυτοματισμό

Fastlane — δημοφιλές εργαλείο για αυτοματισμό μεταγλώττισης εφαρμογών για κινητά. Το πρόσθετο increment_build_number αυξάνει αυτόματα το Build Number.

ruby
increment_build_number(
    build_number: ENV["BUILD_NUMBER"] ||
                 latest_testflight_build_number + 1
)

Fastlane ενσωματώνεται με οποιοδήποτε σύστημα CI/CD και υποστηρίζει τόσο έργα Android όσο και iOS.

Συχνές ερωτήσεις

Τι συμβαίνει εάν το Build Number δεν αυξηθεί;

Το κατάστημα εφαρμογών θα απορρίψει τη μεταφόρτωση. Το Google Play και το App Store ελέγχουν εάν το Build Number της νέας μεταγλώττισης είναι μεγαλύτερο από αυτό της προηγούμενης δημοσιευμένης έκδοσης. Εάν η συνθήκη δεν ικανοποιείται, η μεταφόρτωση θα απορριφθεί.

Μπορεί το Build Number να επαναφερθεί στο 1;

Μόνο για νέα εφαρμογή. Μετά την πρώτη δημοσίευση, το Build Number μπορεί μόνο να αυξάνεται. Η επαναφορά στο 1 θα οδηγήσει σε σφάλμα “versionCode already exists” κατά την προσπάθεια δημοσίευσης μιας νέας έκδοσης.

Ποιο είναι το μέγιστο Build Number στο Android;

2100000000 — η μέγιστη τιμή για versionCode στο Android, καθώς είναι ένας 32-bit ακέραιος αριθμός με πρόσημο. Με λογική αύξηση κατά 1 ανά μεταγλώττιση, το όριο επαρκεί για δισεκατομμύρια builds.

Σε τι διαφέρει το CFBundleVersion από το CFBundleShortVersionString;

CFBundleVersion — ο εσωτερικός αριθμός μεταγλώττισης που πρέπει να αυξάνεται με κάθε build. CFBundleShortVersionString — η έκδοση χρήστη που εμφανίζεται στο App Store. Το πρώτο — για μηχανές, το δεύτερο — για ανθρώπους.

Πρέπει να αυξάνεται το Build Number για δοκιμαστικές μεταγλωττίσεις;

Ναι, υποχρεωτικά. Το TestFlight επίσης απαιτεί κάθε μεταφόρτωση μεταγλώττισης να έχει μοναδικό Build Number. Εάν ο αριθμός δεν αυξηθεί, το TestFlight θα απορρίψει τη μεταφόρτωση.

Σύνοψη

  • Build Number — εσωτερικό αριθμητικό αναγνωριστικό μεταγλώττισης, υποχρεωτικό για δημοσίευση στο Google Play και το App Store.
  • Στο Android χρησιμοποιείται το versionCode (ακέραιος αριθμός), στο iOS — το CFBundleVersion (συμβολοσειρά έως 3 στοιχεία).
  • Ο αριθμός μεταγλώττισης πρέπει να αυξάνεται μονότονα — τα καταστήματα απορρίπτουν μεταγλωττίσεις με μη αυξημένο Build Number.
  • Αυτόματη αύξηση μέσω CI/CD εξαλείφει σφάλματα και εγγυάται τη μοναδικότητα κάθε build.
  • Το Build Number είναι ανεξάρτητο από το Version Name — μπορεί να αυξηθεί χωρίς αλλαγή της έκδοσης χρήστη.
  • Για Android χρησιμοποιήστε μεταβλητές CI/CD στο Gradle, για iOS — agvtool ή fastlane.
  • Μέγιστο versionCode στο Android — 2100000000, CFBundleVersion — έως 255 για κάθε ένα από τα τρία στοιχεία.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης