Sự khác biệt giữa phiên bản Xcode (CFBundleShortVersionString) và bản dựng (CFBundleVersion)


94

Tóm tắt mục tiêu ứng dụng

Trong Xcode 4, tôi thấy điều này cho bản tóm tắt mục tiêu của mình:

Đầu vào "Phiên bản" tương ứng với CFBundleShortVersionStringtrong tệp info.plist và đầu vào "Bản dựng" tương ứng với CFBundleVersion.

Sự khác biệt giữa hai cái này là gì? Tôi thấy rất nhiều người trên internet muốn đặt giá trị như nhau cho cả hai, và điều tôi nghi ngờ là tính tương thích ngược.

Tôi có hai câu hỏi:

1) Nếu tôi bắt đầu từ đầu, thì đâu sẽ là phương pháp hay nhất để tạo phiên bản ứng dụng của bạn?

2) Trong tất cả các phiên bản trước của ứng dụng, tôi chỉ sử dụng CFBundleVersion. Để không làm rối loạn quá trình nâng cấp, tôi có nên tiếp tục tăng CFBundleVersionnhư cách tôi đã làm hay có thể chuyển sang "cách đúng", giả sử một cách tồn tại?


3
Đây là bản sao của stackoverflow.com/questions/6851660/version-vs-build-in-xcode-4 nhưng có lẽ phiên bản này được nêu rõ hơn (và có ảnh chụp màn hình).
Daniel Dickison,

Bạn phải làm gì để hiển thị trường Xây dựng trong Tóm tắt của mình? Tôi chỉ thấy Phiên bản, nhưng không có trường Bản dựng.
Kenny Wyland

Câu trả lời:


68

Tài liệu của Apple "Thông tin tham khảo về danh sách thuộc tính chính" nói rằng CFBundleShortVersionStringđại diện cho một phiên bản phát hành, trong khi CFBundleVersionđại diện cho bất kỳ bản dựng nào, được phát hành hay không. Ngoài ra, CFBundleShortVersionStringcó thể được bản địa hóa, mặc dù tôi không biết tại sao bạn muốn, vì họ nói rằng nó được cho là "một chuỗi bao gồm ba số nguyên được phân tách bằng dấu chấm". Đối với bản dựng phát hành, sẽ là hợp lý nếu làm cho hai con số giống nhau. Đối với một bản dựng phát triển, bạn có thể gắn một số thứ khác vào CFBundleVersion, có thể là một dấu chấm và số nguyên khác.


Nhưng nếu tôi hiện đang sử dụng 1.3.1 làm của tôi CFBundleVersionvà không có gì là của tôi CFBundleShortVersionStringvà tôi muốn chuyển sang sử dụng CFBundleVersionđể đại diện cho các bản dựng nội bộ, thì ít nhất tôi cần phải bắt đầu bằng một số nguyên cao hơn 1.3.1, phải không? Hay việc chuyển đổi đó chỉ gây rắc rối?
Philip Walton

Phiên bản ( CFBundleShortVersionString) là thứ duy nhất quan trọng để đệ trình lên Apple. Build ( CFBundleVersion) được sử dụng theo cách bạn muốn trong quá trình phát triển hoặc để hiển thị trong ứng dụng của bạn. Sử dụng bát phân (cơ số 8) và lặp ngược lại 12, nếu bạn muốn.
nekno

16
nekno: Thực ra CFBundleVersion mới là thứ quan trọng đối với Apple. Kiểm tra thông báo lỗi này mà Apple đưa ra khi gửi ứng dụng: "Hệ nhị phân bạn đã tải lên không hợp lệ. Khóa CFBundleVersion trong tệp Info.plist phải chứa phiên bản cao hơn phiên bản đã tải lên trước đó."
malhal

10
Một số quốc gia sử dụng các chữ số khác mà tiếng Ả Rập hiện đại được sử dụng ở thế giới phương Tây, như tiếng Ả Rập phương Đông (٠, ١, ٢, ٣, ٤, ٥, ٦, ٧, ٨, ٩) hoặc tiếng Do Thái (א, ב, ג, ד, ה, ו, ז, ח, ט) - và hai chữ đó cũng được viết từ phải sang trái. Có rất nhiều hệ thống chữ số khác trên mạng (xem en.wikipedia.org/wiki/Category:Numerals ) Vì vậy, tôi đoán đó là ý nghĩa của Apple bằng số phiên bản "bản địa hóa".
Ruslan Ulanov

Nhân tiện, ba chữ số có dấu chấm câu là không bắt buộc. Thay vào đó, tôi đang sử dụng giá trị ngày-giờ, chẳng hạn như 201606070620cho cả hai giá trị trong ứng dụng iOS 7-8-9 vận chuyển.
Basil Bourque

3

Đối với câu hỏi của JWWalker về lý do tại sao bạn muốn bản địa hóa CFBundleShortVersionString, đó sẽ là dấu phân tách thập phân. Ví dụ: trong các ngôn ngữ nơi dấu phân tách thập phân thực sự là dấu phẩy, phiên bản "1.5" sẽ là "1,5".


30
IMO bạn không cần bản địa hóa số phiên bản. Tôi sống ở một vùng có dấu phân tách thập phân là dấu phẩy (Đức) và tôi đã quen với việc phiên bản các số được phân tách bằng dấu chấm. Trên thực tế, tôi không thể nhớ rằng tôi đã từng nhìn thấy số phiên bản có dấu phẩy.
Christian Specht

2
Tôi cũng sống trong một khu vực sử dụng dấu phẩy làm dấu phân cách thập phân, mặc dù 1,3,1 là một giá trị khá lẻ, 1,3,1 có vẻ tốt hơn nhiều.
Lucien

1
Tôi nghĩ điều đó có nghĩa là bạn có thể có các phiên bản khác nhau của ứng dụng cho các khu vực khác nhau. 1.2.1> 1.2.2 en.lproj> fr.lproj Mặc dù toàn bộ plist được sao chép khi bạn địa phương hóa các tập tin vì vậy cả hai số phiên bản sao chép trong vì vậy cả hai 'có thể được định vị'
brian.clear

1

Khắc phục nhanh:

Chỉ cần thêm CFBundleShortVersionStringvào tệp plist và chỉnh sửa phiên bản của bạn.

  1. Tiết lộ của bạn InfoPlist.strings
  2. Đánh dấu nó và dán mã bên dưới vào (giả sử nó ở chế độ mã nguồn)

{"CFBundleShortVersionString" = "1.1";}

  1. Thay đổi 1.1 thành bất kỳ phiên bản mới nào của bạn.
  2. Xây dựng và gửi mà không có thêm lỗi!

nhập mô tả hình ảnh ở đây


1

Xem tài liệu của Apple về tải lên tệp nhị phân.

Đánh số phiên bản và bản dựng: iTunes Connect trích xuất số phiên bản phát hành trước và số bản dựng từ tệp nhị phân. Số phiên bản phát hành trước là số Phiên bản Xcode hoặc khóa "Chuỗi phiên bản gói, ngắn" trong Info.plist. Số bản dựng là số bản dựng Xcode hoặc khóa "Phiên bản gói" trong Info.plist. Số phiên bản phát hành trước và số bản dựng sẽ được hiển thị trên tab Phát hành trước, như được mô tả trong Xem bản dựng.

Tải lên một nhị phân cho một ứng dụng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.