Apple trochę zmieniło / zmieniło przeznaczenie pól.
Idąc dalej, jeśli spojrzysz na zakładkę Informacje o celu aplikacji, powinieneś użyć „Ciągu wersji pakietu, krótkiego” jako swojej wersji (np. 3.4.0) i „Wersji pakietu” jako swojej wersji (np. 500 lub 1A500 ). Jeśli nie widzisz ich obu, możesz je dodać. Będą one mapowane do odpowiednich wersji i budują pola tekstowe na karcie Podsumowanie; są to te same wartości.
Przeglądając kartę Informacje, kliknięcie prawym przyciskiem myszy i wybranie opcji Pokaż surowe klucze / wartości spowoduje wyświetlenie rzeczywistych nazw CFBundleShortVersionString
(Wersja) i CFBundleVersion
(Kompilacja).
Wersja jest zwykle używana tak, jak wyglądasz na Xcode 3. Nie jestem pewien, na jakim poziomie pytasz o różnicę Wersja / Kompilacja, więc odpowiem na nią filozoficznie.
Istnieje wiele rodzajów schematów, ale popularny jest:
{MajorVersion}. {MinorVersion}. {Revision}
- Wersja główna - Główne zmiany, przeprojektowania i zmiany funkcjonalności
- Drobna wersja - Drobne ulepszenia, dodatki do funkcjonalności
- Wersja - Numer poprawki poprawek błędów
Następnie kompilacja jest używana osobno, aby wskazać całkowitą liczbę kompilacji dla wydania lub przez cały okres użytkowania produktu.
Wielu programistów rozpoczyna numer kompilacji od 0 i za każdym razem, gdy budują, zwiększają liczbę o jeden, zwiększając na zawsze. W moich projektach mam skrypt, który automatycznie zwiększa liczbę kompilacji za każdym razem, gdy buduję. Zobacz instrukcje poniżej.
- Wersja 1.0.0 może być kompilacją 542. Potrzebne były 542 kompilacje, aby uzyskać wersję 1.0.0.
- Wersja 1.0.1 może być kompilacją 578.
- Wersja 1.1.0 może być kompilacją 694.
- Wersja 2.0.0 może być kompilacją 949.
Inni programiści, w tym Apple, mają numer kompilacji składający się z wersji głównej + wersji podrzędnej + liczby kompilacji do wydania. Są to rzeczywiste numery wersji oprogramowania, w przeciwieństwie do wartości używanych w marketingu.
Jeśli przejdziesz do menu Xcode > Informacje o Xcode , zobaczysz numery wersji i kompilacji. Jeśli naciśniesz przycisk Więcej informacji ... zobaczysz kilka różnych wersji. Ponieważ Info Więcej ... przycisk został usunięty w Xcode 5, informacja ta jest również dostępna z Software> Deweloper sekcji System Information aplikacji dostępnych poprzez otwarcie firmy Apple menu> Ten Mac > Raport Systemu ... .
Na przykład Xcode 4.2 (4C139). Wersja marketingowa 4.2 to Kompilacja główna wersja 4, Kompilacja pomocnicza wersja C i Kompilacja numer 139. Następna wersja (prawdopodobnie 4.3) prawdopodobnie będzie Kompilacja wersja 4D, a numer Kompilacji rozpocznie się od 0 i będzie wzrastał stamtąd.
Numery wersji / kompilacji iPhone'a są takie same, jak iPhone'y, komputery Mac itp.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Aktualizacja : na żądanie, oto kroki, aby utworzyć skrypt, który będzie uruchamiany za każdym razem, gdy budujesz aplikację w Xcode, aby odczytać numer kompilacji, zwiększyć go i zapisać z powrotem do {App}-Info.plist
pliku aplikacji . Istnieją opcjonalne dodatkowe kroki, jeśli chcesz zapisać numery wersji / kompilacji w swoich Settings.bundle/Root*.plist
plikach.
Jest to rozszerzone z artykułu z poradnikiem tutaj .
W Xcode 4.2 - 5.0:
- Załaduj swój projekt Xcode.
- W lewym panelu kliknij swój projekt na samym szczycie hierarchii. Spowoduje to załadowanie edytora ustawień projektu.
- Po lewej stronie środkowego panelu okna kliknij swoją aplikację pod nagłówkiem CELE . Musisz skonfigurować tę konfigurację dla każdego celu projektu.
- Wybierz kartę Fazy budowania .
- W Xcode 4 w prawym dolnym rogu kliknij przycisk Dodaj fazę kompilacji i wybierz Dodaj skrypt uruchamiania .
- W Xcode 5 wybierz menu Edytor > Dodaj fazę kompilacji > Dodaj fazę kompilacji skryptu uruchamiania .
- Przeciągnij i upuść nową fazę Uruchom skrypt, aby przenieść ją tuż przed fazą Kopiuj zasoby pakietu (kiedy plik app-info.plist zostanie dołączony do Twojej aplikacji).
- W nowym Run Script fazie ustawić Shell :
/bin/bash
.
Skopiuj i wklej następujące elementy w obszarze skryptu dla liczb całkowitych kompilacji:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Jak wskazał @Bdebeez, dostępne jest również narzędzie Apple Generic Versioning Tool ( agvtool
). Jeśli wolisz go używać, musisz najpierw zmienić kilka rzeczy:
- Wybierz kartę Ustawienia kompilacji .
- W sekcji Wersjonowanie ustaw bieżącą wersję projektu na początkowy numer kompilacji, którego chcesz użyć, np . 1 .
- Z powrotem na karcie Fazy kompilacji przeciągnij i upuść fazę Uruchom skrypt po fazie Kopiuj zasoby pakietu, aby uniknąć sytuacji wyścigu podczas próby zarówno kompilacji, jak i aktualizacji pliku źródłowego zawierającego numer kompilacji.
Zauważ, że dzięki agvtool
metodzie nadal możesz okresowo otrzymywać nieudane / anulowane kompilacje bez błędów. Z tego powodu nie polecam używać agvtool
tego skryptu.
Niemniej jednak w fazie uruchamiania skryptu możesz użyć następującego skryptu:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
next-version
Zwiększa Argument numer kompilacji ( bump
jest aliasem dla tej samej rzeczy) i -all
aktualizacje Info.plist
o nowym numerze kompilacji.
A jeśli masz pakiet ustawień, w którym wyświetlasz wersję i kompilację, możesz dodać na końcu skryptu, aby zaktualizować wersję i kompilację. Uwaga: zmień PreferenceSpecifiers
wartości, aby pasowały do ustawień. PreferenceSpecifiers:2
oznacza spojrzenie na pozycję o indeksie 2 pod PreferenceSpecifiers
tablicą w pliku plist, więc dla indeksu opartego na 0 jest to trzecie ustawienie preferencji w tablicy.
productVersion=$(/usr/libexec/PlistBuddy -c "Print CFBundleShortVersionString" "$INFOPLIST_FILE")
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
Jeśli używasz agvtool
zamiast czytać Info.plist
bezpośrednio, możesz zamiast tego dodać do skryptu:
buildNumber=$("${DEVELOPER_BIN_DIR}/agvtool" what-version -terse)
productVersion=$("${DEVELOPER_BIN_DIR}/agvtool" what-marketing-version -terse1)
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root.plist
A jeśli masz uniwersalną aplikację na iPada i iPhone'a, możesz również ustawić ustawienia dla pliku iPhone'a:
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:2:DefaultValue $buildNumber" Settings.bundle/Root~iphone.plist
/usr/libexec/PlistBuddy -c "Set PreferenceSpecifiers:1:DefaultValue $productVersion" Settings.bundle/Root~iphone.plist