Sự khác biệt giữa “số phiên bản” trong iTunes Connect, “phiên bản gói”, “chuỗi phiên bản gói” trong Xcode là gì?


94

Tài liệu của Apple có thể rõ ràng hơn về cách gửi phiên bản cập nhật.

Như đã hỏi trong tiêu đề, sự khác biệt giữa

  1. số phiên bản trong itunes kết nối (mà bạn phải cung cấp khi gửi bản cập nhật)
  2. gói phiên bản trong xcode
  3. gói phiên bản chuỗi, ngắn

Chúng có liên quan theo cách nào không?


12
Apple và các thuật ngữ / trường khó hiểu của họ ...: /
BoltClock

Vui lòng xem câu trả lời trước của tôi: stackoverflow.com/a/31921249/936957
Yunus Nedim Mehel

Câu trả lời:


142

Vâng, chúng có liên quan. Tất cả đều đề cập đến phiên bản ứng dụng của bạn.

  • iTunes Connect
    Đây là số phiên bản được hiển thị trong App Store; Đây phải là một số phiên bản thuần túy như1.2.3

  • Phiên bản gói (CFBundleVersion)
    Đây không cần phải là số phiên bản thuần túy. Đây có thể là một cái gì đó giống như 12345hoặc 1.2.3 (Build 12345AB). Ví dụ: điều này được hiển thị trong cửa sổ Giới thiệu cho ứng dụng Mac OS X và thường là "Số bản dựng" hơn là "Số phiên bản".

  • Chuỗi phiên bản gói (CFBundleShortVersionString) Giá trị này được sử dụng làm số phiên bản "thực". Đây phải là chuỗi giống như được sử dụng cho phiên bản trong iTunes Connect .

Cập nhật:
Như đã chỉ ra bởi @snlehton, CFBundleVersion phải là số phiên bản thuần túy như 1.2.3khi bạn muốn tải ứng dụng của mình lên App Store (iOS).


3
Để thử nghiệm, bạn đặt chuỗi phiên bản gói thành số phiên bản cuối cùng như 1.2.3sau đó tăng phiên bản gói cho mỗi bản dựng.
Fabian Kreiser

19
ĐÂY LÀ SAI CFBundleVersion cần phải có trong xyz, nếu không việc tải lên một bản dựng sẽ không thành công! liên kết
snlehton

2
Gần đây tôi đã gửi một bản dựng bằng CFBundleVersion với "1.0.2 RC3" và bản dựng bị trả lại với thông báo lỗi: "Gói không hợp lệ. Khoá CFBundleVersion trong tệp Info.plist phải là danh sách các số nguyên không âm được phân tách bằng dấu chấm". Tôi nghĩ rằng nn.n.nxnnn là định dạng chính xác để sử dụng, nhưng vẫn chưa thử.
snlehton

3
CFBundleVersion of 1235 ở đây, không có vấn đề gì
Piotr Tomasik

4
Sự nhầm lẫn ở đây là vì CFBundleShortVersionString là tùy chọn và khi nó được thiết lập, nó sẽ thay đổi những gì CFBundleVersion được sử dụng. Nếu chỉ bao gồm CFBundleVersion thì nó phải là số phiên bản công khai, ví dụ: 1.0. Tuy nhiên, nếu cả CFBundleVersion và CFBundleShortVersionString đều được đặt thì CFBundleShortVersionString bây giờ phải cho tôi số phiên bản công khai, ví dụ: 1.0. Và bây giờ CFBundleVersion thay đổi thành số bản dựng, thường là một số nguyên duy nhất, ví dụ: 374629. Hy vọng rằng điều này sẽ xóa nó.
malhal

27

Có, chúng có liên quan nhưng định nghĩa của chúng phụ thuộc vào cách chúng được sử dụng.

  • Phiên bản kết nối iTunes

    Luôn phải là số phiên bản, ví dụ: 1.0

