CFBundleVersion trong Lỗi tải lên Info.plist


108

"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 đó."

Tôi gặp lỗi này khi tải lên ứng dụng của mình.

Tôi đã đặt phiên bản cập nhật thành 1.2 trên iTunes Connect và cũng đã cập nhật .plisttệp lên 1.2.

Tôi không hiểu tại sao tôi lại nhận được lỗi này. Bất kỳ trợ giúp sẽ được đánh giá cao. Cảm ơn.


Tại sao không thử và đặt nó thành 1.2.1?
Nikita Rybak

Tôi đã thử nhiều cách kết hợp. Không có tác dụng. Lỗi đó tiếp tục xuất hiện.
Adam H

1
Và phiên bản đã tải lên trước đó (như được tìm thấy trong Info.plist của ứng dụng đang vận chuyển) là gì?
Costique

Bạn đã giải quyết được vấn đề này chưa? Vấn đề tương tự xảy ra với tôi đột ngột. Thật là bực bội.
Wayne Lo

Tôi vừa nhận được email thông báo lỗi này và hóa ra một trong các bản dựng cũ của tôi, bị kẹt trong ITC là "đang xử lý" trong tuần qua, cuối cùng đã được xử lý. Khi lần đầu tiên nó bị kẹt, tôi đã gửi lại một bản dựng khác với số bản dựng tăng dần, vì vậy khi bản cũ hơn cuối cùng được xử lý, nó đã gây ra lỗi.
blwinters

Câu trả lời:


210

Có ít nhất 1 lỗi đã biết trong máy chủ tải lên của Apple mà họ đã không sửa trong hơn 12 tháng. Những điều cần lưu ý:

  1. Apple xóa mọi số 0 đứng đầu bên trong số phiên bản; tức là "toàn bộ chuỗi" KHÔNG được coi là số, thay vào đó các bit giữa các dấu chấm được coi là số RIÊNG. ví dụ: "1.02" được Apple coi là "1.2". Vì vậy, đối với Apple, 1,02 là TUYỆT VỜI HƠN 1,1
  2. Apple đôi khi bị "nhầm lẫn" và dường như so sánh ứng dụng đã tải lên của bạn với phiên bản của ứng dụng KHÁC NHAU mà bạn đã tải lên trước đó. Nó đã xảy ra với rất nhiều người và bản thân tôi đã thấy nó vài lần
  3. Apple được cho là đang so sánh "CFBundleVersion" (tức là "Phiên bản gói" không phải "Chuỗi phiên bản gói, ngắn"); đừng để lẫn lộn.
  4. Thông thường, giải pháp khả thi duy nhất là tăng số phía trước (ví dụ: "2" trong "2,4" - tăng nó lên "3")
  5. Số phiên bản bạn tải lên không liên quan đến số phiên bản xuất hiện trong iTunes - bạn có thể đặt bất kỳ thứ gì bạn muốn ở đó và đó là những gì người dùng của bạn sẽ thấy
  6. ... ngoại trừ, nếu bạn cũng báo cáo số phiên bản "thực tế" bên trong ứng dụng của mình, thì người dùng sẽ thấy CFBundleVersion (thông thường, tùy thuộc vào cách bạn viết mã nó), thay vì phiên bản iTunes (mà - tôi nghĩ - không thể truy cập từ bên trong ứng dụng của bạn)

1
CFBundleVersion là thứ trong xcode 4.5 được gắn nhãn "Bản dựng" chứ KHÔNG phải "Phiên bản"! Phiên bản kết thúc có nhãn "CFBundleShortVersionString" trong tệp Info.plist. Vì vậy, thực sự bạn cần cung cấp giá trị cho Bản dựng cao hơn trước đây.
RickJansen

+1 một cái hữu ích. Tôi đã sử dụng 1.02cho phiên bản trước của mình. Và, hãy sửa nó bằng câu trả lời này. Cảm ơn bạn.
Praveenkumar

Câu trả lời này sẽ được thêm vào trong FAQphần về cách gửi ứng dụng lên cửa hàng ứng dụng. :))
danypata 12/1213

