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 — এটি সিমান্টিক সংস্করণের সাথে মিল করা সহজ করে।
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 প্রয়োজন। যদি ইতিমধ্যে ব্যবহৃত নম্বর সহ একটি বিল্ড আপলোড করা হয়, সিস্টেম এটি প্রত্যাখ্যান করে।
প্রতিটি বিল্ডের সাথে সংখ্যার একঘেয়ে বৃদ্ধি নিশ্চিত করতে agvtool বা Xcode বিল্ড স্ক্রিপ্টের মাধ্যমে CFBundleVersion পরিচালনা করুন।
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 স্তরে স্বয়ংক্রিয় বৃদ্ধি কনফিগার করুন — এটি রিলিজ শাখায় প্রতিটি কমিটের জন্য ম্যানুয়ালি 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 আপডেট স্বয়ংক্রিয় করে — এটি রিলিজ ত্রুটির সাধারণ কারণগুলির মধ্যে একটি।
Version Name পরিবর্তন না হলেও প্রতিটি বিল্ডের সাথে Build Number বাড়ান — এটি অ্যাপ স্টোরগুলিতে আপডেট প্রক্রিয়ার সঠিক কার্যক্রম নিশ্চিত করে।
versionCode 1 থেকে শুরু করুন এবং প্রতিটি বিল্ডের জন্য 1 বাড়ান। iOS-এর জন্য CFBundleVersion-এর সাথে অনুরূপ পদ্ধতি ব্যবহার করুন। কঠোরভাবে প্রয়োজন না হলে যৌগিক সংখ্যা এড়িয়ে চলুন — একটি সাধারণ ক্রমিক সংখ্যা ট্র্যাক করা সহজ।
Build Number-কে CI/CD সিস্টেম বিল্ড নম্বরের সাথে লিঙ্ক করুন — এটি ত্রুটি থেকে নির্দিষ্ট কমিট পর্যন্ত ট্রেসিং সহজ করে। বিল্ড নম্বর এবং সংস্করণ সহ 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-এ স্বয়ংক্রিয় Build Number বৃদ্ধির জন্য Xcode Command Line Tools-এ নির্মিত agvtool ব্যবহার করা হয়।
# বিল্ড নম্বর 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 অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন