Build Number — mobil tətbiqin hər bir qurulması üçün unikal rəqəm identifikatorudur və versiyaların daxili identifikasiyası üçün xidmət edir. Version Name-dən fərqli olaraq, bu parametr istifadəçiyə göstərilmir, lakin tətbiq mağazaları üçün kritik əhəmiyyət daşıyır. Android Developers, 2025 məlumatlarına görə, Build Number-ın düzgün istifadəsi yeniləmələrin dərc edilməsi zamanı konfliktlərin qarşısını alır.
Əsas məqamlar
Build Number — mobil tətbiqin hər bir qurulmasına təyin edilən unikal tam ədəd identifikatorudur. Tətbiq mağazaları ondan versiyanın yeniliyini müəyyən etmək üçün istifadə edir — rəqəm nə qədər böyükdürsə, qurulma bir o qədər yenidir.
Android-də bu parametr versionCode, iOS-da isə CFBundleVersion adlanır. Hər iki parametr dərc üçün məcburidir və hər yeni qurulma ilə monoton şəkildə artmalıdır.
Google Play Console Help (2025) məlumatlarına görə, versionCode hər APK yükləməsində yoxlanılır: əgər yüklənən qurulmanın versionCode-u artıq dərc edilmişdən kiçik və ya bərabərdirsə, Google Play səhv ilə faylı rədd edir.
Build Number-dan qurulmaların daxili izlənməsi üçün istifadə edin — nömrəni versiya idarəetmə sistemindəki commit hash ilə əlaqələndirin ki, problemli buraxılışı tez müəyyən edə biləsiniz.
Build Number tətbiqin hər bir qurulmuş versiyasının unikal identifikasiyası problemini həll edir. Onsuz, Version Name dəyişməyibsə, hansı qurulmanın daha yeni olduğunu müəyyən etmək mümkün deyil.
Google Play və App Store kimi tətbiq mağazaları yeniləmə zamanı konfliktləri həll etmək üçün Build Number-dan istifadə edir. İstifadəçi köhnə versiyanın üzərinə yenisini quraşdırdıqda, sistem Build Number-ı müqayisə edir və yalnız daha böyük dəyər olduqda yeniləmə təklif edir.
Bu mexanizm yeniləmələrin düzgün çatdırılması üçün kritik əhəmiyyət daşıyır: monoton artan Build Number olmadan istifadəçilər tətbiqin köhnə versiyasında qala bilərlər.
Build Number sadə ardıcıl rəqəm (1, 2, 3...) və ya əlavə məlumatı kodlayan mürəkkəb ola bilər. Mürəkkəb nömrələr tez-tez qurulma tarixini və ya CI/CD sisteminin qurulma nömrəsini ehtiva edir.
Android üçün versionCode int tipində tam ədəddir, maksimum dəyər — 2100000000. iOS üçün CFBundleVersion nöqtələrlə ayrılmış üç rəqəmdən ibarət sətirdir, hər biri 255-dən çox olmamalıdır.
Apple Developer (2025) məlumatlarına görə, CFBundleVersion 3 komponentə qədər dəstəkləyir, lakin App Store versiyaları müqayisə etmək üçün onları vahid sıra nömrəsi kimi istifadə edir.
Android-də Build Number build.gradle faylında versionCode parametri ilə təyin edilir. Bu, Google Play-də dərc edilən tətbiqin hər versiyası üçün unikal olmalı olan tam ədəddir.
Parametr android.defaultConfig bloku daxilində elan edilir və hər yeni buraxılışla artmalıdır. Google Play eyni tətbiqin başqa versiyası üçün artıq istifadə edilmiş versionCode ilə APK yükləməyə icazə vermir.
Google Play Developer API (2025) məlumatlarına görə, versionCode-un maksimum dəyəri 2100000000-dir. Limitin tükənməsinin qarşısını almaq üçün 1-dən başlamaq və hər yeni qurulma üçün 1 artırmaq tövsiyə olunur.
Versiya nömrəsini kodlayan mürəkkəb versionCode istifadə edin: Major * 1000000 + Minor * 1000 + Patch — bu, semantik versiya ilə uyğunlaşdırmanı asanlaşdırır.
versionCode-un ciddi məhdudiyyətləri var: bu, işarəli 32-bitli tam ədəddir, buna görə maksimum dəyər 2100000000-dir. Limit tükəndikdə tətbiq Google Play-də yenilənə bilməyəcək.
Android App Bundle üçün versionCode həmçinin base modulunda göstərilir və hər feature modulunun öz versionCode-u ola bilər. Google Play onları vahid yoxlama sistemində birləşdirir.
Bu məhdudiyyət versiyalama strategiyasını seçərkən nəzərə alınmalıdır — rəqəmin çox sürətli artması uzunmüddətli perspektivdə problemlərə səbəb ola bilər.
iOS-da Build Number Info.plist faylında CFBundleVersion açarı ilə təyin edilir. Android-dən fərqli olaraq, bu parametr sətirdir, lakin hər yeni qurulma ilə artmalıdır.
CFBundleVersion formatı — nöqtələrlə ayrılmış birdən üçə qədər rəqəm. Hər rəqəm 255-dən çox ola bilməz. App Store sətri müqayisə üçün rəqəmlər ardıcıllığı kimi interpretasiya edir: 1.0.1, 1.0.0-dan daha yeni hesab olunur.
Apple Developer Documentation (2025) məlumatlarına görə, App Store Connect hər yüklənən qurulma üçün CFBundleVersion-un unikallığını tələb edir. Artıq istifadə edilmiş nömrə ilə qurulma yüklənərsə, sistem onu rədd edəcək.
CFBundleVersion-u agvtool və ya Xcode qurulma skriptləri vasitəsilə idarə edin ki, hər qurulmada nömrənin monoton artımı təmin edilsin.
Xcode CFBundleVersion-u Build Settings vasitəsilə idarə etməyə imkan verir. “Current Project Version” sahəsi əsas dəyəri təyin edir, Build Phase skriptləri isə onu avtomatik artıra bilər.
CI/CD üçün Info.plist-dən cari versiyanı oxuyan və onu verilən dəyər qədər artıran increment_build_number fastlane plagini istifadə edin. Bu, hər qurulmanın unikallığını təmin edir.
Belə yanaşma Build Number idarəçiliyini tam avtomatlaşdırır və buraxılış hazırlığı zamanı insan səhvlərini aradan qaldırır.
Build Number-ın avtomatik inkrementasiyası müasir CI/CD pipeline-lərində standart təcrübədir. Qurulma nömrəsinin əl ilə artırılması dərc zamanı səhvlərə və konfliktlərə gətirib çıxarır.
GitHub Actions, GitLab CI və Jenkins qurulma nömrəsi ilə daxili dəyişənlər təqdim edir. Bu dəyişənlər Gradle və ya Xcode skriptlərində Build Number-ın avtomatik yerləşdirilməsi üçün istifadə olunur.
GitLab CI Documentation (2025) məlumatlarına görə, CI_PIPELINE_IID dəyişəni hər pipeline üçün unikal nömrə təmin edir və Build Number kimi istifadə üçün idealdır.
Avtomatik inkrementasiyanı CI/CD səviyyəsində qurun — bu, buraxılış branch-ına hər commit-də Build Number-ı əl ilə dəyişmək ehtiyacını aradan qaldıracaq.
GitHub Actions hər pipeline icrası üçün avtomatik artan run_number daxili dəyişənini dəstəkləyir. Dəyər versionCode vasitəsilə Gradle-ə ötürülə bilər.
Jenkins qurulmanın bütün mərhələlərində mövcud olan BUILD_NUMBER dəyişənindən istifadə edir. Xcode layihələri üçün Jenkins bu nömrə ilə agvtool-u işə salır.
Əlavə konfiqurasiyanı minimuma endirmək üçün texnoloji stack-inizə inteqrasiya olunmuş aləti seçin.
Build Number və Version Name cüt kimi işləyir: birincisi — maşınlar üçün, ikincisi — insanlar üçün. Build Number texniki unikallığı təmin edir, Version Name — istifadəçi üçün başa düşülən semantikanı.
Android-də bu iki parametr müstəqildir: versionCode versionName dəyişmədən arta bilər (məsələn, qurulma xətasını düzəltmək üçün). iOS-da CFBundleVersion da CFBundleShortVersionString-ə bağlı deyil.
Stack Overflow Developer Survey (2024) məlumatlarına görə, komandaların 82%-i Build Number-ın avtomatik inkrementasiyasından istifadə edir, lakin yalnız 45%-i Version Name yeniləməsini avtomatlaşdırır — bu buraxılış zamanı tez-tez səhvlərə səbəb olur.
Version Name dəyişməsə belə, hər qurulmada Build Number-ı artırın — bu, tətbiq mağazalarında yeniləmə mexanizminin düzgün işləməsini təmin edir.
versionCode-a 1-dən başlayın və hər qurulma üçün 1 artırın. iOS üçün CFBundleVersion ilə analoji yanaşma istifadə edin. Ciddi ehtiyac olmadıqda mürəkkəb nömrələrdən çəkinin — sadə ardıcıl rəqəmi izləmək daha asandır.
Build Number-ı CI/CD sisteminin qurulma nömrəsi ilə əlaqələndirin — bu, səhvdən konkret commit-ə qədər izləməni asanlaşdırır. Qurulma nömrəsi və versiyası olan Git tag buraxılışların idarə edilməsi üçün ən yaxşı təcrübədir.
Kod nümunələri hər iki platformada Build Number-ın avtomatik inkrementasiyasını necə qurmağı göstərir.
Android-də versionCode CI/CD mühit dəyişəni vasitəsilə təyin edilə bilər. Dəyişən təyin olunmayıbsa, standart dəyər istifadə olunur.
android {
defaultConfig {
versionCode System.getenv("CI_PIPELINE_ID")?.toInteger() ?: 1
versionName "1.2.0"
}
}
versionCode CI/CD dəyişənindən dəyər alır, bu da pipeline-də hər qurulma üçün nömrənin unikallığını təmin edir.
iOS-da Build Number-ı avtomatik artırmaq üçün Xcode Command Line Tools-a daxil olan agvtool istifadə olunur.
# Qurulma nömrəsinin 1 artırılması
xcrun agvtool next-version -all
# Konkret qurulma nömrəsinin təyin edilməsi
xcrun agvtool new-version -all "3.0.1"
-all bayrağı layihənin bütün target-lərində versiyanı yeniləyir ki, bu da əsas tətbiq və genişləndirmələr arasında dəyərlərin sinxronizasiyasını təmin edir.
Fastlane — mobil tətbiq qurulmasını avtomatlaşdırmaq üçün məşhur alətdir. increment_build_number plagini Build Number-ı avtomatik artırır.
increment_build_number(
build_number: ENV["BUILD_NUMBER"] ||
latest_testflight_build_number + 1
)
Fastlane istənilən CI/CD sistemi ilə inteqrasiya olunur və həm Android, həm də iOS layihələrini dəstəkləyir.
Tez-tez verilən suallar
Tətbiq mağazası yükləməni rədd edəcək. Google Play və App Store yeni qurulmanın Build Number-ının əvvəlki dərc edilmiş versiyadan böyük olduğunu yoxlayır. Şərt yerinə yetirilməzsə, yükləmə rədd ediləcək.
Yalnız yeni tətbiq üçün. İlk dərc edildikdən sonra Build Number yalnız arta bilər. 1-ə sıfırlama yeni versiya dərc etməyə cəhd edərkən “versionCode already exists” xətasına səbəb olacaq.
2100000000 — Android-də versionCode üçün maksimum dəyər, çünki bu, işarəli 32-bitli tam ədəddir. Hər qurulma üçün 1 artırma ilə limit milyardlarla build üçün kifayət edəcək.
CFBundleVersion — hər build ilə artmalı olan daxili qurulma nömrəsidir. CFBundleShortVersionString — App Store-da göstərilən istifadəçi versiyasıdır. Birincisi — maşınlar üçün, ikincisi — insanlar üçün.
Bəli, mütləq. TestFlight da hər yüklənən qurulmanın unikal Build Number-a malik olmasını tələb edir. Nömrə artırılmazsa, TestFlight yükləməni rədd edəcək.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun