CFBundleVersion w błędzie przesyłania Info.plist

108

„Przesłany plik binarny był nieprawidłowy. Klucz CFBundleVersion w pliku Info.plist musi zawierać wyższą wersję niż wersja przesłana wcześniej”.

Otrzymuję ten błąd, kiedy przychodzę, aby przesłać moją aplikację.

Ustawiłem zaktualizowaną wersję na 1.2 w iTunes Connect, a także zaktualizowałem .plistplik do 1.2.

Nie rozumiem, dlaczego otrzymuję ten błąd. Każda pomoc będzie mile widziana. Dzięki.

Adam H.
źródło
Dlaczego nie spróbować ustawić go na, powiedzmy, 1.2.1?
Nikita Rybak
Próbowałem wielu kombinacji. Żadna praca. Ten błąd się powtarza.
Adam H
1
A jaka jest poprzednio przesłana wersja (jak można znaleźć na Info.plist aktualnie wysyłanej aplikacji)?
Costique
Czy problem został rozwiązany? Nagle przytrafił mi się ten sam problem. To jest frustrujące.
Wayne Lo,
Właśnie dostałem e-mail z tym błędem i okazało się, że jedna z moich starych kompilacji, która utknęła w ITC jako „przetwarzanie” przez ostatni tydzień, została w końcu przetworzona. Kiedy po raz pierwszy utknęło, ponownie przesłałem kolejną kompilację ze zwiększonym numerem kompilacji, więc gdy starsza została w końcu przetworzona, wywołała błąd.
blwinters

Odpowiedzi:

210

Na serwerze przesyłania Apple jest co najmniej 1 znany błąd, którego nie naprawili od ponad 12 miesięcy. Rzeczy, na które należy uważać:

  1. Apple usuwa wszystkie wiodące zera w numerze wersji; tzn. „cały ciąg” NIE jest traktowany jako liczba, zamiast tego bity między kropkami są traktowane jako ODDZIELNE liczby. np. „1.02” jest traktowane przez Apple jako „1.2”. Tak więc dla Apple 1.02 to WIĘKSZA NIŻ 1.1
  2. Apple czasami jest „zdezorientowany” i wydaje się porównywać przesłaną przez Ciebie aplikację z wersją INNEJ aplikacji, którą przesłałeś wcześniej. Przydarzyło się to wielu osobom i sam to widziałem kilka razy
  3. Apple powinien porównywać „CFBundleVersion” (tj. „Wersja pakietu”, a nie „Ciąg wersji pakietu, krótki”); nie mieszaj się.
  4. Często jedynym realnym rozwiązaniem jest podbicie przedniej liczby (np. „2” w „2,4” - zwiększ ją do „3”)
  5. Numer wersji, którą przesyłasz, nie jest powiązany z numerem wersji, który pojawia się w iTunes - możesz tam umieścić wszystko, co chcesz, i tak zobaczą Twoi użytkownicy
  6. ... z wyjątkiem tego, że jeśli zgłosisz również „faktyczny” numer wersji w swojej aplikacji, użytkownik zobaczy CFBundleVersion (zwykle zależy to od tego, jak ją zakodujesz), a nie wersję iTunes (do której - myślę - nie można uzyskać dostępu z wewnątrz aplikacji)
Adam
źródło
1
CFBundleVersion jest tym, co w xcode 4.5 jest oznaczone jako „Kompilacja”, a NIE „Wersja”! Wersja kończy się oznaczeniem „CFBundleShortVersionString” w pliku Info.plist. Więc rzeczywiście musisz podać wyższą wartość dla budowania niż poprzednio.
RickJansen
+1 Pomocny. Użyłem 1.02w mojej poprzedniej wersji. I napraw to, używając tej odpowiedzi. Dziękuję Ci.
Praveenkumar
Tę odpowiedź należy dodać w FAQsekcji dotyczącej przesyłania aplikacji do sklepu z aplikacjami. :))
danypata
@Adam: Jak przeczytałem, CFBundleShortVersionStringnumer wersji, który podałeś w iTunes Connect, powinien być zgodny. Oznacza to, że jeśli pokażesz numer wersji w używanej aplikacji CFBundleShortVersionString. CFBundleVersionPowinien być podwyższony również i to, że ktoś używa Apple ustalić, czy złożenie zaktualizowaną wersję swojej aplikacji.
testowanie
Firma Apple niedawno przedefiniowała znaczenie wszystkich ich ciągów w sposób NIEZGODNY z poprzednimi wersjami.
Adam
28

