Version Name: ความหมายของพารามิเตอร์และการตั้งค่า

ผู้แต่ง: IT Sectr เผยแพร่เมื่อ: 2026-04-18 เวลาอ่าน: 8 นาที

Version Name คือสตริงเวอร์ชันของแอปพลิเคชันที่ผู้ใช้เห็นในร้านค้าและบนอุปกรณ์ แตกต่างจาก Build Number พารามิเตอร์นี้มีความหมายเชิงความหมายและสะท้อนถึงความสำคัญของการเปลี่ยนแปลง ตาม Android Developers, 2025 การใช้ Version Name อย่างถูกต้องช่วยให้ผู้ใช้เข้าใจความเกี่ยวข้องของการอัปเดตและไว้วางใจกระบวนการพัฒนา

ประเด็นสำคัญ

  • Version Name คือสตริงเวอร์ชันที่ผู้ใช้เห็น ซึ่งแสดงใน App Store, Google Play และบนอุปกรณ์ของผู้ใช้
  • ใน Android กำหนดด้วยพารามิเตอร์ versionName ในไฟล์ build.gradle ใน iOS — CFBundleShortVersionString ใน Info.plist
  • แตกต่างจาก Build Number ตรงที่ Version Name ไม่ได้ใช้ สำหรับการระบุบิลด์ภายในและสามารถซ้ำกันได้
  • รูปแบบเชิงความหมาย Major.Minor.Patch เป็นรูปแบบที่พบมากที่สุดสำหรับการกำหนด Version Name
  • การเพิ่ม อัตโนมัติ ของ Version Name ผ่าน CI/CD ลดความเสี่ยงของข้อผิดพลาดจากมนุษย์ในระหว่างการเผยแพร่

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

Version Name แสดงให้ผู้ใช้เห็นในหลายตำแหน่งสำคัญ ในร้านค้าแอป จะปรากฏในหัวข้อการ์ดแอปพลิเคชันและในรายการอัปเดต บนอุปกรณ์ จะปรากฏในการตั้งค่าระบบในส่วน “เกี่ยวกับแอป”

บน Google Play Version Name จะแสดงใต้ชื่อแอปพลิเคชันและมีผลต่อการตัดสินใจของผู้ใช้ในการอัปเดต ใน App Store สตริงเวอร์ชันจะแสดงในตำแหน่งเดียวกันเมื่อดูหน้าแอปพลิเคชัน

จากการวิจัยของ Apptentive (2024) ผู้ใช้ 67% ตรวจสอบเวอร์ชันแอปก่อนอัปเดต และความหมายที่ชัดเจนช่วยเพิ่มอัตราการแปลงการติดตั้งถึง 23%

Version Name บน Android

บน Android Version Name กำหนดด้วยพารามิเตอร์ versionName ในไฟล์ build.gradle (ระดับโมดูล) พารามิเตอร์นี้เป็นสตริงและสามารถมีอักขระใดก็ได้ รวมถึงจุด ยัติภังค์ และตัวอักษร

พารามิเตอร์ถูกประกาศภายในบล็อก android.defaultConfig พร้อมกับพารามิเตอร์บังคับ versionCode Android ไม่จำกัดรูปแบบสตริง แต่ Google Play แนะนำให้ใช้ รูปแบบเชิงความหมาย

ตาม Android Developers (2025) Google Play ใช้ versionName สำหรับแสดงผลในอินเทอร์เฟซร้านค้าแต่ไม่ได้วิเคราะห์เนื้อหาโดยทางโปรแกรม — มีเพียง versionCode เท่านั้นที่ส่งผลต่อตรรกะการอัปเดต

ระบุ Version Name ในรูปแบบ Major.Minor.Patch และซิงโครไนซ์กับแท็กในระบบควบคุมเวอร์ชันเพื่อระบุรุ่นเผยแพร่ได้อย่างชัดเจน

คุณสมบัติของ versionName ใน Gradle

Gradle อนุญาตให้กำหนด versionName แบบคงที่ใน build.gradle หรือแบบไดนามิกผ่านสคริปต์บิลด์ การสร้างแบบไดนามิกมีประโยชน์สำหรับบิลด์อัตโนมัติข้ามคืนและไปป์ไลน์ CI/CD

