Build Number ایک موبائل ایپلیکیشن بلڈ کا ایک منفرد عددی شناخت کنندہ ہے جو اندرونی ورژن کی شناخت کے لیے کام کرتا ہے۔ Version Name کے برعکس، یہ پیرامیٹر صارف کو نہیں دکھایا جاتا، لیکن یہ ایپ اسٹورز کے لیے انتہائی اہم ہے۔ Android Developers, 2025 کے مطابق، Build Number کا صحیح استعمال اپ ڈیٹس شائع کرتے وقت تنازعات کو روکتا ہے۔
اہم نکات
Build Number ایک منفرد عددی شناخت کنندہ ہے جو موبائل ایپلیکیشن کے ہر بلڈ کو تفویض کیا جاتا ہے۔ ایپ اسٹورز اسے ورژن کی ندرت کا تعین کرنے کے لیے استعمال کرتے ہیں — جتنی زیادہ تعداد، بلڈ اتنا ہی نیا۔
Android میں اس پیرامیٹر کو versionCode کہا جاتا ہے، iOS میں — CFBundleVersion۔ دونوں پیرامیٹرز اشاعت کے لیے لازمی ہیں اور ہر نئے بلڈ کے ساتھ یکساں طور پر بڑھنے چاہئیں۔
Google Play Console Help (2025) کے مطابق، ہر APK اپ لوڈ کے ساتھ versionCode کی جانچ کی جاتی ہے: اگر پہلے شائع شدہ ورژن سے کم یا برابر versionCode والا بلڈ اپ لوڈ کیا جاتا ہے، تو Google Play فائل کو غلطی کے ساتھ مسترد کر دیتا ہے۔
اندرونی بلڈ ٹریکنگ کے لیے Build Number استعمال کریں — مسئلہ والی ریلیز کی فوری شناخت کے لیے اپنے ورژن کنٹرول سسٹم میں نمبر کو commit hash سے منسلک کریں۔
Build Number ہر تیار کردہ ایپلیکیشن ورژن کی غیر مبہم شناخت کے مسئلے کو حل کرتا ہے۔ اس کے بغیر، یہ تعین کرنا ناممکن ہے کہ کون سا بلڈ نیا ہے اگر Version Name تبدیل نہیں ہوا ہے۔
Google Play اور App Store جیسے ایپ اسٹورز اپ ڈیٹس کے دوران تنازعات حل کرنے کے لیے 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 ورژن موازنہ کے لیے انہیں ایک واحد ترتیبی نمبر کے طور پر استعمال کرتا ہے۔
Android میں Build Number build.gradle فائل میں versionCode پیرامیٹر سے سیٹ کیا جاتا ہے۔ یہ ایک عدد ہے جو Google Play پر شائع کردہ ایپلیکیشن کے ہر ورژن کے لیے منفرد ہونا چاہیے۔
پیرامیٹر android.defaultConfig بلاک کے اندر اعلان کیا جاتا ہے اور ہر نئی ریلیز کے ساتھ بڑھنا چاہیے۔ Google Play ایک ہی ایپلیکیشن کے دوسرے ورژن کے لیے پہلے استعمال شدہ versionCode والا APK اپ لوڈ کرنے کی اجازت نہیں دیتا۔
Google Play Developer API (2025) کے مطابق، versionCode کی زیادہ سے زیادہ قیمت 2100000000 ہے۔ حد ختم ہونے سے بچنے کے لیے 1 سے شروع کرکے ہر نئے بلڈ کے لیے 1 بڑھانے کی سفارش کی جاتی ہے۔
ورژن نمبر کو انکوڈ کرنے والا ایک مرکب versionCode استعمال کریں: Major * 1000000 + Minor * 1000 + Patch — یہ semantic ورژن کے ساتھ مماثلت کو آسان بناتا ہے۔
versionCode کی سخت حدود ہیں: یہ 32 بٹ دستخط شدہ عدد ہے، لہذا زیادہ سے زیادہ قیمت 2100000000 ہے۔ اگر حد ختم ہو جاتی ہے، تو ایپلیکیشن Google Play پر اپ ڈیٹ نہیں کی جا سکتی۔
Android App Bundle کے لیے versionCode بنیادی ماڈیول میں بھی متعین کیا جاتا ہے، اور ہر فیچر ماڈیول کا اپنا versionCode ہو سکتا ہے۔ Google Play انہیں ایک واحد تصدیقی نظام میں یکجا کرتا ہے۔
ورژننگ حکمت عملی کا انتخاب کرتے وقت اس حد پر غور کرنا ضروری ہے — نمبر کا بہت تیزی سے بڑھنا طویل مدت میں مسائل کا باعث بن سکتا ہے۔
iOS میں Build Number Info.plist فائل میں CFBundleVersion کلید سے سیٹ کیا جاتا ہے۔ Android کے برعکس، یہ پیرامیٹر ایک سٹرنگ ہے، لیکن اسے بھی ہر نئے بلڈ کے ساتھ بڑھنا چاہیے۔
CFBundleVersion کی شکل ایک سے تین نقطوں سے الگ کردہ نمبروں پر مشتمل ہے۔ ہر نمبر 255 سے تجاوز نہیں کر سکتا۔ App Store موازنہ کے لیے سٹرنگ کو نمبروں کی ترتیب کے طور پر تعبیر کرتا ہے: 1.0.1 کو 1.0.0 سے نیا سمجھا جاتا ہے۔
Apple Developer Documentation (2025) کے مطابق، App Store Connect کو اپ لوڈ کردہ ہر بلڈ کے لیے منفرد CFBundleVersion کی ضرورت ہوتی ہے۔ اگر پہلے استعمال شدہ نمبر والا بلڈ اپ لوڈ کیا جاتا ہے، تو سسٹم اسے مسترد کر دیتا ہے۔
ہر بلڈ کے ساتھ نمبر کی یکساں افزائش کو یقینی بنانے کے لیے CFBundleVersion کو agvtool یا Xcode بلڈ اسکرپٹس کے ذریعے منظم کریں۔
Xcode Build Settings کے ذریعے CFBundleVersion کو منظم کرنے کی اجازت دیتا ہے۔ “Current Project Version” فیلڈ بنیادی قیمت متعین کرتا ہے، اور Build Phase اسکرپٹس خود بخود اسے بڑھا سکتے ہیں۔
CI/CD کے لیے fastlane پلگ ان increment_build_number استعمال کریں، جو Info.plist سے موجودہ ورژن پڑھتا ہے اور اسے متعین کردہ قیمت سے بڑھاتا ہے۔ یہ ہر بلڈ کی انفرادیت کو یقینی بناتا ہے۔
یہ طریقہ Build Number کے انتظام کو مکمل طور پر خودکار کرتا ہے اور ریلیز کی تیاری کے دوران انسانی غلطیوں کو ختم کرتا ہے۔
Build Number کا خودکار اضافہ جدید CI/CD پائپ لائنز میں ایک معیاری عمل ہے۔ بلڈ نمبر کو دستی طور پر بڑھانا اشاعت کے دوران غلطیوں اور تنازعات کا باعث بنتا ہے۔
GitHub Actions، GitLab CI اور Jenkins بلڈ نمبر کے ساتھ بلٹ ان متغیرات فراہم کرتے ہیں۔ یہ متغیرات Build Number کے خودکار متبادل کے لیے Gradle یا Xcode اسکرپٹس میں استعمال ہوتے ہیں۔
GitLab CI Documentation (2025) کے مطابق، CI_PIPELINE_IID متغیر ہر پائپ لائن کے لیے ایک منفرد نمبر کی ضمانت دیتا ہے، جو اسے Build Number کے طور پر استعمال کے لیے مثالی بناتا ہے۔
CI/CD سطح پر خودکار اضافہ ترتیب دیں — یہ ریلیز برانچ میں ہر commit کے لیے Build Number کو دستی طور پر تبدیل کرنے کی ضرورت کو ختم کرتا ہے۔
GitHub Actions بلٹ ان متغیر run_number کو سپورٹ کرتا ہے، جو پائپ لائن کے ہر رن کے ساتھ خود بخود بڑھتا ہے۔ قیمت versionCode کے ذریعے Gradle کو منتقل کی جا سکتی ہے۔
Jenkins BUILD_NUMBER متغیر استعمال کرتا ہے، جو تمام بلڈ مراحل میں دستیاب ہوتا ہے۔ Xcode منصوبوں کے لیے، Jenkins اس نمبر کے ساتھ agvtool چلاتا ہے۔
اضافی ترتیب کو کم سے کم کرنے کے لیے اپنے اسٹیک میں ضم شدہ ٹول کا انتخاب کریں۔
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 تبدیل نہ ہو — یہ ایپ اسٹورز میں اپ ڈیٹ میکانزم کے درست کام کو یقینی بناتا ہے۔
versionCode کو 1 سے شروع کریں اور ہر بلڈ کے لیے 1 بڑھائیں۔ iOS کے لیے CFBundleVersion کے ساتھ اسی طرح کا طریقہ استعمال کریں。 جب تک سختی سے ضروری نہ ہو مرکب نمبروں سے گریز کریں — ایک سادہ ترتیب وار نمبر ٹریک کرنا آسان ہے۔
Build Number کو CI/CD سسٹم بلڈ نمبر سے منسلک کریں — یہ غلطی سے مخصوص commit تک ٹریسنگ کو آسان بناتا ہے۔ بلڈ نمبر اور ورژن کے ساتھ Git ٹیگ ریلیز مینجمنٹ کے لیے بہترین عمل ہے۔
کوڈ کی مثالیں دکھاتی ہیں کہ دونوں پلیٹ فارمز پر خودکار Build Number اضافہ کیسے ترتیب دیا جائے۔
Android میں versionCode کو CI/CD ماحولی متغیر کے ذریعے سیٹ کیا جا سکتا ہے۔ اگر متغیر سیٹ نہیں ہے، تو ایک ڈیفالٹ قیمت استعمال ہوتی ہے۔
android {
defaultConfig {
versionCode System.getenv("CI_PIPELINE_ID")?.toInteger() ?: 1
versionName "1.2.0"
}
}
versionCode اپنی قیمت CI/CD متغیر سے حاصل کرتا ہے، جو پائپ لائن میں ہر بلڈ کے لیے نمبر کی انفرادیت کی ضمانت دیتا ہے۔
iOS میں، Xcode Command Line Tools میں شامل agvtool، Build Number کے خودکار اضافے کے لیے استعمال ہوتا ہے۔
# بلڈ نمبر میں 1 کا اضافہ کریں
xcrun agvtool next-version -all
# مخصوص بلڈ نمبر سیٹ کریں
xcrun agvtool new-version -all "3.0.1"
پرچم -all پروجیکٹ کے تمام اہداف میں ورژن کو اپ ڈیٹ کرتا ہے، مرکزی ایپلیکیشن اور ایکسٹینشنز کے درمیان قدروں کی ہم آہنگی کو یقینی بناتا ہے۔
Fastlane موبائل ایپلیکیشن بلڈز کو خودکار کرنے کا ایک مقبول ٹول ہے۔ increment_build_number پلگ ان خود بخود Build Number بڑھاتا ہے۔
increment_build_number(
build_number: ENV["BUILD_NUMBER"] ||
latest_testflight_build_number + 1
)
Fastlane کسی بھی CI/CD سسٹم کے ساتھ ضم ہوتا ہے اور Android اور iOS دونوں منصوبوں کو سپورٹ کرتا ہے۔
اکثر پوچھے گئے سوالات
ایپ اسٹور اپ لوڈ مسترد کر دے گا۔ Google Play اور App Store چیک کرتے ہیں کہ نئے بلڈ کا Build Number پہلے شائع شدہ ورژن سے بڑا ہے۔ اگر شرط پوری نہیں ہوتی، تو اپ لوڈ مسترد کر دیا جائے گا۔
صرف نئی ایپلیکیشن کے لیے۔ پہلی اشاعت کے بعد، Build Number صرف بڑھنا چاہیے۔ اسے 1 پر ری سیٹ کرنے سے نیا ورژن شائع کرنے کی کوشش پر “versionCode already exists” کی غلطی ہوگی۔
2100000000 Android میں versionCode کی زیادہ سے زیادہ قیمت ہے، کیونکہ یہ 32 بٹ دستخط شدہ عدد ہے۔ فی بلڈ 1 کے مناسب اضافے کے ساتھ، حد اربوں بلڈز کے لیے کافی ہوگی۔
CFBundleVersion اندرونی بلڈ نمبر ہے جو ہر بلڈ کے ساتھ بڑھنا چاہیے۔ CFBundleShortVersionString صارف کو نظر آنے والا ورژن ہے جو App Store میں ظاہر ہوتا ہے۔ پہلا مشینوں کے لیے، دوسرا لوگوں کے لیے۔
ہاں، یقیناً۔ TestFlight بھی ضرورت ہے کہ ہر اپ لوڈ کردہ بلڈ کا ایک منفرد Build Number ہو۔ اگر نمبر نہ بڑھایا جائے، TestFlight اپ لوڈ مسترد کر دے گا۔
خلاصہ
ہم ایک موبائل ایپلیکیشن ٹرنکی تیار کریں گے
IT Sectr 2017 سے اسٹارٹ اپس اور کاروبار کے لیے iOS اور Android ایپلیکیشنز بناتا ہے۔ ہم آپ کو مشورہ دیں گے اور بہترین حل تجویز کریں گے۔
مزید پڑھیں