Zaktualizuj numer kompilacji. Numer wersji jest ważny, ale numer kompilacji ma znaczenie. Na przykład miałem moją początkową wersję aplikacji jako:

version #: 1.0
build #:   1.0

Jednak gdy próbowałem wgrać następną wersję tj

version #: 1.1
build #:   1.0

Nie zaakceptowałoby przesyłania. Po prostu zwiększając numer kompilacji do 1.1, przesyłanie zostało zaakceptowane.

Szalony szympans
źródło
Idealnie ... zmiana kompilacji # zrobiła to za mnie, co jest świetne, ponieważ naprawdę chciałem zsynchronizować moją wersję pakietu i wersję iTunes.
Aaron Hayman
9

Xcode 4 pomyśli, że chcesz ponownie przesłać tę samą wersję, jeśli nie zarchiwizujesz ponownie aplikacji. Nawet jeśli zmienisz wersję pakietu i przebudujesz, przesyłanie się nie powiedzie. Pamiętaj, aby zrobić „ Archiwum ” w menu Produkt!

Patrice Gagnon
źródło
7

Wiele odpowiedzi pomogło mi ostatecznie, ale dopiero wtedy, gdy zobaczyłem dokładny numer „wersji”, porównywał Apple.

  1. Przejdź do iTunes Connect -> Zarządzaj swoimi aplikacjami
  2. Wybierz aplikację, dla której chcesz sprawdzić poprzednią wersję
  3. Kliknij niebieski przycisk oznaczony Wyświetl szczegóły
  4. Kliknij łącze oznaczone jako Szczegóły binarne
  5. Znajdź wartość podaną dla wersji pakietu

Chociaż wydawało mi się, że podałem numer wersji 1.0.1, rzeczywista liczba przechowywana przez Apple wynosiła 101. Niektóre z powyższych komentarzy sugerowały, że muszę zmienić moją wersję na 2.0 (20) lub 1.5 (15) lub 1.2 (12 ) - jak widać, wszystkie są mniejsze niż 101. Zaktualizowanie numeru wersji 102 (bez kropek) rozwiązało problem.

Kyle Hayes
źródło
6

W tym artykule wskazano, że numer wersji widoczny w sklepie z aplikacjami niekoniecznie jest taki sam, jak numer wersji pakietu. Gdy przeglądasz szczegóły swojej aplikacji w iTunes, znajduje się tam link o nazwie „Szczegóły binarne”. Ta strona pokazuje wersję pakietu. Jedna z aplikacji, nad którą pracowałem, była w wersji 1.0, ale jej pakietowa wersja to 2.0. Przesyłanie pakietu z wersją 1.1 nie powiodło się, ale 2.1 zadziałało.

Tak więc istnieje wersja aplikacji i wersja pakietu. Ten problem jest związany z wersją pakietu.

Pieter Witvoet
źródło
5

Wygląda na to, że zamieszanie jest spowodowane formatem liczb. Wersja pakietu nie jest ułamkiem dziesiętnym. Jest to wersja (a może kompilacja), więc 1.11 to właściwie „jeden punkt jedenasty”. Stąd 1,11 jest większe niż 1,2. W tym przypadku udało mi się zastosować 1.20.

Gavin
źródło
4

Zwykle może to być spowodowane brakiem numeru wersji. Dlatego dodaj numer wersji w sekcji Identity, a także sprawdź numer kompilacji.