ใน build.gradle คุณสามารถใช้ตัวแปรสภาพแวดล้อม พารามิเตอร์บรรทัดคำสั่ง หรือการเรียกสคริปต์เชลล์เพื่อสร้าง versionName วิธีการทั่วไปคือการอ่านเวอร์ชันจากไฟล์ version.properties

ความยืดหยุ่น นี้ช่วยให้ทีมสามารถทำให้กระบวนการกำหนดเวอร์ชันเป็นอัตโนมัติและกำจัดข้อผิดพลาดของมนุษย์ในระหว่างการเตรียมเผยแพร่

Version Name บน iOS

บน iOS Version Name กำหนดด้วยคีย์ CFBundleShortVersionString ในไฟล์ Info.plist นี่คือพารามิเตอร์บังคับสำหรับการเผยแพร่แอปบน App Store และถูกกำหนดชนิดเป็นสตริงอย่างเคร่งครัด

แตกต่างจาก Android App Store Connect ตรวจสอบรูปแบบของ Version Name และกำหนดให้ตรงกับรูปแบบของตัวเลขที่คั่นด้วยจุด ความยาวสตริงสูงสุดคือ 18 อักขระ และแต่ละองค์ประกอบของเวอร์ชันต้องไม่เกิน 255

ตาม เอกสารสำหรับนักพัฒนา Apple (2025) CFBundleShortVersionString ถูกใช้โดย App Store เพื่อแสดงเวอร์ชันในอินเทอร์เฟซร้านค้าและในกล่องโต้ตอบระบบบนอุปกรณ์ของผู้ใช้

เมื่ออัปโหลดบิลด์ไปยัง App Store Connect ตรวจสอบให้แน่ใจว่า Version Name ตรงกับเวอร์ชันที่ระบุในเอกสารการตลาด — ซึ่งช่วยให้การสื่อสารกับผู้ใช้งาน่ายขึ้น

การรวมกับ Xcode

Xcode มีอินเทอร์เฟซกราฟิกสำหรับเปลี่ยน Version Name ในการตั้งค่าเป้าหมาย ฟิลด์ “Marketing Version” อยู่ในแท็บ General ภายใต้ส่วน Identity การเปลี่ยนแปลงจะถูกบันทึกไปยัง Info.plist โดยอัตโนมัติ

สำหรับ ระบบอัตโนมัติ คุณสามารถใช้สคริปต์บิลด์ใน Xcode Build Phases หรือยูทิลิตี้ agvtool (Apple Generic Version Tool) agvtool ช่วยให้จัดการเวอร์ชันจากบรรทัดคำสั่งและรวมเข้ากับ CI/CD

วิธีการนี้ สะดวกเป็นพิเศษเมื่อใช้ fastlane หรือ Jenkins สำหรับการบิลด์และการส่งมอบแอปพลิเคชันอัตโนมัติ

ความแตกต่างระหว่าง Version Name และ Build Number

Version Name และ Build Number ทำหน้าที่ต่างกันในกระบวนการพัฒนา Version Name เป็นสตริงที่ผู้ใช้เห็น ในขณะที่ Build Number เป็นตัวระบุตัวเลขภายในที่ระบุแต่ละบิลด์โดยไม่ซ้ำกัน

Build Number (versionCode บน Android, CFBundleVersion บน iOS) ต้องเพิ่มขึ้น ทุกครั้งที่มีบิลด์ใหม่ และร้านค้าแอปใช้เพื่อกำหนดว่าเวอร์ชันใดใหม่กว่า Version Name สามารถคงเดิมได้ในหลายบิลด์ของเวอร์ชันเดียวกัน

ตาม นโยบาย Google Play (2025) แอปสองแอปที่มี versionCode เดียวกันถือเป็นเวอร์ชันเดียวกัน — versionCode ต้องไม่ซ้ำกันสำหรับแต่ละ APK Version Name ไม่มีส่วนร่วมในการตรวจสอบนี้

เพิ่ม Build Number ทุกครั้งที่มีบิลด์ใหม่และเปลี่ยน Version Name เฉพาะเมื่อฟังก์ชันการทำงานเปลี่ยน — ซึ่งป้องกันความขัดแย้งระหว่างการเผยแพร่