Chế độ sử dụng 1 - Chỉ CFBundleVersion được đặt

  • Phiên bản gói (CFBundleVersion)

    Phải là số phiên bản, ví dụ: 1.0. Phải khớp với Phiên bản Kết nối iTunes.

Chế độ sử dụng 2 - Cả CFBundleVersion và CFBundleShortVersionString đều được đặt

  • Phiên bản gói (CFBundleVersion)

    Phải là một số xây dựng, ví dụ: một số nguyên duy nhất như 435163.

  • Gói phiên bản ngắn chuỗi (CFBundleShortVersionString)

    Phải là số phiên bản, ví dụ: 1.0. Phải khớp với Phiên bản Kết nối iTunes.

Chế độ sử dụng 2 là cách tốt nhất để đi. Dưới đây là một số ví dụ về đường dẫn nâng cấp của ứng dụng:

CFBundleShortVersionString CFBundleVersion 
1.0                        1
1.0.1                      2
1.0.2                      3
1.2                        5  (build 4 was a beta and never released publicly)
1.2.1                      6

Một lưu ý bổ sung về số phiên bản: Nếu bạn gửi một bản cập nhật nhỏ (ví dụ: sửa lỗi) cho ứng dụng của mình, bạn không bao giờ được bỏ lỡ các khoảng thời gian trong số phiên bản, ví dụ: luôn sử dụng 1.0.1 và KHÔNG BAO GIỜ 1.01, nếu không bạn sẽ có nguy cơ không thể sử dụng số phiên bản nhất định trong tương lai vì sẽ không thể tăng chúng.


2
Chỉ riêng bảng đó đã làm tốt nhất việc giải thích hai con số này có liên quan và được sử dụng trong thực tế như thế nào. Cảm ơn.
Joshua Pinter

Phải khớp với Phiên bản Kết nối iTunes. Đây không phải là một yêu cầu khó khăn (thậm chí nếu nó phải là một PHẢI)
Marco Pappalardo

13

Đúng, tất cả chúng đều có liên quan.

Số phiên bản trong itunesconnect là số phiên bản bạn cần cung cấp. Ví dụ, 2.1.1 hoặc 3.1.2, v.v. Điều này cũng phải bằng CFBundleShortVersionString .

Phiên bản gói trong Xcode ( CFBundleVersion ) chỉ đại diện cho số Bản dựng xác định một lần lặp lại (đã phát hành hoặc chưa phát hành) của ứng dụng.

Chuỗi phiên bản gói, ngắn ( CFBundleShortVersionString ) là một số bao gồm ba số nguyên được phân tách bằng dấu chấm. Đầu tiên đại diện cho bất kỳ bản cập nhật lớn nào của ứng dụng, chẳng hạn như các bản cập nhật triển khai các tính năng mới hoặc các thay đổi lớn. Số nguyên thứ hai biểu thị các bản sửa đổi triển khai các tính năng ít nổi bật hơn. Số nguyên thứ ba đại diện cho các bản phát hành bảo trì.


3
Trên thực tế, "Chuỗi phiên bản gói, ngắn" không cần phải là BA số được phân tách bằng dấu chấm. Tôi nghĩ "1" và "1.1" cũng hợp lệ.
Nicolas Miari

thực sự từ thử nghiệm của tôi Số phiên bản trong itunesconnect hoàn toàn không phụ thuộc vào CFBundleVersion và ShortVersion. Vì vậy, bạn thậm chí có thể có họ khác nhau
Marco Pappalardo

11

Hãy cẩn thận về CFBundleVersion . Nó không chỉ là số bản dựng sản xuất. Giá trị này được Apple kiểm tra trong quá trình tải lên nhị phân và nó có thể bị lỗi.

Đảm bảo bạn đặt CFBundleVersion với giá trị của CFBundleShortVersionString khi bạn xây dựng bản phát hành của mình để gửi.

Xem bài đăng này về nó


3
Đây là thông tin chính xác, câu trả lời được chấp nhận thực sự có sai.
snlehton