wprowadź opis obrazu tutaj

Zachowaj kodowanie ......... :)

Krishna Raj Salim
źródło
3

Dla mnie (Xcode 4.5) zmiana numeru kompilacji rozwiązała problem. ustaw wersje na 1.0.2 ... 2.0.2 itd., a następnie zwiększ build # (Adam 3 punkty daj mi idię, gdzie mam szukać).

setdvd
źródło
2

Powinieneś być w stanie zalogować się do iTunes Connect i zobaczyć aktualną wersję aplikacji (w tym tę, którą przesłałeś, ale nie jest aktywna). Sprawdź, czy wcześniej nie przesłałeś wersji z wyższym (lub tym samym) numerem wersji.

Danny Tuppeny
źródło
To jest mylące; Apple NIE porównuje po prostu z wersją iTunesConnect. por. odpowiedź Pietera poniżej, aby uzyskać dokładniejszą odpowiedź.
Adam
@Adam Od teraz (2014-05) firma Apple rzeczywiście porównuje wewnętrzne numery wersji aplikacji na iOS z numerem wersji iTunesConnect. W przypadku niezgodności 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'].pojawia się następujący komunikat ostrzegawczy (nie jest to błąd): Ale to porównanie iTunesConnect nie jest przyczyną problemu w tym pytaniu. Porównanie iTunesConnect jest zwykłym ostrzeżeniem, a nie zatrzymującym program błędem.
Basil Bourque
2

Spędziłem kilka godzin próbując rozwiązać ten problem. Ze wszystkich sił sprawdziłem, czy CFBundleVersion jest rzeczywiście wyższa niż starsza wersja, otwierając info.plist w edytorze tekstu, uzyskując informacje o celu i czytając wersję dotyczącą właściwości, poprosiłem żonę o przeczytanie wersji w iTunes, aby potwierdzić, że nie uderzył mnie nieoczekiwany wcześniejszy Alzheimer.

W końcu to jakoś załatwiło sprawę. Moja starsza wersja to 1.0.4. Próbowałem 1.3.5, 1.4.5 itd .; żaden nie działał. Ale co jest dość zaskakujące, kiedy wszedłem do wersji 2.0.0, program ładujący aplikację podoba się temu, co zobaczył i przesłał go. Czy jest to spowodowane błędem w module ładującym aplikacje?

Wayne Lo
źródło
2

W podsumowaniu celów obok numeru wersji w xcode4 jest kompilacja, zacząłem od 1, zwiększam za każdym razem, gdy wykonuję przesyłanie binarne, to rozwiązało problem za mnie

topór
źródło
To też był mój problem, komunikat o błędzie jest bardzo mylący!
mj662
Ja też miałem ten problem. To niesamowicie frustrujące, że wiadomość jest tak myląca. Zmarnowałem większą część mojego popołudnia. Dziękuję za pomocną odpowiedź.
Joel Anair
2

Jeśli zgłoszony błąd to CFBundleVersion, naprawa jest zwykle dość łatwa. Sprawdź / wypróbuj to:

  1. Przejdź do elementu projektu najwyższego poziomu w Nawigatorze projektu i kliknij go.
  2. W panelu kliknij prawym przyciskiem myszy cel aplikacji.
  3. Kliknij kartę podsumowania.

Na karcie podsumowania zobaczysz, że istnieją dwie różne „wersje”, które można dostosować. Pierwszym z nich jest pole „Wersja”, które jest używane na domyślnym ekranie „Informacje” w aplikacjach na komputery Mac. Ta po prawej to „Wersja kompilacji”. To jest ten, który naprawdę ma znaczenie w przypadku zgłoszeń do App Store!

David Hoelzer
źródło
2

Wiem, że to stare pytanie, ale właśnie napotkałem ten problem. Rozwiązałem to, usuwając projekt z archiwum, a następnie ponownie go archiwizując. Najwyraźniej znajdowała się tam poprzednia wersja aplikacji i powodowała zamieszanie.