วิธีเลือก Version Name

การเลือก Version Name ขึ้นอยู่กับกลยุทธ์การกำหนดเวอร์ชันของทีม วิธีการที่พบมากที่สุดคือการกำหนดเวอร์ชันเชิงความหมาย (SemVer) แต่มีรูปแบบทางเลือกอื่น เช่น การกำหนดเวอร์ชันตามปฏิทินหรือตามวันที่เผยแพร่

Semantic Versioning 2.0 แนะนำรูปแบบ Major.Minor.Patch พร้อมส่วนต่อท้ายก่อนเผยแพร่เพิ่มเติม สำหรับแอปมือถือ รูปแบบ Major.Minor ก็เป็นที่นิยมเช่นกัน โดยละเว้นเวอร์ชันแพตช์เพื่อลดความซับซ้อน

การกำหนดเวอร์ชันตามปฏิทิน (CalVer) ใช้ วันที่เผยแพร่ เป็นหมายเลขเวอร์ชัน — เช่น 25.06 (ปีและเดือน) วิธีการนี้สะดวกสำหรับแอปที่มีการเผยแพร่บ่อยครั้งซึ่งความหมายไม่มีนัยสำคัญ

คำแนะนำในการเลือกรูปแบบ

การกำหนดเวอร์ชันเชิงความหมาย เหมาะสำหรับแอปที่มี API สาธารณะซึ่งความเข้ากันได้ย้อนหลังมีความสำคัญ ผู้ใช้และผู้รวมระบบเข้าใจว่าต้องคาดหวังการเปลี่ยนแปลงใดบ้างเมื่ออัปเดต

การกำหนดเวอร์ชันตามปฏิทิน ถูกเลือกสำหรับแอปที่ความสดใหม่ของการเผยแพร่สำคัญกว่าขอบเขตของการเปลี่ยนแปลง ตัวอย่างเช่น ตัวรวบรวมข่าวหรือแอปสภาพอากาศ

รูปแบบไฮบริด รวมทั้งสองวิธีการ: Major.Minor.RC โดยที่ RC คือหมายเลขบิลด์สำหรับผู้สมัครเผยแพร่ที่เฉพาะเจาะจง รูปแบบนี้สะดวกในระหว่างการทดสอบเบต้าที่ใช้งานอยู่

ตัวอย่างการกำหนดค่า Version Name

ตัวอย่างโค้ด ด้านล่างแสดงวิธีการตั้งค่า Version Name บน Android และ iOS สำหรับ Android ใช้ Gradle สำหรับ iOS ใช้ Xcode Build Settings กับ agvtool

การตั้งค่า versionName ใน Android

ใน Android เวอร์ชันถูกกำหนดในไฟล์ app/build.gradle ภายในบล็อก defaultConfig พารามิเตอร์ versionName รับค่าสตริง

groovy
android {
    defaultConfig {
        versionCode 3
        versionName "2.1.0"
    }
}

versionName สามารถอ่านได้จากไฟล์ภายนอกหรือสร้างแบบไดนามิกโดยใช้ Gradle Script

การสร้าง versionName แบบไดนามิก

เวอร์ชันแบบไดนามิก ถูกสร้างจากตัวแปรสภาพแวดล้อมของระบบ CI/CD ซึ่งรับประกันว่าทุกบิลด์จะได้รับหมายเลขเวอร์ชันที่ถูกต้อง

groovy
def getVersionName = {
    return System.getenv("VERSION_NAME") ?:
            "2.1.0"
}

android {
    defaultConfig {
        versionName getVersionName()
    }
}

วิธีการนี้ ทำให้การกำหนดเวอร์ชันเป็นอัตโนมัติและกำจัดความเสี่ยงของความไม่ตรงกันระหว่างบิลด์และแท็กในพื้นที่เก็บข้อมูล

การตั้งค่า CFBundleShortVersionString ใน iOS

ใน iOS เวอร์ชันสามารถตั้งค่าผ่าน Xcode หรือผ่านบรรทัดคำสั่งโดยใช้ agvtool

