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 — 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 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 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 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.
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 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 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 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.
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 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.
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.
Kod misollari ikkala platformada Build Number ning avtomatik inkrementini qanday sozlashni ko'rsatadi.
Android da versionCode CI/CD muhit o'zgaruvchisi orqali o'rnatilishi mumkin. Agar o'zgaruvchi o'rnatilmagan bo'lsa, standart qiymat ishlatiladi.
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.
iOS da Build Number ni avtomatik oshirish uchun Xcode Command Line Tools tarkibiga kiruvchi agvtool ishlatiladi.
# 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.
Fastlane — mobil ilovalar qurilishini avtomatlashtirish uchun mashhur vosita. increment_build_number plagini Build Number ni avtomatik oshiradi.
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
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.
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.
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 — 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.
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
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.