Która wersja / Numer kompilacji aplikacji na iOS musi zostać zwiększona po wydaniu App Store?

Pola wersji / budowania dla aplikacji na iOS obejmują:

  • "Version" Cfbundleshortversion (String - iOS, OS X) określa numer wersji pakietu, który identyfikuje wydaną iterację aplikacji. Numer wersji wydania jest ciągiem składającym się z trzech liczb całkowitych oddzielonych kropkami.

  • "Build" CFBundleVersion (String - IOS, OS X) określa numer wersji pakietu, który identyfikuje iterację (wydany lub niepublikowany) pakietu. Numer wersji kompilacji powinien być ciągiem składającym się z trzech nieujemnych, oddzielonych kropkami liczb całkowitych, przy czym pierwsza liczba całkowita jest większa od zera. Łańcuch powinien zawierać tylko cyfry (0-9) i kropki (.) znaków. Początkowe zera są obcinane z każdej liczby całkowitej i będą ignorowane (tzn. 1.02.3 jest równoważne 1.2.3). Ten klucz nie jest możliwy do zlokalizowania.

  • "iTunes Connect Numer wersji" : Numer wersji, który podajesz, gdy tworzenie nowej wersji aplikacji w iTunes Connect.

Moje pytanie brzmi:

Które numery wersji/kompilacji są wymagane do zwiększenia , gdy nowa wersja aplikacji zostanie przesłana do iTunes Connect i/lub wydana do App Store?

Czy "version" CFBundleShortVersionString lub "build" CFBundleVersion mogą pozostać takie same pomiędzy aktualizacjami aplikacji?

Dodatkowe punkty za Źródła Apple lub dokładne komunikaty o błędach wyświetlane przez iTunesConnect po przesłaniu nieprawidłowej wersji / kompilacji numer.


Android / Google Play Uwaga:

Dyskusja podpowiadająca to pytanie jest taka, że publiczna "wersja" aplikacji na Androida w Sklepie Google Play nie nie musi być zwiększana i nie jest w } w żaden sposób zatwierdzona. android:versionName może pozostać taka sama pomiędzy wydaniami, uaktualnieniem, obniżeniem wersji lub być dowolnym losowym ciągiem znaków, a nie czymś, co wydaje się być prawidłowym "numerem wersji".

android:versionName - wartość łańcuchowa, która reprezentuje release wersji kodu aplikacji, tak jak powinien być pokazywany użytkownikom.

Wartość jest ciągiem znaków, dzięki czemu można opisać wersję aplikacji jako ciąg znaków <major>.<minor>.<point>, lub jako dowolny inny typ o absolutnym lub względnym identyfikatorze wersji.

Różnica między versionName i versionNumber w Androidzie

Podczas Gdy android:versionCode jest wymuszona jako liczba całkowita incrementing-on-release.


Dokumentacja Apple

Jak zaznaczono w nowo zaakceptowana odpowiedź , Apple niedawno opublikował notatkę techniczną, która szczegółowo opisuje ich wersję i schemat numeru kompilacji:

Uwaga techniczna Apple TN2420-numery wersji i numery kompilacji

Author: pkamb, 2014-01-15

7 answers

Uwaga techniczna Apple TN2420, numery wersji i numery kompilacji

Podsumowanie:

  • para (Version, Build number) musi być wyjątkowy.
    • sekwencja jest poprawna: (1.0.1, 12) -> (1.0.1, 13) -> (1.0.2, 13) -> (1.0.2, 14) ...
  • Version (Cfbundleshortversion ) musi być w rosnącej kolejności sekwencyjnej.
  • Build number (CFBundleVersion) musi być w rosnącej kolejności sekwencyjnej.

Lista kontrolna numeru wersji i numeru kompilacji

Oto kilka rzeczy, które możesz sprawdzić, przesyłając nową kompilację do App Store. Upewnienie się, że Numer wersji i numer kompilacji są prawidłowo ustawione, pomoże uniknąć automatycznego odrzucania aplikacji za ich nieprawidłową konfigurację.

  1. dla każdej nowej wersji aplikacji musisz wymyślić nowy numer wersji. Numer ten powinien być większą wartością niż ostatni numer wersji, który używany. Chociaż możesz zapewnić wiele wersji dla każdej konkretnej wersji aplikacji, musisz tylko użyć jednego nowego numeru wersji dla każdej nowej wersji aplikacji.
  2. nie można ponownie używać numerów wersji.
  3. dla każdego nowego kompilacji, który przesyłasz, musisz wymyślić nowy numer kompilacji, którego wartość jest większa niż ostatni użyty numer kompilacji(dla tej samej wersji).
  4. możesz ponownie użyć numerów kompilacji w różnych pociągach, ale nie możesz ponownie użyć numerów kompilacji w różnych pociągach ten sam pociąg zwalniający.

Na podstawie listy kontrolnej ważna jest również następująca sekwencja (Version, Build Number).

  • Przypadek: ponowne użycie Build Number w różnych pociągach.

    (1.0.0, 1) -> (1.0.0, 2) -> ... -> (1.0.0, 11) -> (1.0.1, 1) -> (1.0.1, 2)

 56
Author: AechoLiu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-12 02:57:19

CFBundleShortVersionString powinien pasować do numeru wersji podanego przez iTunes Connect. Jest to również Numer wersji, który pojawia się, gdy użytkownik patrzy na Twoją aplikację w sklepie App Store.

Numer wersji jest wyświetlany w sklepie i ta wersja powinna pasować do numeru wersji wprowadzanego później w iTunes Connect.

Źródło

CFBundleVersion nie jest wyświetlany w App Store, ale jest używany przez iTunes do określenia, kiedy aplikacja została zaktualizowana.

Jeśli zaktualizujesz ciąg kompilacji, jak opisano w "Ustawianie numeru wersji i Ciągu kompilacji", iTunes rozpoznaje, że ciąg kompilacji został zmieniony i prawidłowo synchronizuje nowy pakiet iOS App Store z urządzeniami testowymi.

Źródło

Odpowiadając na twoje pytania...

Które numery wersji / kompilacji muszą być zwiększane, gdy nowa wersja aplikacji zostanie przesłana do app store?

Oba. Jeden jest wyświetlany w aplikacji Sklep, drugi jest używany przez iTunes do aktualizacji aplikacji.

Czy Cfbundleshortversion lub cfbundleversion mogą pozostać takie same pomiędzy aktualizacjami aplikacji?

Nie. (Pytanie Meta, jaki byłby tu przypadek użycia? Jeśli edytowałeś ładunek w jakikolwiek sposób, jego budowa będzie inna i użytkownik będzie chciał o tym wiedzieć). Jeśli spróbujesz, zobaczysz komunikaty o błędach jak poniżej:

Komunikaty o błędach

Lub są one porównywane z poprzednią odpowiednią liczbą do upewnij się, że w nowej wersji aplikacji zostanie przesłana większa liczba liczbowa?

Tak. Korzystanie z semver.org standard.

Czy liczby Cfbundleshortversion i cfbundleversion są w jakiś sposób porównywane do siebie?

Nie.
 36
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-14 23:49:44

Cfbundleshortversion jest publiczną "nazwą" wersji (przykład: "2.5" lub "3.8.1"). Musisz ją zwiększyć przy każdym uwolnienie.

CFBundleVersion jest prywatnym zbuduj numer. Nie jest widoczny w AppStore. Musisz ją zwiększyć przy każdym upload. Oznacza to, że jeśli kiedykolwiek odrzucisz plik binarny, zanim zostanie on uruchomiony i chcesz przesłać nowy plik binarny, będzie on miał ten sam Cfbundleshortversion ale musi mieć wyższą CFBundleVersion (przykład: public "2.5", private "2.5" , a następnie Binary reject, and re-upload private "2.5.1")

Edit on Listopad 16, 2016:

