Build Number — bu nima, parametr ma'nosi va inkrement

Muallif: IT Sectr Nashr etilgan: 2026-04-18 O'qish vaqti: 8 daq

Build Number — mobil ilovaning har bir qurilishi uchun noyob raqamli identifikator bo'lib, versiyalarni ichki identifikatsiya qilish uchun xizmat qiladi. Version Name-dan farqli o'laroq, bu parametr foydalanuvchiga ko'rsatilmaydi, lekin ilovalar do'konlari uchun muhim ahamiyatga ega. Android Developers, 2025 ma'lumotlariga ko'ra, Build Number dan to'g'ri foydalanish yangilanishlarni nashr qilishda ziddiyatlarning oldini oladi.

Asosiy ma'lumotlar

  • Build Number — har bir qurilishning raqamli identifikatori, versiyalarni ichki hisobi uchun ishlatiladi.
  • Android-da versionCode parametri bilan build.gradle da, iOS-da CFBundleVersion bilan Info.plist da o'rnatiladi.
  • Build Number har bir yangi qurilish bilan oshishi kerak — ilovalar do'konlari bu shartni tekshiradi.
  • Version Name-dan farqli o'laroq, Build Number Google Play va App Store da foydalanuvchilarga ko'rsatilmaydi.
  • CI/CD orqali Build Number ning avtomatik inkrementi qurilish raqamlarini takrorlash xatolarini bartaraf etadi.

Build Number nima

Build Number — mobil ilovaning har bir qurilishiga tayinlanadigan noyob butun son identifikatoridir. Ilovalar do'konlari undan versiyaning yangiligini aniqlash uchun foydalanadi — raqam qanchalik katta bo'lsa, qurilish shunchalik yangi.

Android da bu parametr versionCode, iOS da esa CFBundleVersion deb ataladi. Ikkala parametr ham nashr qilish uchun majburiy va har bir yangi qurilish bilan monoton ravishda oshishi kerak.

Google Play Console Help (2025) ma'lumotlariga ko'ra, versionCode har bir APK yuklashda tekshiriladi: agar yuklangan qurilishning versionCode si allaqachon nashr qilinganidan kichik yoki teng bo'lsa, Google Play faylni xato bilan rad etadi.

Build Number dan qurilishlarni ichki kuzatish uchun foydalaning — raqamni versiyalarni boshqarish tizimidagi commit hash bilan bog'lab, muammoli nashrni tez aniqlang.

Build Number nima uchun kerak

Build Number ilovaning har bir qurilgan versiyasini noyob identifikatsiya qilish muammosini hal qiladi. Usiz, Version Name o'zgarmagan bo'lsa, qaysi qurilish yangi ekanligini aniqlab bo'lmaydi.

Google Play va App Store kabi ilovalar do'konlari yangilanish vaqtida ziddiyatlarni hal qilish uchun Build Number dan foydalanadi. Agar foydalanuvchi eski versiya ustiga yangisini o'rnatsa, tizim Build Number ni solishtiradi va faqat kattaroq qiymat bo'lganda yangilanishni taklif qiladi.

Bu mexanizm yangilanishlarni to'g'ri yetkazish uchun muhim: monoton o'sib boruvchi Build Number bo'lmasa, foydalanuvchilar ilovaning eski versiyasida qolib ketishi mumkin.

Build Number formatlari

Build Number oddiy ketma-ket son (1, 2, 3...) yoki qo'shimcha ma'lumotni kodlaydigan murakkab bo'lishi mumkin. Murakkab raqamlar ko'pincha qurilish sanasini yoki CI/CD tizimining qurilish raqamini o'z ichiga oladi.

Android uchun versionCode int turidagi butun son, maksimal qiymat — 2100000000. iOS uchun CFBundleVersion nuqtalar bilan ajratilgan uchta raqamdan iborat satr, har biri 255 dan oshmasligi kerak.

Apple Developer (2025) ma'lumotlariga ko'ra, CFBundleVersion 3 komponentgacha qo'llab-quvvatlaydi, lekin App Store ularni versiyalarni solishtirish uchun yagona tartib raqami sifatida ishlatadi.

Android da Build Number

Android da Build Number build.gradle faylida versionCode parametri bilan o'rnatiladi. Bu Google Play da nashr qilinadigan ilovaning har bir versiyasi uchun noyob bo'lishi kerak bo'lgan butun sondir.

Parametr android.defaultConfig bloki ichida e'lon qilinadi va har bir yangi nashr bilan oshishi kerak. Google Play bir xil ilovaning boshqa versiyasi uchun allaqachon ishlatilgan versionCode bilan APK yuklashga ruxsat bermaydi.

Google Play Developer API (2025) ma'lumotlariga ko'ra, versionCode ning maksimal qiymati 2100000000. Cheklov tugashining oldini olish uchun 1 dan boshlash va har bir yangi qurilish uchun 1 ga oshirish tavsiya etiladi.