@Adam: Như tôi đã đọc CFBundleShortVersionStringvà số phiên bản bạn cung cấp trong iTunes Connect phải khớp với nhau. Điều đó có nghĩa là nếu bạn hiển thị số phiên bản của mình trong ứng dụng bạn sử dụng CFBundleShortVersionString. Số tiền CFBundleVersionnày cũng sẽ được tăng lên và đó là cách mà Apple sử dụng để xác định xem bạn có đang gửi phiên bản cập nhật của ứng dụng hay không.
thử nghiệm

Apple gần đây đã xác định lại ý nghĩa của tất cả các chuỗi của họ, theo cách KHÔNG tương thích ngược.
Adam

28

Cập nhật số bản dựng. Số phiên bản rất quan trọng, nhưng số phiên bản tạo nên sự khác biệt. Ví dụ: tôi có phiên bản ban đầu của một ứng dụng là:

version #: 1.0
build #:   1.0

Tuy nhiên, khi tôi cố gắng tải lên phiên bản tiếp theo, tức là

version #: 1.1
build #:   1.0

Nó sẽ không chấp nhận tải lên. Chỉ cần tăng số bản dựng lên 1.1, tải lên đã được chấp nhận.


Hoàn hảo ... việc thay đổi bản dựng # đã làm điều đó đối với tôi, điều này thật tuyệt vì tôi thực sự muốn giữ phiên bản gói và phiên bản iTunes được đồng bộ hóa.
Aaron Hayman

9

Xcode 4 sẽ nghĩ rằng bạn muốn tải lên lại cùng một phiên bản nếu bạn không lưu trữ lại ứng dụng. Ngay cả khi bạn thay đổi Phiên bản gói và xây dựng lại, quá trình tải lên sẽ không thành công. Hãy nhớ thực hiện " Lưu trữ " trong menu Sản phẩm!


7

Nhiều câu trả lời ở đây cuối cùng đã giúp tôi nhưng phải đến khi tôi nhìn thấy số "phiên bản" chính xác mà Apple đang so sánh.

  1. Đi tới iTunes Connect -> Quản lý ứng dụng của bạn
  2. Chọn ứng dụng bạn muốn kiểm tra phiên bản trước
  3. Nhấp vào nút màu xanh lam có nhãn Xem chi tiết
  4. Nhấp vào liên kết có nhãn Chi tiết nhị phân
  5. Tìm giá trị đã cho cho Phiên bản gói

Mặc dù tôi nghĩ rằng tôi đã gửi phiên bản 1.0.1, nhưng con số thực tế mà Apple lưu trữ là 101. Một số nhận xét ở trên khiến tôi tin rằng tôi cần thay đổi phiên bản của mình thành 2.0 (20) hoặc 1.5 (15) hoặc 1.2 (12 ) - tất cả đều nhỏ hơn 101 như bạn có thể thấy. Cập nhật phiên bản số 102 của tôi (không có dấu chấm) đã khắc phục sự cố.


6

Bài viết này chỉ ra rằng số phiên bản được hiển thị trong cửa hàng ứng dụng không nhất thiết phải giống với số phiên bản gói. Khi bạn xem chi tiết ứng dụng của mình trong iTunes, có một liên kết có tên 'Chi tiết nhị phân'. Trang đó hiển thị phiên bản gói. Một trong những ứng dụng tôi đang làm việc ở phiên bản 1.0, nhưng phiên bản gói của nó là 2.0. Tải lên gói có phiên bản 1.1 không thành công nhưng 2.1 đã hoạt động.

Vì vậy, có một phiên bản ứng dụng và một phiên bản gói. Vấn đề này liên quan đến phiên bản gói.


5

Có vẻ như sự nhầm lẫn là do định dạng số. Phiên bản gói không phải là số thập phân. Nó là một phiên bản (hoặc có lẽ là bản dựng) nên 1.11 thực sự là "một điểm mười một". Do đó 1,11 lớn hơn 1,2. Tôi đã thành công khi sử dụng 1,20 trong trường hợp này.


4

Thông thường, điều này có thể gây ra do không có số phiên bản. Vì vậy, hãy thêm số phiên bản trong Identity và cũng kiểm tra số Build.

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

Tiếp tục mã hóa ......... :)


3