Henry F.
źródło
2

Zwróć uwagę na komunikat o błędzie.

Komunikat o błędzie zawiera poprzedni numer paczki w nawiasach kwadratowych (np. [9]).

Dlatego musisz zwiększyć ten numer pakietu (np. 9.1), chociaż twój nowy numer wersji to 1.2

Więc kiedy aktualizujesz wersję z 1.1 do 1.2 w iTunes Connect, musisz ustawić te wartości w swoim projekcie

Version number = 1.2
Bundle number = [previous bundle number]++
Serge Seletskyy
źródło
2
UWAGA: jeśli nie jesteś pewien, jaki był numer pakietu dla ostatniej przesłanej wersji, kliknij starszą wersję i poszukaj szczegółów binarnych (w sekcji Łącza). Powinieneś zobaczyć „Wersja pakietu: #”
Nathaniel Blumer
1

Mam w swoim projekcie wersję na iPhone'a i iPada, lista informacyjna dla iPada z jakiegoś powodu nie była powiązana z produktem iPad, sprawdzenie członkostwa docelowego i skojarzenie go z właściwym produktem rozwiązało ten problem.

Jay Adams
źródło
1

Popełniłem błąd, zamieniając „Wersja” i „Wersja” nr.

Zamiast umieszczać 2.3 w polu Wersja, umieściłem go w kompilacji nr.

Pritesh Desai
źródło
1

Oto, jak rozwiązałem problem (i domyślam się, że jest to problem wielu osób):

1) Kliknij kartę ogólną ustawień projektów (do której można uzyskać dostęp, klikając nazwę projektu, która znajduje się na górze wszystkich plików kodu).

2) Upewnij się, że pole kompilacji jest zgodne z tym, co umieściłeś w pliku plist dla klucza „Wersja pakietu”.

To był problem dla mnie, z jakiegoś powodu nie byli zsynchronizowani. Myślę, że kiedy zmienisz klucz wersji Bundler, powinien on się zsynchronizować (i odwrotnie). Ale to się nie stało z jakiegokolwiek powodu - może to być błąd.

Ser Pounce
źródło
1

Miałem ten sam problem i stało się tak, ponieważ nie zarchiwizowałem i korzystałem z pierwszego archiwum, którego użyłem w wersji 1.0, ale z wersją 1.0.1. Więc wybrałem urządzenie iOS, zarchiwizowałem, a następnie zweryfikowałem. Ta-daaa, zadziałało!

Gonzo345
źródło
powinien być raczej komentarzem niż odpowiedzią.
Hello World,
0

Miałem ten sam problem. Zasadniczo moja poprzednia wersja to 1.12. Chciałem ją zmienić na 1.2, ale miałem wspomniany błąd. Spróbowałem 1.20 i wyszło idealnie

mukaissi
źródło
Druga liczba musi mieścić się w przedziale od 0 do 9, więc 12 to „za duża”
JOM
1
„Druga liczba” (nazwijmy ją podrzędnym numerem wersji, dla zabawy) może być dowolną liczbą całkowitą, nie ma dla niej ograniczeń; więc 12lub 20jest idealnym numerem wersji pomocniczej .
holex
0

Żaden zestaw stale rosnących numerów wersji nie działał tak długo, jak długo korzystałem z modułu ładującego aplikacje firmy Apple do przesyłania mojego pliku ipa, ale jeśli użyłem „Organizatora” XCode (znajdującego się w menu rozwijanym „Okno” w wersji 3.2.5) , kliknął przycisk „Zatwierdź ...”, zaczekał na zatwierdzenie mnie, a następnie kliknij przycisk „Prześlij…”, wszystko poszło zgodnie z oczekiwaniami z rozsądnym numerem wersji (takim, który jest o jeden przyrost wyższy niż obecnie dostępny w App Store).

ideasuns
źródło
0

w xcode 4.2 wydaje się, że nie rejestruje wersji pakietu, jeśli modyfikujesz z pliku info.plist. Ustawiłem nową wersję pakietu bezpośrednio w "info" panelu xcode i teraz działa!

