ความแตกต่างระหว่าง Xcode version (CFBundleShortVersionString) และ build (CFBundleVersion)


94

สรุปเป้าหมายของแอป

ใน Xcode 4 ฉันเห็นสิ่งนี้สำหรับสรุปเป้าหมายของฉัน:

รุ่น "" การป้อนข้อมูลสอดคล้องกับCFBundleShortVersionStringในไฟล์ info.plist และ "รูปร่าง" CFBundleVersionสอดคล้องเข้ากับ

อะไรคือความแตกต่างระหว่างสองสิ่งนี้? ฉันเห็นผู้คนจำนวนมากบนอินเทอร์เน็ตต้องการใส่คุณค่าเดียวกันให้กับทั้งสองอย่างและความสงสัยของฉันก็คือเพื่อความเข้ากันได้แบบย้อนกลับ

ฉันมีคำถามสองข้อ:

1) ถ้าฉันเริ่มต้นใหม่แนวทางปฏิบัติที่ดีที่สุดสำหรับการกำหนดเวอร์ชันแอปของคุณคืออะไร

2) ในแอปรุ่นก่อนหน้าทั้งหมดของฉันฉันใช้เพียงCFBundleVersionไฟล์. เพื่อไม่ให้ขั้นตอนการอัปเกรดเกิดความสับสนฉันควรเพิ่มCFBundleVersionวิธีเดิมต่อไปหรือไม่หรือสามารถเปลี่ยนไปใช้ "วิธีที่ถูกต้อง" ได้โดยสมมติว่ามีอยู่


3
นี่เป็นสำเนาของstackoverflow.com/questions/6851660/version-vs-build-in-xcode-4แต่บางทีเวอร์ชันนี้อาจระบุได้ดีกว่า (และมีภาพหน้าจอ)
Daniel Dickison

มีอะไรที่คุณต้องทำเพื่อแสดงฟิลด์ Build ในสรุปของคุณหรือไม่? ฉันเห็นเฉพาะเวอร์ชัน แต่ไม่มีฟิลด์ Build
Kenny Wyland

คำตอบ:


68

เอกสาร Apple "การอ้างอิงคีย์รายการคุณสมบัติข้อมูล"ระบุว่าCFBundleShortVersionStringเป็นรุ่นที่วางจำหน่ายในขณะที่CFBundleVersionแสดงถึงรุ่นใด ๆ ที่เผยแพร่หรือไม่ นอกจากนี้ยังCFBundleShortVersionStringสามารถแปลเป็นภาษาท้องถิ่นได้แม้ว่าฉันไม่รู้ว่าทำไมคุณถึงต้องการเพราะพวกเขาบอกว่ามันควรจะเป็น "สตริงที่ประกอบด้วยจำนวนเต็มที่คั่นด้วยจุดสามจุด" สำหรับรุ่นที่วางจำหน่ายการทำให้ตัวเลขทั้งสองเหมือนกันนั้นสมเหตุสมผล สำหรับการสร้างการพัฒนาคุณอาจใช้CFBundleVersionจุดอื่นแทนจุดและจำนวนเต็ม


แต่ถ้าตอนนี้ฉันใช้ 1.3.1 เป็นของฉันCFBundleVersionและไม่มีอะไรเป็นของฉันCFBundleShortVersionStringและฉันต้องการเปลี่ยนไปใช้CFBundleVersionเพื่อแสดงบิลด์ภายในอย่างน้อยฉันต้องเริ่มต้นด้วยจำนวนเต็มที่สูงกว่า 1.3.1 ใช่ไหม หรือว่าการเปลี่ยนแค่ถามปัญหา?
Philip Walton

เวอร์ชัน ( CFBundleShortVersionString) เป็นสิ่งเดียวที่สำคัญสำหรับการส่งไปยัง Apple Build ( CFBundleVersion) มีไว้เพื่อใช้ในการพัฒนาหรือแสดงในแอปของคุณ ใช้ฐานแปด (ฐาน -8) และทำซ้ำกลับด้านด้วย 12 ถ้าคุณต้องการ
nekno

16
nekno: จริงๆแล้ว CFBundleVersion คือสิ่งที่สำคัญสำหรับ Apple ตรวจสอบข้อความแสดงข้อผิดพลาดนี้ที่ Apple ให้เมื่อส่งแอป: "ไบนารีที่คุณอัปโหลดไม่ถูกต้อง CFBundleVersion ที่สำคัญในไฟล์ Info.plist ต้องมีเวอร์ชันที่สูงกว่าเวอร์ชันที่อัปโหลดก่อนหน้านี้"
malhal