Đối với tôi (Xcode 4.5) thay đổi số bản dựng đã giải quyết được vấn đề. đặt các phiên bản thành 1.0.2 ... 2.0.2, v.v. sau đó tăng bản dựng # (Adam 3 điểm cho tôi idia nơi để xem).


2

Bạn sẽ có thể đăng nhập vào iTunes Connect và xem phiên bản hiện tại của ứng dụng (bao gồm bất kỳ phiên bản nào bạn đã gửi nhưng không hoạt động). Kiểm tra để đảm bảo rằng trước đó bạn chưa gửi phiên bản có số phiên bản cao hơn (hoặc tương tự).


Điều này gây hiểu lầm; Apple KHÔNG chỉ so sánh với phiên bản iTunesConnect. câu trả lời của cf Pieter dưới đây để có câu trả lời chính xác hơn.
Adam

@Adam Tính đến thời điểm hiện tại (2014-05), Apple thực sự so sánh (các) số phiên bản nội bộ của ứng dụng iOS của bạn với số phiên bản iTunesConnect. Nếu không khớp, bạn sẽ nhận được thông báo cảnh báo này (không phải lỗi): Version Mismatch - Neither CFBundleVersion ['201405030503'] nor CFBundleShortVersionString ['201405030503'] in the Info.plist match the version of the app set in iTunes Connect ['1.0.0'].Nhưng so sánh iTunesConnect này không phải là nguyên nhân gây ra sự cố trong Câu hỏi này. So sánh iTunesConnect chỉ là một cảnh báo, không phải là một lỗi dừng hiển thị.
Basil Bourque

2

Tôi đã dành một vài giờ để cố gắng giải quyết vấn đề này. Tôi đã kiểm tra hết sức mình để đảm bảo CFBundleVersion thực sự cao hơn phiên bản cũ hơn, bằng cách mở info.plist trên trình soạn thảo văn bản, lấy thông tin về mục tiêu và đọc phiên bản trên các thuộc tính, yêu cầu vợ tôi đọc phiên bản trên iTunes để xác nhận rằng tôi không bị bệnh Alzheimer bất ngờ trước đó.

Cuối cùng, điều này bằng cách nào đó đã thành công. Phiên bản cũ hơn của tôi là 1.0.4. Tôi đã thử 1.3.5, 1.4.5, v.v.; không có tác dụng. Nhưng đủ đáng ngạc nhiên, khi tôi nhập 2.0.0, Trình tải ứng dụng thích những gì nó nhìn thấy và tải nó lên. Đây có phải là do lỗi trong Trình tải ứng dụng không?


2

Trong bản tóm tắt mục tiêu bên cạnh số phiên bản trong xcode4 là một bản dựng, tôi bắt đầu điều này ở mức 1, tôi tăng lên mỗi lần tải lên nhị phân, điều này giải quyết vấn đề cho tôi


Đây cũng là vấn đề của tôi, thông báo lỗi rất dễ gây hiểu lầm!
mj662

Tôi cũng đã từng gặp phải vấn đề này. Thật vô cùng bực bội khi thông điệp gây hiểu lầm như vậy. Lãng phí phần tốt hơn của buổi chiều của tôi. Cảm ơn bạn vì câu trả lời hữu ích.
Joel Anair

2

Nếu lỗi được báo cáo là CFBundleVersion, việc khắc phục thường khá dễ dàng. Kiểm tra / thử cái này:

  1. Chuyển đến mục dự án cấp cao nhất trong Bộ điều hướng dự án và nhấp vào mục đó.
  2. Trong bảng điều khiển chỉ cần nhấp chuột phải vào mục tiêu ứng dụng.
  3. Bấm vào tab tóm tắt.

Trên tab tóm tắt, bạn sẽ thấy rằng có hai "phiên bản" khác nhau có thể được điều chỉnh. Trường đầu tiên là trường "Phiên bản", được sử dụng trong màn hình "Giới thiệu" mặc định cho các ứng dụng Mac. Ở bên phải là "Phiên bản xây dựng". Đây là điều thực sự quan trọng đối với các lần gửi trên App Store!


2

Tôi biết đây là một câu hỏi cũ, nhưng tôi chỉ gặp vấn đề này. Tôi đã giải quyết nó bằng cách xóa dự án khỏi kho lưu trữ, sau đó lưu trữ lại. Rõ ràng phiên bản trước của ứng dụng đã ở trong đó và gây ra sự nhầm lẫn.