Marco Allori
źródło
0

Znalazłem inne rozwiązanie.

Jeśli wybierzesz cel >> info >> zaktualizuj identyfikator pakietu.

Michael
źródło
0

Miałem ten sam problem. Pierwsza przesłana wersja to 1.5.20 i chciała zaktualizować do 1.7.30.

Po bezskutecznym wypróbowaniu wersji 1.8, 2.0 i 3.0 zaktualizowałem CFBundleVersion do 10.0 i nagle zadziałało.

Nie jestem pewien, jaka jest logika tego zachowania, ale spowodowało to, że straciłem około 2 dni czasu pracy.

BastiBen
źródło
0

Sprawdź swoją wersję pakietu z poprzednio przesłaną wersją, powinieneś podać wyższą wersję pakietu w porównaniu z wersją pakietu już przesłanej wersji.Już załadowaną wersję można wyświetlić w itunesconnect / application / view details / binary details.

Vishnu R Kaimal
źródło
0

Spędziłem dwie noce nad podobnym problemem. Moja poprzednia wersja to 1.02 i próbowałem walidować za pomocą 1.2, 1.20, 1.1 i zawsze otrzymywałem nieprawidłowy komunikat binarny.

Rozwiązałem to, wpisując 2.0 jako numer wersji i zadziałało . Podejrzewam, że to również błąd. Nie dostałem tej wiadomości podczas ostatniej aktualizacji mojej gry z 1.0 do 1.1, ale było to z xcode 3. Dzięki za wskazówkę!

maszynista
źródło
0

Miałem podobny problem i po spędzeniu pół godziny zauważyłem, że zwiększam niewłaściwą liczbę. Zamiast zwiększać Bundle version, zwiększałem Bundleversions, string, shortw Info.plist. Wyszukaj „CFBundleVersion” w swoim projekcie za pomocą CMD + Shift + F. Zobaczysz, że musisz zwiększyć numer CFBundleVersion.

Josip B.
źródło
0

Spróbuj zmienić wersję = „1.1.1.0” na wersję = „1.1.1”

RouR
źródło
0

Stan na koniec października Apple wymaga, aby numery wersji były mniejsze niż 4 cyfry (1.2.3 lub 1.23 w przeciwieństwie do 1.2.3.4 lub 1.234). Dotyczy to również bibliotek!

Szybkie sprawdzenie numeru wersji powodującej problem w katalogu projektu powinno spowodować włączenie biblioteki:

grep -r "1.2.3.4" .

Wypaczanie
źródło
0

Miałem aktywną wersję beta TestFlight. Kompilacja 2020 , wersja 407

Przesłałem aplikację do oficjalnego przeglądu w App Store. Build 2020 , wersja 435 i została zatwierdzona. Po prostu tam siedzi i czeka, aż wprowadzę go na żywo do App Store.

Nie dodając skomplikowanej historii pobocznej, chciałem dać moim użytkownikom TestFlight beta zaktualizowaną wersję, aby przez kilka dni przejrzeć oficjalną wersję App Store przed udostępnieniem wersji App Store. Dlaczego pytasz? Ponieważ otrzymywali darmowe funkcje, wkrótce będzie to kosztować pieniądze, gdy aplikacja zostanie uruchomiona.

Tak więc przesłałem Build 2020 , wersję 436, do TestFlight i został on odrzucony.

Został odrzucony, ponieważ mam zatwierdzonego oficjalnego kandydata do App-Store z tym samym numerem kompilacji

Rozwiązanie: zmień numer kompilacji wersji TestFlight. Poddałem Zbuduj 20200 (dodałem dodatkowy zero) w wersji 436 do TestFlight i został zatwierdzony. Nie martw się, nadal możesz przesłać tę kompilację do tej samej grupy beta TestFlight, o ile nadal używasz tego samego BundleID.

jungledev
źródło