10
บางประเทศใช้ตัวเลขอื่นที่ภาษาอาหรับสมัยใหม่ใช้ในโลกตะวันตกเช่นภาษาอาหรับตะวันออก (٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩) หรือภาษาฮิบรู (א, ב, ג, ד, ה, ו, ז, ח, ט) - และทั้งสองจะเขียนจากขวาไปซ้ายด้วย ยังมีระบบตัวเลขอื่น ๆ อีกมากมาย (ดูen.wikipedia.org/wiki/Category:Numerals ) ดังนั้นฉันเดาว่านั่นคือสิ่งที่ Apple หมายถึงโดยใช้หมายเลขเวอร์ชัน "แปลเป็นภาษาท้องถิ่นได้"
Ruslan Ulanov

อย่างไรก็ตามไม่จำเป็นต้องใช้ตัวเลขสามหลักที่มีเครื่องหมายวรรคตอน ฉันใช้ค่าวันที่และเวลาแทนเช่น201606070620สำหรับทั้งสองค่าในแอปการจัดส่ง iOS 7-8-9
Basil Bourque

3

สำหรับคำถามของ JWWalker เกี่ยวกับสาเหตุที่คุณต้องการแปล CFBundleShortVersionString นั่นจะเป็นตัวคั่นทศนิยม ตัวอย่างเช่นในภาษาที่ตัวคั่นทศนิยมเป็นเครื่องหมายจุลภาคเวอร์ชัน "1.5" จะเป็น "1,5"


30
IMO คุณไม่จำเป็นต้องแปลหมายเลขเวอร์ชัน ฉันอาศัยอยู่ในพื้นที่ที่ตัวคั่นทศนิยมเป็นเครื่องหมายจุลภาค (เยอรมนี) และฉันคุ้นเคยกับหมายเลขเวอร์ชันที่คั่นด้วยจุด อันที่จริงฉันจำไม่ได้ว่าเคยเห็นหมายเลขเวอร์ชันที่มีเครื่องหมายจุลภาค
Christian Specht

2
ฉันยังอาศัยอยู่ในภูมิภาคโดยใช้ลูกน้ำเป็นตัวคั่นทศนิยมแม้ว่า 1,3,1 จะค่อนข้างเป็นค่าแปลก แต่ 1.3.1 ก็ดูดีกว่ามาก
Lucien

1
ฉันคิดว่าหมายความว่าคุณสามารถมีแอปเวอร์ชันต่างๆสำหรับภูมิภาคต่างๆ 1.2.1> en.lproj 1.2.2> fr.lproj แม้ว่า plist ทั้งหมดจะถูกคัดลอกเมื่อคุณโลคัลไลซ์ไฟล์ดังนั้นหมายเลขเวอร์ชันทั้งสองจึงถูกคัดลอกเพื่อให้ทั้งสอง 'สามารถแปลเป็นภาษาท้องถิ่นได้'
brian.clear

1

แก้ไขด่วน:

เพียงแค่เพิ่มลงในCFBundleShortVersionStringไฟล์ plist และแก้ไขเวอร์ชันของคุณ

  1. เปิดเผยไฟล์ InfoPlist.strings
  2. ไฮไลต์และวางโค้ดด้านล่างใน (สมมติว่าอยู่ในโหมดซอร์สโค้ด)

{"CFBundleShortVersionString" = "1.1";}

  1. เปลี่ยน 1.1 เป็นสิ่งที่สร้างใหม่ของคุณ
  2. สร้างและส่งโดยไม่มีข้อผิดพลาดอีกต่อไป!

ป้อนคำอธิบายภาพที่นี่


1

ดูเอกสารของ Apple เกี่ยวกับการอัปโหลดไบนารี

การกำหนดหมายเลขเวอร์ชันและการสร้าง: iTunes Connect แยกหมายเลขเวอร์ชันก่อนวางจำหน่ายและหมายเลขบิวด์จากไบนารี หมายเลขเวอร์ชันก่อนเผยแพร่คือหมายเลข Xcode Version หรือคีย์ "Bundle version string, short" ใน Info.plist หมายเลขบิลด์คือหมายเลข Xcode Build หรือคีย์ "Bundle version" ใน Info.plist หมายเลขรุ่นก่อนวางจำหน่ายและหมายเลขรุ่นจะแสดงบนแท็บรุ่นก่อนเผยแพร่ตามที่อธิบายไว้ในการดูงานสร้าง

การอัปโหลดไบนารีสำหรับแอป

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.