/!\ Właściwość cfbundleversionjest również używana (wraz z CFBundleName) w nagłówku User-Agentwysłanym przez NSURLConnection w Twoim kodzie.

Przykład: if CFBundleName is MyApp and CFBundleVersion jest 2.21, wtedy każde programowe zapytanie HTTP wysłane bezpośrednio przez twój kod za pomocą NSURLConnection osadzi nagłówek:

User-Agent: MyApp/2.21 CFNetwork/... Darwin/...

(Nie dotyczy to zapytań wysyłanych automatycznie przez UIWebView).

 23
Author: Gabriel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-16 08:40:52

CFBundleVersion i Cfbundleshortversion muszą być większe niż numer ostatniej wersji aplikacji. To dobra praktyka, aby utrzymać je takie same. Powinieneś je znaleźć w swoim-info.plist.

Gdy spróbujesz zweryfikować Aplikację w organizerze, spowoduje to wyświetlenie błędu, jeśli żadna z nich nie została zwiększona. Przydarzyło mi się to zeszłej nocy.

 5
Author: xoail,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-14 23:18:16

Zarówno CFBundleVersion jak i CFBundleShortVersionString należy zwiększyć wartość podczas wydawania nowej wersji w App Store.

Dodatkowo, jeden z łańcuchów musi być zgodny z wersją podaną w iTunes Connect.

Błąd weryfikatora Xcode Organizer: musi zwiększyć numer wersji.

To pytanie zawiera powyższy zrzut ekranu walidatora Organizatora Xcode odmawiającego walidacji aplikacji, gdy CFBundleVersion i CFBundleShortVersionString nie zostały zwiększone.

  • Ten pakiet jest nieprawidłowy. Wartość klucza CFBundleVersion [1.0] w Info.plik plist musi zawierać wyższą wersję niż poprzednio przesłana wersja [1.134].

  • Ten pakiet jest nieprawidłowy. Wartość klucza CFBundleShortVersionString [1.0] W Info.plik plist musi zawierać wyższą wersję niż poprzednio przesłana wersja [1.134].

Walidator wyświetla również błąd potwierdzający, że jeden z łańcuchów musi pasować do wersji aplikacji utworzonej w iTunes Connect.

  • Niedopasowanie Wersji. Ani CFBundleVersion ['1.0'] ani Cfbundleshortversion ['1.0'] W Info.plist pasuje do wersji aplikacji ustawionej w iTunes Connect ['1.4'].
 5
Author: pkamb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:20

Musisz zwiększyć zarówno .

Podczas przesyłania nowej wersji musisz utworzyć nową wersję w iTunes Connect, która automatycznie będzie wyższa niż poprzednie wersje. Ta wersja w iTunes Connect będzie oczekiwała pliku binarnego o tym samym numerze wersji, dlatego CFBundleShortVersionString musi zostać zwiększona.

Jeśli zaktualizujesz wersję, ale zapomnisz zwiększyć CFBundleVersion, pojawi się błąd podczas przesyłania. Zobacz odpowiedź pkamb i zrzut ekranu.

Aby uzyskać szczegółowe informacje na temat CFBundleShortVersionString i CFBundleVersion, Zobacz: https://stackoverflow.com/a/31921249/936957

 1
Author: Yunus Nedim Mehel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 11:47:20

AFAIK, z czubka mojej głowy, musisz tylko zwiększyć numer budowy CFBundleVersion. Inkrementowanie skróconej wersji ciąg nie jest koniecznie potrzebne, choć prawdopodobnie należy go zwiększyć, Jak to nie powiedzieć użytkownikowi, że aplikacja jest nowa. Apple twierdzi jednak, że numeracja powinna być zgodna z tradycyjnymi konwencjami wersjonowania oprogramowania, a iTunes Connect może narzekać, jeśli spróbujesz ponownie przesłać już istniejącą wersję.

Krótko mówiąc, może się udać, ale prawdopodobnie nie.
 -2
Author: SevenBits,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-14 22:22:58