2

Chú ý đến thông báo lỗi.

Thông báo lỗi chứa số gói trước đó trong dấu ngoặc vuông (ví dụ: [9]).

Vì vậy, bạn cần phải tăng số gói đó (ví dụ: 9,1), mặc dù số phiên bản mới của bạn là 1,2

Vì vậy, khi bạn cập nhật phiên bản từ 1.1 lên 1.2 trong iTunes Connect, bạn cần đặt các giá trị này trong dự án của mình

Version number = 1.2
Bundle number = [previous bundle number]++

2
LƯU Ý: nếu bạn không chắc gói # là gì cho phiên bản cuối cùng được tải lên, hãy nhấp vào phiên bản cũ hơn và tìm Chi tiết nhị phân (trong Liên kết). Bạn sẽ thấy "Phiên bản gói: #"
Nathaniel Blumer,

1

Tôi có một phiên bản iPhone và iPad trong dự án của mình, danh sách thông tin cho ipad không được liên kết với sản phẩm ipad vì một số lý do, Kiểm tra tư cách thành viên Target và liên kết với sản phẩm phù hợp đã giải quyết được vấn đề này cho tôi.



1

Tôi đã mắc lỗi khi hoán đổi giữa 'Phiên bản' và 'Phiên bản' không.

Thay vì đặt 2.3 trong trường Phiên bản, tôi đặt nó vào Phiên bản không.


1

Đây là cách tôi đã khắc phục sự cố (và tôi đoán đây là vấn đề với rất nhiều người):

1) Nhấp vào tab chung của cài đặt dự án của bạn (có thể truy cập tab này bằng cách nhấp vào tên dự án của bạn ở đầu tất cả các tệp mã).

2) Đảm bảo rằng trường xây dựng khớp với những gì bạn đưa vào danh sách cho khóa "Phiên bản gói".

Đây là vấn đề đối với tôi, vì bất cứ lý do gì mà chúng không đồng bộ. Tôi nghĩ rằng khi bạn thay đổi khóa Phiên bản Bundler, khóa này phải đồng bộ hóa (và ngược lại). Nhưng nó không xảy ra vì bất cứ lý do gì - có thể là một lỗi.


1

Tôi đã gặp vấn đề tương tự và nó đã xảy ra do tôi chưa lưu trữ và tôi đang sử dụng bản lưu trữ đầu tiên mà tôi đã sử dụng cho 1.0 nhưng với 1.0.1. Vì vậy, tôi đã chọn thiết bị iOS, lưu trữ và sau đó xác thực. Ta-daaa, nó hoạt động!


nên là một bình luận thay vì sau đó trả lời.
Hello World,

0

Tôi đã từng gặp vấn đề tương tự. Về cơ bản phiên bản trước của tôi là 1.12 Tôi muốn thay đổi nó thành 1.2 nhưng gặp lỗi đã đề cập. Tôi đã thử 1,20 và nó hoạt động hoàn hảo


Số thứ hai phải nằm giữa 0 và 9, vì vậy 12 là "quá lớn"
Jom

1
"Số thứ hai" (tôi gọi nó là số phiên bản nhỏ , cho vui) có thể là bất kỳ số nguyên nào, không có giới hạn nào cho nó; vì vậy 12hoặc 20là số phiên bản nhỏ hoàn hảo .
holex

0

Không có tập hợp số phiên bản ngày càng tăng nào hoạt động miễn là tôi đang sử dụng "Trình tải ứng dụng" của Apple để tải lên tệp ipa của mình, nhưng nếu tôi sử dụng "Trình tổ chức" của XCode (được tìm thấy trong kéo xuống "Cửa sổ" trong phiên bản 3.2.5) , nhấp vào nút "Xác thực ...", đợi nó chấp thuận cho tôi, sau đó nhấp vào nút "Gửi ...", mọi thứ diễn ra như mong đợi với số phiên bản lành mạnh (một gia số duy nhất trên mức hiện tại sẵn trên kho ứng dụng).


0

trong xcode 4.2 có vẻ như không đăng ký phiên bản gói nếu bạn sửa đổi từ tệp info.plist. Tôi đặt phiên bản gói mới của mình trực tiếp trong "thông tin" của bảng xcode và bây giờ nó hoạt động!