Versiya raqamini kodlaydigan murakkab versionCode dan foydalaning: Major * 1000000 + Minor * 1000 + Patch — bu semantik versiyaga moslashtirishni osonlashtiradi.

Android da versionCode cheklovlari

versionCode qattiq cheklovlarga ega: bu 32-bitli ishorali butun son, shuning uchun maksimal qiymat 2100000000. Cheklov tugaganda ilova Google Play da yangilanmaydi.

Android App Bundle uchun versionCode base modulida ham ko'rsatiladi va har bir feature moduli o'z versionCode ga ega bo'lishi mumkin. Google Play ularni yagona tekshirish tizimida birlashtiradi.

Bu cheklov versiyalash strategiyasini tanlashda hisobga olinishi kerak — raqamning juda tez o'sishi uzoq muddatda muammolarga olib kelishi mumkin.

iOS da Build Number

iOS da Build Number Info.plist faylida CFBundleVersion kaliti bilan o'rnatiladi. Android dan farqli o'laroq, bu parametr satrdir, lekin har bir yangi qurilish bilan oshishi kerak.

CFBundleVersion formati — nuqtalar bilan ajratilgan birdan uchgacha raqam. Har bir raqam 255 dan oshmasligi kerak. App Store satrni solishtirish uchun raqamlar ketma-ketligi sifatida talqin qiladi: 1.0.1 1.0.0 dan yangiroq hisoblanadi.

Apple Developer Documentation (2025) ma'lumotlariga ko'ra, App Store Connect har bir yuklangan qurilish uchun CFBundleVersion ning noyobligini talab qiladi. Agar allaqachon ishlatilgan raqam bilan qurilish yuklansa, tizim uni rad etadi.

CFBundleVersion ni agvtool yoki Xcode qurilish skriptlari orqali boshqaring, har bir qurilishda raqamning monoton o'sishini kafolatlash uchun.

Xcode Build Settings bilan integratsiya

Xcode CFBundleVersion ni Build Settings sozlamalari orqali boshqarishga imkon beradi. “Current Project Version” maydoni asosiy qiymatni belgilaydi va Build Phase skriptlari uni avtomatik ravishda oshirishi mumkin.

CI/CD uchun Info.plist dan joriy versiyani o'qib, uni berilgan qiymatga oshiradigan increment_build_number fastlane plaginidan foydalaning. Bu har bir qurilishning noyobligini kafolatlaydi.

Bunday yondashuv Build Number boshqaruvini to'liq avtomatlashtiradi va nashrni tayyorlashda inson xatolarini bartaraf etadi.

Build Number ning avtomatik inkrementi

Build Number ning avtomatik inkrementi zamonaviy CI/CD pipeline larda standart amaliyotdir. Qurilish raqamini qo'lda oshirish nashr qilishda xato va ziddiyatlarga olib keladi.

GitHub Actions, GitLab CI va Jenkins qurilish raqami bilan o'rnatilgan o'zgaruvchilarni taqdim etadi. Bu o'zgaruvchilar Gradle yoki Xcode skriptlarida Build Number ni avtomatik joylashtirish uchun ishlatiladi.

GitLab CI Documentation (2025) ma'lumotlariga ko'ra, CI_PIPELINE_IID o'zgaruvchisi har bir pipeline uchun noyob raqamni kafolatlaydi, bu Build Number sifatida foydalanish uchun idealdir.

Avtomatik inkrementni CI/CD darajasida sozlang — bu nashr branchiga har bir commit da Build Number ni qo'lda o'zgartirish zaruratini bartaraf etadi.

Mashhur avtomatlashtirish vositalari

GitHub Actions har bir pipeline ishga tushirilishida avtomatik ravishda oshadigan run_number o'rnatilgan o'zgaruvchisini qo'llab-quvvatlaydi. Qiymatni versionCode orqali Gradle ga uzatish mumkin.

Jenkins qurilishning barcha bosqichlarida mavjud bo'lgan BUILD_NUMBER o'zgaruvchisidan foydalanadi. Xcode loyihalari uchun Jenkins ushbu raqam bilan agvtool ni ishga tushiradi.

Qo'shimcha sozlashni minimallashtirish uchun vositani texnologik stackingizga integratsiyalangan holda tanlang.

Build Number va Version Name

Build Number va Version Name juft sifatida ishlaydi: birinchisi — mashinalar uchun, ikkinchisi — odamlar uchun. Build Number texnik noyoblikni ta'minlaydi, Version Name — foydalanuvchi uchun tushunarli semantikani.

Android da bu ikki parametr mustaqil: versionCode versionName o'zgarmasdan oshishi mumkin (masalan, qurilish xatosini tuzatish uchun). iOS da CFBundleVersion ham CFBundleShortVersionString ga bog'liq emas.

Stack Overflow Developer Survey (2024) ma'lumotlariga ko'ra, jamoalarning 82% i Build Number ning avtomatik inkrementidan foydalanadi, lekin faqat 45% i Version Name yangilanishini avtomatlashtiradi — bu nashr qilishda tez-tez uchraydigan xatolardan biridir.