9
Điều này không chính xác, CFBundleVersionkhông cần phải phù hợp CFBundleShortVersionString. Ví dụ: nếu bạn xem tệp .ipa hiện tại dành cho Chrome (hiện tại trong cửa hàng ứng dụng), chúng có "34.0.1847.18" cho CFBundleVersionvà "34.1847.18" cho CFBundleShortVersionString.
progrmr

6
Không có tài liệu nào nói rằng CFBundleVersion và CFBundleShortVersionString phải giống nhau.
Toydor

8

Câu trả lời được chấp nhận là cách để đi - chỉ cần thêm điều này làm ví dụ.

Đối với bản phát hành cuối cùng của chúng tôi, "Chuỗi phiên bản gói, ngắn" là bắt buộc và tôi đã tiếp tục và đối sánh nó với số phiên bản Gói (1.2.8 cho ứng dụng của chúng tôi).

Sau đó, tôi đã bật Testflight và cung cấp phiên bản đang chờ Apple xem xét (1.2.8) cho những người thử nghiệm nội bộ của chúng tôi. Tuy nhiên, một người thử nghiệm đã tìm thấy một vấn đề cần phải sửa chữa và chúng tôi đã xóa tệp nhị phân tại chỗ. Khi tải lên một bản dựng mới, chúng tôi gặp lỗi cho biết phiên bản bản dựng đã được tải lên.

Sau khi đọc một vài liên kết SO và tài liệu của Apple, sự hiểu biết của tôi là tạo ra phiên bản gói: 1.2.8.001, trong khi vẫn duy trì phiên bản gói ngắn theo cách của nó. Nếu bản dựng mới được yêu cầu, chúng tôi tăng phiên bản gói lên 1.2.8.002.

Lưu ý: tải lên đã được chấp nhận và bản dựng hiển thị là "1.2.8.001" trong giai đoạn tiền phát hành. Số phiên bản vẫn là 1.2.8.


3

Câu trả lời được chấp nhận của liên kết này chứa thông tin chi tiết tốt:: Phiên bản / số bản dựng ứng dụng iOS nào PHẢI được tăng lên khi phát hành App Store?

Từ tài liệu apple

CFBundleVersion (Phiên bản gói)

CFBundleVersion (String - iOS, OS X) chỉ định số phiên bản xây dựng của gói, xác định số lần lặp lại (đã phát hành hoặc chưa phát hành) của gói. Số phiên bản xây dựng phải là một chuỗi bao gồm ba số nguyên không âm, được phân tách bằng dấu chấm với số nguyên đầu tiên lớn hơn 0. Chuỗi chỉ nên chứa các ký tự số (0-9) và dấu chấm (.). Các số không ở đầu được cắt bớt từ mỗi số nguyên và sẽ bị bỏ qua (nghĩa là 1.02.3 tương đương với 1.2.3). Khóa này không thể bản địa hóa.

CFBundleShortVersionString (Chuỗi phiên bản gói, ngắn)

CFBundleShortVersionString (String - iOS, OS X) chỉ định số phiên bản phát hành của gói, xác định phiên bản đã phát hành của ứng dụng. Số phiên bản phát hành là một chuỗi bao gồm ba số nguyên được phân tách bằng dấu chấm. Số nguyên đầu tiên đại diện cho các bản sửa đổi lớn đối với ứng dụng, chẳng hạn như các bản sửa đổi triển khai các tính năng mới hoặc các thay đổi lớn. Số nguyên thứ hai biểu thị các bản sửa đổi triển khai các tính năng ít nổi bật hơn. Số nguyên thứ ba đại diện cho các bản phát hành bảo trì.

Giá trị cho khóa này khác với giá trị cho CFBundleVersion, giá trị này xác định một lần lặp lại (đã phát hành hoặc chưa phát hành) của ứng dụng. Khóa này có thể được bản địa hóa bằng cách đưa nó vào tệp InfoPlist.strings của bạn.

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.