Apple hat die Felder irgendwie neu angeordnet / umfunktioniert.
Wenn Sie in Zukunft auf der Registerkarte "Info" nach Ihrem Anwendungsziel suchen, sollten Sie als Version (z. B. 3.4.0) die Zeichenfolge "Bundle-Versionen, kurz" und als Build (z. B. 500 oder 1A500 "die Option" Bundle-Version "verwenden ). Wenn Sie beide nicht sehen, können Sie sie hinzufügen. Diese werden den richtigen Textfeldern für Version und Build auf der Registerkarte Zusammenfassung zugeordnet. Sie sind die gleichen Werte.
Wenn Sie auf der Registerkarte "Info" mit der rechten Maustaste klicken und " Rohschlüssel / Werte anzeigen" auswählen , werden die tatsächlichen Namen CFBundleShortVersionString
(Version) und CFBundleVersion
(Build) angezeigt.
Die Version wird normalerweise so verwendet, wie Sie sie anscheinend mit Xcode 3 verwendet haben. Ich bin mir nicht sicher, auf welcher Ebene Sie nach dem Unterschied zwischen Version und Build fragen, daher werde ich sie philosophisch beantworten.
Es gibt alle Arten von Schemata, aber ein beliebtes ist:
{MajorVersion}. {MinorVersion}. {Revision}
- Hauptversion - Wichtige Änderungen, Neugestaltungen und Funktionsänderungen
- Kleinere Version - Kleinere Verbesserungen, Ergänzungen der Funktionalität
- Revision - Eine Patch-Nummer für Fehlerbehebungen
Anschließend wird der Build separat verwendet, um die Gesamtzahl der Builds für eine Version oder für die gesamte Produktlebensdauer anzugeben.
Viele Entwickler beginnen die Build-Nummer bei 0, und jedes Mal, wenn sie erstellen, erhöhen sie die Nummer um eins und erhöhen sich für immer. In meinen Projekten habe ich ein Skript, das die Build-Nummer bei jedem Build automatisch erhöht. Siehe Anweisungen dazu unten.
- Release 1.0.0 könnte Build 542 sein. Es dauerte 542 Builds, um zu einem 1.0.0-Release zu gelangen.
- Release 1.0.1 ist möglicherweise Build 578.
- Release 1.1.0 ist möglicherweise Build 694.
- Release 2.0.0 ist möglicherweise Build 949.
Andere Entwickler, einschließlich Apple, haben eine Build-Nummer, die aus einer Hauptversion + einer Nebenversion + einer Anzahl von Builds für die Version besteht. Dies sind die tatsächlichen Softwareversionsnummern im Gegensatz zu den für das Marketing verwendeten Werten.
Wenn Sie zu Xcode- Menü> Über Xcode gehen , werden die Versions- und Build-Nummern angezeigt. Wenn Sie auf die Schaltfläche Weitere Informationen ... klicken, werden verschiedene Versionen angezeigt. Da die Mehr Info ... Taste 5 in Xcode entfernt wurde, ist diese Information auch von der verfügbaren Software> Entwickler Abschnitt der Systeminformationen App, erhältlich durch Öffnen Apple - Menü> Über diesen Mac > System Report ... .
Zum Beispiel Xcode 4.2 (4C139). Marketing-Version 4.2 ist Build-Hauptversion 4, Build-Nebenversion C und Build-Nummer 139. Die nächste Version (vermutlich 4.3) wird wahrscheinlich Build-Version 4D sein, und die Build-Nummer beginnt bei 0 und erhöht sich von dort aus.
Die Versions- / Build-Nummern des iPhone Simulators sind genauso wie iPhones, Macs usw.
- 3,2: (7W367a)
- 4,0: (8A400)
- 4,1: (8B117)
- 4,2: (8C134)
- 4,3: (8H7)
Update : Auf Anfrage können Sie die folgenden Schritte ausführen, um ein Skript zu erstellen, das jedes Mal ausgeführt wird, wenn Sie Ihre App in Xcode erstellen, um die Build-Nummer zu lesen, zu erhöhen und in die App- {App}-Info.plist
Datei zurückzuschreiben. Es gibt optionale zusätzliche Schritte, wenn Sie Ihre Versions- / Build-Nummern in Ihre Settings.bundle/Root*.plist
Datei (en) schreiben möchten .
Dies wird aus dem How-to-Artikel hier erweitert .
In Xcode 4.2 - 5.0:
- Laden Sie Ihr Xcode-Projekt.
- Klicken Sie im linken Bereich ganz oben in der Hierarchie auf Ihr Projekt. Dadurch wird der Projekteinstellungseditor geladen.
- Klicken Sie auf der linken Seite des mittleren Fensters auf Ihre App unter der Überschrift ZIELE . Sie müssen dieses Setup für jedes Projektziel konfigurieren.
- Wählen Sie die Registerkarte Build-Phasen .
- Klicken Sie in Xcode 4 unten rechts auf die Schaltfläche Build-Phase hinzufügen und wählen Sie Run-Skript hinzufügen .
- Wählen Sie in Xcode 5 das Menü Editor > Build-Phase hinzufügen > Run-Skript-Build-Phase hinzufügen .
- Ziehen Sie die neue Phase " Skript ausführen" per Drag & Drop , um sie kurz vor der Phase " Bundle-Ressourcen kopieren" zu verschieben (wenn die Datei "app-info.plist" mit Ihrer App gebündelt wird).
- Stellen Sie in der neuen Phase " Skript ausführen" Shell ein :
/bin/bash
.
Kopieren Sie Folgendes und fügen Sie es in den Skriptbereich für ganzzahlige Build-Nummern ein:
buildNumber=$(/usr/libexec/PlistBuddy -c "Print CFBundleVersion" "$INFOPLIST_FILE")
buildNumber=$(($buildNumber + 1))
/usr/libexec/PlistBuddy -c "Set :CFBundleVersion $buildNumber" "$INFOPLIST_FILE"
Wie @Bdebeez hervorhob, ist auch das Apple Generic Versioning Tool ( agvtool
) verfügbar. Wenn Sie es lieber verwenden möchten, müssen Sie zunächst einige Dinge ändern:
- Wählen Sie die Registerkarte Build Settings .
- Unter dem Versioning Abschnitt, stellen Sie die aktuelle Projektversion Sie auf die Anfangs Build - Nummer verwendet werden soll, zB 1 .
- Zurück auf der Registerkarte " Erstellungsphasen" ziehen Sie Ihre Phase " Skript ausführen" nach der Phase " Bundle-Ressourcen kopieren" per Drag & Drop , um eine Race-Bedingung zu vermeiden, wenn Sie versuchen, die Quelldatei, die Ihre Build-Nummer enthält, sowohl zu erstellen als auch zu aktualisieren.
Beachten Sie, dass Sie mit der agvtool
Methode möglicherweise weiterhin regelmäßig fehlerhafte / abgebrochene Builds ohne Fehler erhalten. Aus diesem Grund empfehle ich die Verwendung agvtool
mit diesem Skript nicht.
In Ihrer Phase " Skript ausführen" können Sie jedoch das folgende Skript verwenden:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
Das next-version
Argument erhöht die Build-Nummer ( bump
ist auch ein Alias für dasselbe) und wird mit der neuen Build-Nummer -all
aktualisiert Info.plist
.
Wenn Sie über ein Einstellungspaket verfügen, in dem Sie die Version und den Build anzeigen, können Sie am Ende des Skripts Folgendes hinzufügen, um die Version und den Build zu aktualisieren. Hinweis: Ändern Sie die PreferenceSpecifiers
Werte entsprechend Ihren Einstellungen. PreferenceSpecifiers:2
bedeutet, dass Sie sich das Element in Index 2 unter dem PreferenceSpecifiers
Array in Ihrer Plist-Datei ansehen. Für einen 0-basierten Index ist dies die dritte Voreinstellung im Array.
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
Wenn Sie das verwenden, agvtool
anstatt es Info.plist
direkt zu lesen , können Sie Ihrem Skript stattdessen Folgendes hinzufügen:
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
Wenn Sie eine universelle App für iPad und iPhone haben, können Sie auch die Einstellungen für die iPhone-Datei festlegen:
/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