0

Tôi đã tìm thấy một giải pháp khác.

Nếu bạn chọn mục tiêu của mình >> thông tin >> cập nhật ID gói.


0

Tôi đã từng gặp vấn đề tương tự. Phiên bản gửi đầu tiên là 1.5.20 và muốn cập nhật lên 1.7.30.

Sau khi thử các phiên bản 1.8, 2.0 và 3.0 không thành công, tôi đã cập nhật CFBundleVersion của mình lên 10.0 và đột nhiên nó hoạt động.

Tôi không chắc logic đằng sau hành vi này là gì, nhưng nó khiến tôi lãng phí khoảng 2 ngày làm việc.


0

Kiểm tra phiên bản gói của phiên bản đã tải lên trước đó, bạn nên cung cấp phiên bản gói cao hơn so với phiên bản gói của phiên bản đã được tải lên. Bạn có thể xem phiên bản đã tải lên bằng itunesconnect / application / view details / binary details.


0

Tôi đã dành hai đêm cho một vấn đề tương tự. Phiên bản trước của tôi là 1.02 và tôi đã thử xác thực với 1.2, 1.20, 1.1 và tôi luôn nhận được thông báo nhị phân không hợp lệ.

Tôi đã giải quyết nó bằng cách nhập 2.0 làm số phiên bản và điều đó đã hoạt động . Tôi nghi ngờ đây cũng là một lỗi. Tôi không nhận được thông báo này khi gần đây nâng cấp trò chơi của mình từ 1.0 lên 1.1, nhưng đó là với xcode 3. Cảm ơn bạn đã mách!


0

Tôi đã gặp vấn đề tương tự và sau khi dành nửa giờ, tôi nhận thấy rằng tôi đã tăng sai số. Thay vì tăng, Bundle versiontôi đã tăng Bundleversions, string, shorttrong Info.plist. Tìm kiếm "CFBundleVersion" trong dự án của bạn bằng cách sử dụng CMD + Shift + F. Bạn sẽ thấy mình cần tăng số lượng CFBundleVersion.


0

Thử thay đổi phiên bản = "1.1.1.0" thành phiên bản = "1.1.1"


0

Kể từ cuối tháng 10, Apple yêu cầu số phiên bản phải ít hơn 4 chữ số (1.2.3 hoặc 1.23 thay vì 1.2.3.4 hoặc 1.234). Điều này cũng áp dụng cho các thư viện!

Một grep nhanh cho số phiên bản vi phạm trong thư mục dự án của bạn sẽ kích hoạt thư viện vi phạm:

grep -r "1.2.3.4" .


0

Tôi đã có một phiên bản beta TestFlight đang hoạt động. Bản dựng 2020 , phiên bản 407

Tôi đã gửi một ứng dụng để xem xét chính thức trên App Store. Build 2020 , phiên bản 435 và nó đã được phê duyệt. Nó chỉ ngồi đó, chờ tôi đưa nó trực tiếp vào App Store.

Không thêm một câu chuyện phụ phức tạp, những gì tôi muốn làm là cung cấp cho người dùng TestFlight beta của mình một phiên bản cập nhật để xem trước phiên bản App Store chính thức trong vài ngày, trước khi đưa phiên bản App Store vào hoạt động. Lý do tại sao bạn hỏi? Bởi vì họ đang nhận được các tính năng miễn phí, sẽ phải trả một khoản tiền khi ứng dụng được phát hành.

Vì vậy, tôi đã gửi Build 2020 , phiên bản 436, cho TestFlight và nó đã bị từ chối.

Nó đã bị từ chối vì tôi có một ứng cử viên App-Store chính thức được chấp thuận với cùng một số bản dựng

Giải pháp: Thay đổi số bản dựng của phiên bản TestFlight của bạn. Tôi đã gửi Bản dựng 20200 (tôi đã thêm số 0 bổ sung) phiên bản 436 cho TestFlight và nó đã được chấp thuận. Đừng lo lắng, bạn vẫn có thể đẩy bản dựng này vào cùng một nhóm TestFlight beta, miễn là bạn vẫn đang sử dụng cùng một BundleID.

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.