bash
# การตั้งค่าเวอร์ชันการตลาด
xcrun agvtool new-marketing-version 2.1.0

# การอ่านเวอร์ชันปัจจุบัน
xcrun agvtool what-marketing-version

agvtool อัปเดต Info.plist โดยอัตโนมัติและซิงโครไนซ์เวอร์ชันทั่วทุกเป้าหมายในโครงการ Xcode

คำถามที่พบบ่อย

Version Name แตกต่างจาก Build Number อย่างไร?

Version Name คือสตริงเวอร์ชันที่ผู้ใช้เห็นซึ่งแสดงในร้านค้าแอป Build Number คือตัวระบุบิลด์ตัวเลขภายในที่ระบุแต่ละบิลด์โดยไม่ซ้ำกันและร้านค้าใช้เพื่อกำหนดความใหม่ของเวอร์ชัน

สามารถใช้ตัวอักษรใน Version Name ได้หรือไม่?

บน Android versionName สามารถมีอักขระใดก็ได้รวมถึงตัวอักษรและยัติภังค์ บน iOS CFBundleShortVersionString ต้องประกอบด้วยตัวเลขที่คั่นด้วยจุด แม้ว่าส่วนต่อท้ายตัวอักษรจะได้รับอนุญาตสำหรับเวอร์ชันก่อนเผยแพร่

จะเพิ่ม Version Name โดยอัตโนมัติได้อย่างไร?

ใช้ เครื่องมือ CI/CD — GitHub Actions, GitLab CI หรือ Jenkins สคริปต์บิลด์อ่านเวอร์ชันปัจจุบันจากไฟล์ เพิ่มองค์ประกอบที่ต้องการ และเขียนค่าใหม่ก่อนสร้างรุ่นเผยแพร่

จะเกิดอะไรขึ้นหากฉันไม่เปลี่ยน Version Name?

ร้านค้า จะยอมรับบิลด์ใหม่ หาก Build Number เพิ่มขึ้น อย่างไรก็ตาม ผู้ใช้จะไม่เห็นการเปลี่ยนแปลงในเวอร์ชัน ซึ่งอาจทำให้เกิดความสับสน แนะนำให้เปลี่ยน Version Name ทุกครั้งที่เผยแพร่ฟังก์ชันใหม่

รูปแบบ Version Name ใดดีที่สุดสำหรับผู้ใช้?

รูปแบบ Major.Minor.Patch เป็นตัวเลือกที่เหมาะสมที่สุดสำหรับโครงการส่วนใหญ่ เข้าใจได้สำหรับผู้ใช้และนักพัฒนา สอดคล้องกับมาตรฐาน SemVer และรองรับโดยร้านค้าแอปทั้งหมด

สรุป

  • Version Name คือสตริงเวอร์ชันที่ผู้ใช้เห็นซึ่งแสดงในร้านค้าแอปและบนอุปกรณ์ แตกต่างจาก Build Number
  • บน Android กำหนดผ่าน versionName ใน build.gradle บน iOS — CFBundleShortVersionString ใน Info.plist
  • รูปแบบเชิงความหมาย Major.Minor.Patch เป็นมาตรฐานสำหรับการกำหนดเวอร์ชันแอปมือถือ ผู้ใช้เข้าใจได้ง่าย
  • Version Name ไม่มีส่วนร่วม ในตรรกะการอัปเดตของร้านค้า — Build Number (versionCode / CFBundleVersion) ถูกใช้เพื่อการนั้น
  • ระบบอัตโนมัติ ของการกำหนดเวอร์ชันผ่าน CI/CD ลดความเสี่ยงของข้อผิดพลาดและเร่งการเตรียมเผยแพร่
  • สำหรับ iOS ใช้ agvtool จากบรรทัดคำสั่งเพื่อจัดการเวอร์ชัน สำหรับ Android ใช้ Gradle Script
  • การเลือกรูปแบบ ขึ้นอยู่กับประเภทแอป — เชิงความหมายสำหรับผลิตภัณฑ์ที่มี API ตามปฏิทินสำหรับการเผยแพร่บ่อยครั้ง

เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร

IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ

ปรึกษาโครงการ

อ่านเพิ่มเติม