Automatische Inkrementierung der Bundle Version in Xcode 4

Apple fordert in seinen Guidelines für die Entwicklung von Apps für IPhone, iPad wie auch Mac OSX eine stete Inkrementierung der Versionsnummer wenn eine App im AppStore aktualisiert werden soll. Aber auch für die Entwicklung kann eine fortlaufende Nummer hilfreich sein. Gerade wenn man die App an Beta Tester via adHoc Distribution herausgibt. So lässt sich immer nachvollziehen, welche Entwicklungsversion beim Tester installiert ist und der Fehler kann besser gefunden werden.

Jedoch ist es lästig immer erst die Versionsnummer zu verändern wenn ein neuer Build geschrieben wird. Daher im folgenden nun eine Automatisierung des Ganzen mit Hilfe von Xcode. Wichtig ist es übrigens nicht nur die „Bundle version“ in der project-info.plist anzugeben, sondern auch den Wert für „Bundle versions string, short“.

Für die Automatisierung wird eine xcconfig-Datei benötigt. Dazu einen Rechtsklick auf das Projekt ausführen und „New File…“ auswählen. Im nun angezeigten Popup unter „Other“ den Typ „Configurations Settings File“ auswählen. Nach dem Klick auf Next wird nach dem Dateinamen gefragt. Für diese Beispiel hier verwende ich „version“. Nachdem die Datei erzeugt ist, darauf achten dass sie auf der obersten Ebene im Projekt, als im Projectroot, liegt.

Anschließend folgt die Anpassung der Datei. Wenn man sie öffnet ist die noch leer, bis auf den vorkonfigurierten Kommentarheader. Hier fügt man nun folgende Zeile ein und speichert das ganze:
CURRENT_PROJECT_VERSION = 1

Weiter geht es mit den Einstellungen im Projekt. Dazu links das Projekt auswählen und der nun angezeigten View ebenfalls links unter „Projects“ das entsprechende Projekt auswählen. Im Tab „Info“ gibt es nun die „Configurations“ für das Projekt. Standardmäßig sind das „debug“ und „release“. Nun eine Konfiguration auswählen, aufklappen und für den Wert „Based on Configuration File“ die eben erstellte Datei auswählen für Project und Target. Standardmäßig steht hier „None“. Diesen Schritt für alle Konfigurationen wiederholen, für die man die automatische Inkrementierung haben möchte.

Nun müssen noch die Einstellungen für die Targets angepasst werden. Dazu eben das Projekttarget in der linken Spalte der Hauptview auswählen, welches direkt unter den Projects steht. Nun wird in der angezeigten View unter „Info“ die project-info.plist angezeigt in der sich auch die Einträge „Bundle version“ und „Bundle versions string, shot“ finden sollten. Diese Werte jeweils auswählen und mit folgenden String ersetzen:
1.0.${CURRENT_PROJECT_VERSION}
In diesem Beispiel bedeutet dies, dass die Hauptversion bei 1 liegt und die Unterversion bei 0. Aber der letzte Wert wird nun aus der Datei gezogen und stellt somit die build-Version dar.

Als letzter Schritt muss nun Xcode gesagt werden, dass es diesen Wert hochzählen soll wenn ein neuer build ansteht. Dazu bleibt man in der Target-Ansicht und wählt hier den Tab „Build Phases“ aus (2. Tab rechts neben Info). In der angezeigten View gibt es unten rechts den Button „Add Build Phase“. Diesen anklicken und im angezeigten DropDown „Add Run Script“ auswählen. Nun sollte oben der Bereich „Run Script“ erscheinen, insofern er noch nicht vorhanden war. Diesen aufklappen, wenn dem noch nicht so ist und nun folgende Anpassungen ausführen. Der Wert bei Shell sollte „/bin/sh“ sein und im folgenden Textfeld folgendes Script einfügen:
NEW_VERSION=`cat "$SRCROOT/version.xcconfig" | awk '/CURRENT_PROJECT_VERSION/ { print $3 + 1 }'`
sed -i '' "s/CURRENT_PROJECT_VERSION = .*/CURRENT_PROJECT_VERSION = $NEW_VERSION/" "$SRCROOT/version.xcconfig"
CURRENT_PROJECT_VERSION=$NEW_VERSION
touch "$SRCROOT/version.xcconfig"

Dieses Script zieht sich die aktuelle Versionsnummer aus der Datei und aktualisiert diese.

Das waren alle Anpassungen die nötig sind. Zum Testen des Ganzen, nun einfach einen Build des Projektes herausschreiben. Schaut man nun in die version.xcconfig Datei, ist der darin stehende Wert um 1 erhöht. Auch die Versionsnummer der App ist inkrementiert worden. Dazu links im Project-Browser unter Products > Im Finder anzeigen auswählen. Die angezeigte Datei hat nun ebenfalls die aktualisierte Versionsnummer.

Ein Gedanke zu „Automatische Inkrementierung der Bundle Version in Xcode 4“

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.