Version Name হল অ্যাপ্লিকেশনের ভার্সন স্ট্রিং যা ব্যবহারকারী স্টোর এবং ডিভাইসে দেখেন। Build Number-এর বিপরীতে, এই প্যারামিটারের একটি সিম্যান্টিক অর্থ রয়েছে এবং এটি পরিবর্তনের গুরুত্ব প্রতিফলিত করে। Android Developers, 2025 অনুসারে, Version Name-এর সঠিক ব্যবহার ব্যবহারকারীদের আপডেটের প্রাসঙ্গিকতা বুঝতে এবং ডেভেলপমেন্ট প্রক্রিয়ায় বিশ্বাস করতে সহায়তা করে।
মূল পয়েন্ট
Version Name হল একটি সিম্যান্টিক স্ট্রিং যা ব্যবহারকারীর জন্য অ্যাপ্লিকেশন রিলিজ সনাক্ত করে। টেকনিক্যাল বিল্ড আইডেন্টিফায়ারের বিপরীতে, এই প্যারামিটারটি অর্থপূর্ণ তথ্য বহন করে: ব্যবহারকারী মূল্যায়ন করতে পারেন যে একটি নতুন আপডেট আগের থেকে কতটা আলাদা।
Version Name Google Play এবং App Store-এ অ্যাপ্লিকেশন কার্ডে, ডিভাইসে "অ্যাপ সম্পর্কে" বিভাগে এবং সিস্টেম আপডেট ডায়ালগে প্রদর্শিত হয়। ডেভেলপাররা রিলিজ ভার্সন তৈরির আগে প্রজেক্ট কনফিগারেশন ফাইলে এটি নির্দিষ্ট করেন।
Semantic Versioning 2.0 (2023) অনুসারে, Major.Minor.Patch ফরম্যাট 78% মোবাইল অ্যাপ্লিকেশনে ব্যবহৃত হয়। মেজর ভার্সন অসামঞ্জস্যপূর্ণ API পরিবর্তনের সাথে পরিবর্তিত হয়, মাইনর ভার্সন নতুন কার্যকারিতা যোগ করার সাথে এবং প্যাচ বাগ ফিক্সের সাথে।
ব্যবহারকারীর সাথে যোগাযোগের জন্য Version Name ব্যবহার করুন: তাদের অবিলম্বে বুঝতে হবে যে অফার করা আপডেটটি কতটা গুরুত্বপূর্ণ — মেজর, মাইনর বা সংশোধনমূলক।
সিম্যান্টিক ভার্সন তিনটি সংখ্যা নিয়ে গঠিত যা বিন্দু দ্বারা পৃথক: Major.Minor.Patch। এই প্রতিটি উপাদান অ্যাপ্লিকেশনে পরিবর্তনের একটি নির্দিষ্ট স্তরের জন্য দায়ী।
মেজর ভার্সন (Major) আমূল পরিবর্তনের সাথে বৃদ্ধি পায় যা ব্যাকওয়ার্ড কম্প্যাটিবিলিটি ভঙ্গ করে। মাইনর ভার্সন (Minor) বিদ্যমান কার্যকারিতা না ভেঙে নতুন কার্যকারিতা যোগ করে। প্যাচ (Patch) শুধুমাত্র বাগ ফিক্স ধারণ করে।
উদাহরণস্বরূপ, ভার্সন 3.2.1 এর অর্থ: তৃতীয় মেজর ভার্সন, দ্বিতীয় মাইনর আপডেট, প্রথম প্যাচ। এই সিস্টেমটি ডেভেলপার এবং ব্যবহারকারী উভয়ের জন্যই বোধগম্য।
Version Name ব্যবহারকারীর কাছে বেশ কয়েকটি মূল স্থানে দৃশ্যমান। অ্যাপ স্টোরে, এটি অ্যাপ্লিকেশন কার্ড হেডার এবং আপডেট তালিকায় প্রদর্শিত হয়। ডিভাইসে, এটি "অ্যাপ সম্পর্কে" বিভাগে সিস্টেম সেটিংসে প্রদর্শিত হয়।
Google Play-এ, Version Name অ্যাপ্লিকেশন নামের নীচে দেখানো হয় এবং ব্যবহারকারীর আপডেট করার সিদ্ধান্তকে প্রভাবিত করে। App Store-এ, ভার্সন স্ট্রিং অ্যাপ্লিকেশন পৃষ্ঠা দেখার সময় একই স্থানে প্রদর্শিত হয়।
Apptentive (2024) গবেষণা অনুসারে, 67% ব্যবহারকারী আপডেট করার আগে অ্যাপ ভার্সন পরীক্ষা করে, এবং স্পষ্ট সিম্যান্টিক্স ইনস্টল কনভার্শন 23% পর্যন্ত বাড়ায়।
Android-এ, Version Name build.gradle ফাইলে (মডিউল স্তরে) versionName প্যারামিটার দ্বারা সেট করা হয়। এই প্যারামিটারটি একটি স্ট্রিং এবং বিন্দু, হাইফেন এবং অক্ষর সহ যেকোনো অক্ষর ধারণ করতে পারে।
প্যারামিটারটি বাধ্যতামূলক versionCode প্যারামিটারের সাথে android.defaultConfig ব্লকের ভিতরে ঘোষণা করা হয়। Android স্ট্রিং ফরম্যাটের উপর কোনো বিধিনিষেধ আরোপ করে না, কিন্তু Google Play সিম্যান্টিক ফরম্যাট ব্যবহার করার পরামর্শ দেয়।
Android Developers (2025) অনুসারে, Google Play স্টোর ইন্টারফেসে প্রদর্শনের জন্য versionName ব্যবহার করে কিন্তু প্রোগ্রাম্যাটিকভাবে এর বিষয়বস্তু বিশ্লেষণ করে না — শুধুমাত্র versionCode আপডেট লজিককে প্রভাবিত করে।
Version Name Major.Minor.Patch ফরম্যাটে নির্দিষ্ট করুন এবং দ্ব্যর্থহীন রিলিজ সনাক্তকরণের জন্য এটি ভার্সন কন্ট্রোল সিস্টেমে ট্যাগের সাথে সিঙ্ক্রোনাইজ করুন।
Gradle build.gradle-এ স্থিরভাবে বা বিল্ড স্ক্রিপ্টের মাধ্যমে গতিশীলভাবে versionName সেট করার অনুমতি দেয়। গতিশীল জেনারেশন স্বয়ংক্রিয় রাতারাতি বিল্ড এবং CI/CD পাইপলাইনের জন্য দরকারী।
build.gradle-এ, versionName গঠনের জন্য পরিবেশ ভেরিয়েবল, কমান্ড-লাইন প্যারামিটার বা শেল স্ক্রিপ্ট কল ব্যবহার করা যেতে পারে। একটি সাধারণ পদ্ধতি হল version.properties ফাইল থেকে ভার্সন পড়া।
এই নমনীয়তা টিমগুলিকে ভার্সনিং প্রক্রিয়া স্বয়ংক্রিয় করতে এবং রিলিজ প্রস্তুতির সময় মানবিক ত্রুটি দূর করতে দেয়।
iOS-এ, Version Name Info.plist ফাইলে CFBundleShortVersionString কী দ্বারা সেট করা হয়। App Store-এ অ্যাপ্লিকেশন প্রকাশের জন্য এটি একটি বাধ্যতামূলক প্যারামিটার, এবং এটি কঠোরভাবে স্ট্রিং হিসাবে টাইপ করা হয়।
Android-এর বিপরীতে, App Store Connect Version Name ফরম্যাট পরীক্ষা করে এবং এটি বিন্দু দ্বারা পৃথক সংখ্যার টেমপ্লেটের সাথে মেলাতে প্রয়োজন। সর্বোচ্চ স্ট্রিং দৈর্ঘ্য 18 অক্ষর, এবং প্রতিটি ভার্সন উপাদান 255-এর বেশি হতে পারে না।
Apple Developer Documentation (2025) অনুসারে, CFBundleShortVersionString App Store দ্বারা স্টোর ইন্টারফেসে এবং ব্যবহারকারীর ডিভাইসে সিস্টেম ডায়ালগে ভার্সন প্রদর্শনের জন্য ব্যবহৃত হয়।
App Store Connect-এ বিল্ড আপলোড করার সময়, নিশ্চিত করুন যে Version Name মার্কেটিং উপকরণে নির্দিষ্ট ভার্সনের সাথে মেলে — এটি ব্যবহারকারীদের সাথে যোগাযোগ সহজ করে।
Xcode টার্গেট সেটিংসে Version Name পরিবর্তনের জন্য একটি গ্রাফিকাল ইন্টারফেস প্রদান করে। "Marketing Version" ফিল্ড Identity-র অধীনে General ট্যাবে অবস্থিত। পরিবর্তনগুলি স্বয়ংক্রিয়ভাবে Info.plist-এ সংরক্ষিত হয়।
অটোমেশন-এর জন্য, Xcode Build Phases-এ বিল্ড স্ক্রিপ্ট বা agvtool (Apple Generic Version Tool) ইউটিলিটি ব্যবহার করা যেতে পারে। agvtool কমান্ড লাইন থেকে ভার্সন পরিচালনার অনুমতি দেয় এবং CI/CD-তে একীভূত হয়।
এই পদ্ধতি বিশেষ করে অ্যাপ্লিকেশনের স্বয়ংক্রিয় বিল্ড এবং ডেলিভারির জন্য fastlane বা Jenkins ব্যবহার করার সময় সুবিধাজনক।
Version Name এবং Build Number ডেভেলপমেন্ট প্রক্রিয়ায় ভিন্ন ভিন্ন কাজ করে। Version Name একটি ব্যবহারকারী-মুখী স্ট্রিং, যেখানে Build Number একটি অভ্যন্তরীণ সংখ্যাসূচক আইডেন্টিফায়ার যা প্রতিটি বিল্ডকে স্বতন্ত্রভাবে সনাক্ত করে।
Build Number (Android-এ versionCode, iOS-এ CFBundleVersion) প্রতিটি নতুন বিল্ডের সাথে বাড়তে হবে এবং অ্যাপ স্টোরগুলি নির্ধারণ করতে ব্যবহার করে কোন ভার্সন নতুন। Version Name একই ভার্সনের একাধিক বিল্ডে অপরিবর্তিত থাকতে পারে।
Google Play Policy (2025) অনুসারে, একই versionCode-যুক্ত দুটি অ্যাপ্লিকেশন একই ভার্সন হিসাবে বিবেচিত হয় — versionCode প্রতিটি APK-র জন্য অনন্য হতে হবে। Version Name এই পরীক্ষায় অংশ নেয় না।
প্রতিটি বিল্ডের সাথে সর্বদা Build Number বাড়ান এবং Version Name শুধুমাত্র তখনই পরিবর্তন করুন যখন কার্যকারিতা পরিবর্তিত হয় — এটি প্রকাশনার সময় বিরোধ প্রতিরোধ করে।
Version Name নির্বাচন টিমের ভার্সনিং কৌশলের উপর নির্ভর করে। সবচেয়ে সাধারণ পদ্ধতি হল সিম্যান্টিক ভার্সনিং (SemVer), তবে বিকল্প স্কিমও বিদ্যমান, যেমন ক্যালেন্ডার ভার্সনিং বা রিলিজ-ডেট ভার্সনিং।
Semantic Versioning 2.0 ঐচ্ছিক প্রি-রিলিজ প্রত্যয় সহ Major.Minor.Patch ফরম্যাট সুপারিশ করে। মোবাইল অ্যাপ্লিকেশনের জন্য, Major.Minor স্কিমও জনপ্রিয়, যেখানে ধারণা সহজ করার জন্য প্যাচ ভার্সন বাদ দেওয়া হয়।
ক্যালেন্ডার ভার্সনিং (CalVer) রিলিজ তারিখকে ভার্সন নম্বর হিসাবে ব্যবহার করে — উদাহরণস্বরূপ, 25.06 (বছর এবং মাস)। এই পদ্ধতিটি ঘন ঘন রিলিজযুক্ত অ্যাপ্লিকেশনের জন্য সুবিধাজনক যেখানে সিম্যান্টিক্সের কোনো অর্থ নেই।
সিম্যান্টিক ভার্সনিং পাবলিক API-যুক্ত অ্যাপ্লিকেশনের জন্য উপযুক্ত যেখানে ব্যাকওয়ার্ড কম্প্যাটিবিলিটি গুরুত্বপূর্ণ। ব্যবহারকারী এবং ইন্টিগ্রেটররা বুঝতে পারেন আপডেটের সাথে কী পরিবর্তন আশা করতে হবে।
ক্যালেন্ডার ভার্সনিং সেই অ্যাপ্লিকেশনের জন্য নির্বাচিত হয় যেখানে ব্যবহারকারীর জন্য রিলিজের সতেজতা পরিবর্তনের পরিধির চেয়ে বেশি গুরুত্বপূর্ণ। উদাহরণস্বরূপ, নিউজ এগ্রিগেটর বা আবহাওয়ার অ্যাপ্লিকেশন।
হাইব্রিড স্কিম উভয় পদ্ধতিকে একত্রিত করে: Major.Minor.RC, যেখানে RC একটি নির্দিষ্ট রিলিজ ক্যান্ডিডেটের জন্য বিল্ড নম্বর। এই স্কিমটি সক্রিয় বিটা পরীক্ষার সময় সুবিধাজনক।
নীচের কোড উদাহরণ দেখায় কিভাবে Android এবং iOS-এ Version Name সেট করতে হয়। Android-এর জন্য Gradle ব্যবহার করা হয়, iOS-এর জন্য — agvtool সহ Xcode Build Settings।
Android-এ, ভার্সন app/build.gradle ফাইলে defaultConfig ব্লকের ভিতরে সেট করা হয়। versionName প্যারামিটার একটি স্ট্রিং মান গ্রহণ করে।
android {
defaultConfig {
versionCode 3
versionName "2.1.0"
}
}
versionName একটি বাহ্যিক ফাইল থেকেও পড়া যেতে পারে বা Gradle Script ব্যবহার করে গতিশীলভাবে তৈরি করা যেতে পারে।
ডায়নামিক ভার্সন CI/CD সিস্টেমের পরিবেশ ভেরিয়েবল থেকে গঠিত হয়। এটি নিশ্চিত করে যে প্রতিটি বিল্ড সঠিক ভার্সন নম্বর পায়।
def getVersionName = {
return System.getenv("VERSION_NAME") ?:
"2.1.0"
}
android {
defaultConfig {
versionName getVersionName()
}
}
এই পদ্ধতি ভার্সনিং স্বয়ংক্রিয় করে এবং বিল্ড এবং রিপোজিটরি ট্যাগের মধ্যে অমিলের ঝুঁকি দূর করে।
iOS-এ, ভার্সন Xcode-এর মাধ্যমে বা agvtool ব্যবহার করে কমান্ড লাইনের মাধ্যমে সেট করা যেতে পারে।
# মার্কেটিং ভার্সন সেট করা
xcrun agvtool new-marketing-version 2.1.0
# বর্তমান ভার্সন পড়া
xcrun agvtool what-marketing-version
agvtool স্বয়ংক্রিয়ভাবে Info.plist আপডেট করে এবং Xcode প্রজেক্টে সমস্ত টার্গেটে ভার্সন সিঙ্ক্রোনাইজ করে।
প্রায়শই জিজ্ঞাসিত প্রশ্ন
Version Name একটি ব্যবহারকারী-মুখী ভার্সন স্ট্রিং যা অ্যাপ স্টোরে প্রদর্শিত হয়। Build Number একটি অভ্যন্তরীণ সংখ্যাসূচক বিল্ড আইডেন্টিফায়ার যা প্রতিটি বিল্ডকে স্বতন্ত্রভাবে সনাক্ত করে এবং স্টোরগুলি ভার্সনের নতুনত্ব নির্ধারণ করতে ব্যবহার করে।
Android-এ, versionName অক্ষর এবং হাইফেন সহ যেকোনো অক্ষর ধারণ করতে পারে। iOS-এ, CFBundleShortVersionString-এ বিন্দু দ্বারা পৃথক সংখ্যা থাকতে হবে, যদিও প্রি-রিলিজ ভার্সনের জন্য অক্ষর প্রত্যয় অনুমোদিত।
CI/CD টুল — GitHub Actions, GitLab CI বা Jenkins ব্যবহার করুন। বিল্ড স্ক্রিপ্ট ফাইল থেকে বর্তমান ভার্সন পড়ে, প্রয়োজনীয় উপাদান বাড়ায় এবং রিলিজ তৈরির আগে নতুন মান লিখে।
স্টোর নতুন বিল্ড গ্রহণ করবে যদি Build Number বেড়ে থাকে। তবে ব্যবহারকারীরা ভার্সনে পরিবর্তন দেখতে পাবেন না, যা বিভ্রান্তির কারণ হতে পারে। নতুন কার্যকারিতার প্রতিটি রিলিজের সাথে Version Name পরিবর্তন করার সুপারিশ করা হয়।
Major.Minor.Patch ফরম্যাট অধিকাংশ প্রকল্পের জন্য সর্বোত্তম পছন্দ। এটি ব্যবহারকারী এবং ডেভেলপারদের জন্য বোধগম্য, SemVer মান মেনে চলে এবং সমস্ত অ্যাপ স্টোর দ্বারা সমর্থিত।
সারসংক্ষেপ
আমরা একটি মোবাইল অ্যাপ্লিকেশন টার্নকি তৈরি করব
IT Sectr 2017 সাল থেকে স্টার্টআপ এবং ব্যবসার জন্য iOS এবং Android অ্যাপ্লিকেশন তৈরি করে। আমরা আপনাকে পরামর্শ দেব এবং সেরা সমাধান প্রস্তাব করব।
আরও পড়ুন