Version Name o'zgarmasa ham, har bir qurilishda Build Number ni oshiring — bu ilovalar do'konlarida yangilanish mexanizmining to'g'ri ishlashini kafolatlaydi.

Build Number uchun eng yaxshi amaliyotlar

versionCode ni 1 dan boshlang va har bir qurilish uchun 1 ga oshiring. iOS uchun CFBundleVersion bilan analog yondashuvdan foydalaning. Qattiq zarurat bo'lmasa, murakkab raqamlardan qoching — oddiy ketma-ket sonni kuzatish osonroq.

Build Number ni CI/CD tizimining qurilish raqami bilan bog'lang — bu xatodan aniq commit gacha kuzatishni osonlashtiradi. Qurilish raqami va versiyasi bilan Git tag nashrlarni nazorat qilish uchun eng yaxshi amaliyotdir.

Build Number sozlash misollari

Kod misollari ikkala platformada Build Number ning avtomatik inkrementini qanday sozlashni ko'rsatadi.

Gradle da CI o'zgaruvchisi bilan versionCode

Android da versionCode CI/CD muhit o'zgaruvchisi orqali o'rnatilishi mumkin. Agar o'zgaruvchi o'rnatilmagan bo'lsa, standart qiymat ishlatiladi.

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

versionCode CI/CD o'zgaruvchisidan qiymat oladi, bu pipeline dagi har bir qurilish uchun raqamning noyobligini kafolatlaydi.

agvtool orqali CFBundleVersion inkrementi

iOS da Build Number ni avtomatik oshirish uchun Xcode Command Line Tools tarkibiga kiruvchi agvtool ishlatiladi.

bash
# Build raqamini 1 ga oshirish
xcrun agvtool next-version -all

# Aniq build raqamini o'rnatish
xcrun agvtool new-version -all "3.0.1"

-all bayrog'i loyihaning barcha targetlarida versiyani yangilaydi, bu asosiy ilova va kengaytmalar o'rtasida qiymatlarning sinxronizatsiyasini kafolatlaydi.

Avtomatlashtirish uchun Fastlane

Fastlane — mobil ilovalar qurilishini avtomatlashtirish uchun mashhur vosita. increment_build_number plagini Build Number ni avtomatik oshiradi.

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

Fastlane har qanday CI/CD tizimi bilan integratsiyalanadi va Android hamda iOS loyihalarini qo'llab-quvvatlaydi.

Ko'p beriladigan savollar

Build Number oshirilmasa nima bo'ladi?

Ilovalar do'koni yuklashni rad etadi. Google Play va App Store yangi qurilishning Build Number i oldingi nashr qilingan versiyadan katta ekanligini tekshiradi. Agar shart bajarilmasa, yuklash rad etiladi.

Build Number ni 1 ga qaytarish mumkinmi?

Faqat yangi ilova uchun. Birinchi nashrdan keyin Build Number faqat oshishi mumkin. 1 ga qaytarish yangi versiyani nashr qilishga urinishda “versionCode already exists” xatosiga olib keladi.

Android da maksimal Build Number qancha?

2100000000 — Android da versionCode uchun maksimal qiymat, chunki bu 32-bitli ishorali butun son. Har bir qurilish uchun 1 ga oqilona oshirish bilan cheklov milliardlab buildlar uchun yetadi.

CFBundleVersion CFBundleShortVersionString dan qanday farq qiladi?

CFBundleVersion — har bir build bilan oshishi kerak bo'lgan ichki qurilish raqami. CFBundleShortVersionString — App Store da ko'rsatiladigan foydalanuvchi versiyasi. Birinchisi — mashinalar uchun, ikkinchisi — odamlar uchun.

Test qurilishlari uchun Build Number oshirilishi kerakmi?

Ha, majburiy. TestFlight ham har bir yuklangan qurilishning noyob Build Number ga ega bo'lishini talab qiladi. Agar raqam oshirilmasa, TestFlight yuklashni rad etadi.

Xulosa

  • Build Number — Google Play va App Store da nashr qilish uchun majburiy bo'lgan ichki raqamli qurilish identifikatori.
  • Android da versionCode (butun son), iOS da CFBundleVersion (3 komponentgacha satr) ishlatiladi.
  • Qurilish raqami monoton oshishi kerak — do'konlar Build Number oshirilmagan qurilishlarni rad etadi.
  • CI/CD orqali avtomatik inkrement xatolarni bartaraf etadi va har bir build ning noyobligini kafolatlaydi.
  • Build Number Version Name dan mustaqil — foydalanuvchi versiyasini o'zgartirmasdan oshirish mumkin.
  • Android uchun Gradle da CI/CD o'zgaruvchilaridan, iOS uchun agvtool yoki fastlane dan foydalaning.
  • Android da maksimal versionCode — 2100000000, CFBundleVersion — uch komponentning har biri uchun 255 gacha.

Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz

IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.

Loyihani muhokama qilish

Shuningdek o'qing