Dokument Apple mógł być bardziej jasny, jak przesłać wersję aktualizacji.
Jak zapytano w tytule, jaka jest różnica między
- numer wersji w itunes connect (który należy podać podczas przesyłania aktualizacji)
- wersja pakietu w xcode
- pakiet wersji ciąg znaków, krótki
Czy są w jakikolwiek sposób spokrewnieni?
Odpowiedzi:
Tak, są spokrewnieni. Wszystkie odnoszą się do wersji Twojej aplikacji.
Połączenie iTunes
Jest to numer wersji wyświetlany w App Store; To musi być czysty numer wersji, na przykład
1.2.3
Wersja pakietu (CFBundleVersion)
Nie musi to być czysty numer wersji. Może to być coś takiego jak
12345
lub1.2.3 (Build 12345AB)
. Jest to pokazane na przykład w oknie Informacje dla aplikacji Mac OS X i często jest bardziej „numerem kompilacji” niż „numerem wersji”.Ciąg wersji pakietu (CFBundleShortVersionString) Ta wartość jest używana jako „rzeczywisty” numer wersji. To musi być taka sama, jak ciąg używany do wersji iTunes Connect .
Aktualizacja:
jak wskazał @snlehton, CFBundleVersion musi być czystym numerem wersji, tak jak w
1.2.3
przypadku, gdy chcesz przesłać swoją aplikację do (iOS) App Store.źródło
1.2.3
a następnie zwiększasz wersję pakunku dla każdej kompilacji.Tak, są powiązane, ale ich definicja zależy od tego, jak są używane.
Zawsze musi to być numer wersji, np. 1.0
Tryb użycia 1 - ustawiono tylko CFBundleVersion
Musi być numerem wersji, np. 1.0. Musi pasować do wersji iTunes Connect.
Tryb użycia 2 - ustawiane są zarówno wartości CFBundleVersion, jak i CFBundleShortVersionString
Musi być numerem kompilacji, np. Pojedynczą liczbą całkowitą, np. 435163.
Musi być numerem wersji, np. 1.0. Musi pasować do wersji iTunes Connect.
Tryb użytkowania 2 to najlepszy sposób. Oto kilka przykładowych liczb ścieżki uaktualnienia aplikacji:
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
Dodatkowa uwaga na temat numerów wersji: jeśli prześlesz niewielką aktualizację (np. Poprawkę błędu) do swojej aplikacji, nigdy nie możesz przegapić okresów w numerze wersji, np. Zawsze używaj 1.0.1 i NIGDY 1.01, w przeciwnym razie ryzykujesz, że nie będziesz mógł używać pewne numery wersji w przyszłości, ponieważ nie będzie można ich zwiększyć.
źródło
Tak, wszystkie są powiązane.
Numer wersji w itunesconnect to numer wersji, który musisz podać. Na przykład 2.1.1 lub 3.1.2 itd. To również powinno być równe CFBundleShortVersionString .
Wersja pakietu W Xcode ( CFBundleVersion ) reprezentuje tylko numer kompilacji, który identyfikuje iterację (wydaną lub niewydaną) aplikacji.
Łańcuch wersji pakietu, krótki ( CFBundleShortVersionString ) to liczba składająca się z trzech liczb całkowitych oddzielonych kropkami. Pierwsza reprezentuje wszystkie większe aktualizacje aplikacji, takie jak aktualizacje, które wprowadzają nowe funkcje lub duże zmiany. Druga liczba całkowita oznacza wersje, które zawierają mniej widoczne funkcje. Trzecia liczba całkowita reprezentuje wydania konserwacyjne.
źródło
Uważaj na CFBundleVersion . To nie tylko numer wersji produkcyjnej. Ta wartość jest sprawdzana przez Apple podczas procesu przesyłania plików binarnych i może się nie powieść.
Pamiętaj, aby ustawić CFBundleVersion z wartością CFBundleShortVersionString podczas tworzenia wersji do przesłania.
Zobacz ten post o tym
źródło
CFBundleVersion
nie musi pasowaćCFBundleShortVersionString
. Na przykład, jeśli spojrzysz na bieżący plik .ipa dla przeglądarki Chrome (w sklepie z aplikacjami), ma on „34.0.1847.18” dlaCFBundleVersion
i „34.1847.18” dlaCFBundleShortVersionString
.Zaakceptowana odpowiedź jest drogą do zrobienia - wystarczy dodać to jako przykład.
W przypadku naszego ostatniego wydania wymagany był „Ciąg wersji pakietu, krótki”. Poszedłem więc dalej i dopasowałem go do numeru wersji pakietu (1.2.8 dla naszej aplikacji).
Następnie włączyłem Testflight i udostępniłem wersję oczekującą na recenzję Apple (1.2.8) naszym wewnętrznym testerom. Jednak tester znalazł problem, który wymagał naprawy, i usunęliśmy plik binarny. Podczas przesyłania nowej kompilacji wystąpił błąd wskazujący, że wersja kompilacji została już przesłana.
Po przeczytaniu kilku linków SO i dokumentacji Apple zrozumiałem, że stworzyłem wersję pakietu: 1.2.8.001, zachowując jednocześnie krótką wersję pakietu. Jeśli wymagana jest nowa kompilacja, zwiększamy wersję pakietu do 1.2.8.002.
Uwaga: przesyłanie zostało zaakceptowane, a kompilacja jest wyświetlana jako „1.2.8.001” w wersji wstępnej. Numer wersji to nadal 1.2.8.
źródło
Zaakceptowana odpowiedź tego linku zawiera dobre szczegóły: Która wersja / numery kompilacji aplikacji na iOS MUSZĄ zostać zwiększone po wydaniu App Store?
Z dokumentów Apple
CFBundleVersion (wersja pakietu)
CFBundleVersion (String - iOS, OS X) określa numer wersji kompilacji pakietu, który identyfikuje iterację (wydaną lub niewydaną) pakietu. Numer wersji kompilacji powinien być ciągiem składającym się z trzech nieujemnych liczb całkowitych oddzielonych kropkami, przy czym pierwsza liczba całkowita jest większa od zera. Ciąg powinien zawierać tylko cyfry (0-9) i kropki (.). Zera wiodące są obcinane z każdej liczby całkowitej i zostaną zignorowane (to znaczy 1.02.3 jest równoważne 1.2.3). Tego klucza nie można zlokalizować.
CFBundleShortVersionString (ciąg wersji pakietu, krótki)
CFBundleShortVersionString (String - iOS, OS X) określa numer wersji pakietu, który identyfikuje wydaną iterację aplikacji. Numer wersji wydania to ciąg składający się z trzech liczb całkowitych oddzielonych kropkami. Pierwsza liczba całkowita reprezentuje główne wersje aplikacji, takie jak wersje, które wprowadzają nowe funkcje lub duże zmiany. Druga liczba całkowita oznacza wersje, które zawierają mniej widoczne funkcje. Trzecia liczba całkowita reprezentuje wydania konserwacyjne.
Wartość tego klucza różni się od wartości CFBundleVersion, która identyfikuje iterację (zwolnioną lub niewydaną) aplikacji. Ten klucz można zlokalizować, dołączając go do plików InfoPlist.strings.
źródło