Apple hat die Felder sozusagen neu angeordnet/umgeleitet.
Wenn Sie in Zukunft auf der Registerkarte "Info" für Ihr Anwendungsziel nachsehen, sollten Sie "Bundle versions string, short" als Version (z. B. 3.4.0) und "Bundle version" als Build (z. B. 500 oder 1A500) verwenden. Wenn Sie diese beiden Angaben nicht sehen, können Sie sie hinzufügen. Diese werden dann den entsprechenden Textfeldern "Version" und "Build" auf der Registerkarte "Zusammenfassung" zugeordnet; es handelt sich um dieselben Werte.
Wenn Sie auf der Registerkarte Info mit der rechten Maustaste klicken und Raw Keys/Werte anzeigen werden Sie sehen, dass die tatsächlichen Namen lauten CFBundleShortVersionString
(Version) und CFBundleVersion
(Bauen).
Die Version wird in der Regel so verwendet, wie Sie sie mit Xcode 3 verwendet zu haben scheinen. Ich bin nicht sicher, auf welcher Ebene Sie über die Version / Build Unterschied fragen, so werde ich es philosophisch zu beantworten.
Es gibt alle möglichen Schemata, aber ein beliebtes ist:
{HauptVersion}.{MinorVersion}.{Revision}
- Hauptversion - Größere Änderungen, Umgestaltungen und Funktionalitäten Änderungen
- Kleinere Version - Kleinere Verbesserungen, Ergänzungen der Funktionalität
- Revision - Eine Patch-Nummer für Fehlerbehebungen
Dann wird das 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 einen Build erstellen, erhöhen sie die Nummer um eins, und zwar für immer. In meinen Projekten habe ich ein Skript, das die Build-Nummer bei jedem Build automatisch erhöht. Anweisungen dazu finden Sie weiter unten.
- Release 1.0.0 könnte Build 542 sein. Es brauchte 542 Builds, um zu einer Version 1.0.0 zu kommen.
- Release 1.0.1 könnte Build 578 sein.
- Release 1.1.0 könnte Build 694 sein.
- Release 2.0.0 könnte Build 949 sein.
Andere Entwickler, einschließlich Apple, haben eine Build-Nummer, die sich aus einer Hauptversion + Nebenversion + Anzahl der Builds für die Version zusammensetzt. Dies sind die tatsächlichen Versionsnummern der Software, im Gegensatz zu den für das Marketing verwendeten Werten.
Wenn Sie zu Xcode Menü > Über Xcode sehen Sie die Versions- und Build-Nummern. Wenn Sie auf die Mehr Info... werden Sie eine Reihe von verschiedenen Versionen sehen. Da die Mehr Info... Schaltfläche in Xcode 5 entfernt wurde, sind diese Informationen auch in der Software > Entwickler Abschnitt der System-Informationen App, verfügbar durch Öffnen von Apfel Menü > Über diesen Mac > Systembericht... .
Zum Beispiel, Xcode 4.2 (4C139). Marketingversion 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 wird bei 0 beginnen und von dort aus hochgezählt.
Die Versions-/Build-Nummern des iPhone-Simulators sind die gleichen wie die des iPhones, Macs usw.
- 3.2: (7W367a)
- 4.0: (8A400)
- 4.1: (8B117)
- 4.2: (8C134)
- 4.3: (8H7)
Update : Hier sind die Schritte, 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 sie in die App zurückzuschreiben. {App}-Info.plist
Datei. Es gibt optionale, zusätzliche Schritte, wenn Sie Ihre Versions-/Build-Nummern in Ihre Datenbank schreiben wollen. Settings.bundle/Root*.plist
Datei(en).
Dies ist eine Erweiterung des Anleitungsartikels aquí .
In Xcode 4.2 - 5.0:
-
Laden Sie Ihr Xcode-Projekt.
-
Klicken Sie im linken Fensterbereich auf Ihr Projekt ganz oben in der Hierarchie. Dadurch wird der Editor für die Projekteinstellungen geladen.
-
Klicken Sie auf der linken Seite des mittleren Fensterbereichs auf Ihre Anwendung unter dem Menüpunkt TARGETS Überschrift. Sie müssen diese Einstellung für jedes Projektziel konfigurieren.
-
Wählen Sie die Bauphasen tab.
-
- Klicken Sie in Xcode 4 unten rechts auf die Schaltfläche Bauphase hinzufügen Taste und wählen Sie Skript ausführen hinzufügen .
- Wählen Sie in Xcode 5 Herausgeber Menü > Bauphase hinzufügen > Skriptausführungsphase hinzufügen .
-
Ziehen Sie per Drag-and-Drop die neue Skript ausführen Phase zu verschieben, um sie kurz vor die Ressourcen des Kopierpakets Phase (wenn die Datei app-info.plist mit Ihrer Anwendung gebündelt wird).
-
In der neuen Skript ausführen Phase, einstellen Shell : /bin/bash
.
-
Kopieren Sie den folgenden Text und fügen Sie ihn 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 feststellte, ist die Generisches Versionierungswerkzeug von Apple ( agvtool
) ist ebenfalls verfügbar. Wenn Sie es stattdessen verwenden möchten, müssen Sie zunächst ein paar Dinge ändern:
- Wählen Sie die Build-Einstellungen tab.
- Im Rahmen der Versionierung Abschnitt, setzen Sie die Aktuelle Projektversion auf die ursprüngliche Build-Nummer, die Sie verwenden möchten, z. B., 1 .
- Zurück auf der Bauphasen und ziehen Sie per Drag-and-Drop Ihre Skript ausführen Phase nach der Ressourcen des Kopierpakets Phase, um eine Race Condition zu vermeiden, wenn Sie versuchen, die Quelldatei, die Ihre Build-Nummer enthält, sowohl zu erstellen als auch zu aktualisieren.
Beachten Sie, dass mit dem agvtool
Methode können Sie immer noch regelmäßig fehlgeschlagene/abgebrochene Builds ohne Fehler erhalten. Aus diesem Grund empfehle ich nicht die Verwendung von agvtool
mit diesem Skript.
Dennoch, in Ihrem Skript ausführen Phase können Sie das folgende Skript verwenden:
"${DEVELOPER_BIN_DIR}/agvtool" next-version -all
El next-version
Argument erhöht die Build-Nummer ( bump
ist ebenfalls ein Alias für dieselbe Sache), und -all
Aktualisierungen Info.plist
mit der neuen Build-Nummer.
-
Wenn Sie ein Einstellungsbündel haben, 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 an Ihre Einstellungen anpassen. PreferenceSpecifiers:2
bedeutet, dass Sie sich den Eintrag bei Index 2 unter dem PreferenceSpecifiers
Array in Ihrer plist-Datei, also für einen 0-basierten Index, ist das die 3.
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 Folgendes verwenden agvtool
anstatt die Info.plist
direkt zu verwenden, können Sie stattdessen Folgendes in Ihr Skript aufnehmen:
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
-
Und wenn Sie eine Universal-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