Artikel tagged ‘iOS

0

SVN-Revision als Build-Version in XCode 4

Folgendes Problem: Applikationen, die mit XCode gebaut werden, haben neben der normalen Release-Version (CFBundleShortVersionString) auch eine sogenannte Build-Version (CFBundleVersion). Die Release-Version ist dabei soweit kein Problem, kann man sie doch nach Belieben manuell hochsetzen. Bei der Build-Version verhält es sich ein bischen anders. Theoretisch möchte man hier, dass diese bei jedem Build automatisch erhöht bzw. auf einen sinnvollen Wert gesetzt wird. Idealerweise kann man aufgrund der Build-Version dann auch auf den verwendeten Code-Stand schliessen.

Ich habe mich daher entschieden, für meine Projekte die SVN-Revision als Build-Version zu verwenden. Dies ist mit XCode (zumindest in der Version 4.2, die ich momentan verwende) durch Hinzufügen einer weiteren Build-Phase ohne weiteres möglich. Hier also das Ergebnis dessen, was ich mir zusammengegoogelt habe:

In den Projekteinstellungen unter “TARGETS/Build Phases” muss man eine weitere (Run Script) Phase an das Ende hinzufügen. Als Script-Sprache habe ich Python gewählt, daher wird unter Shell “/usr/bin/python” eingestellt. Hier nun das Script, dass in der Phase ausgeführt werden muss:

1
2
3
4
5
6
7
8
9
10
11
12
13
import os
import csv
from subprocess import Popen, PIPE
from Foundation import NSMutableDictionary

cmd = "/usr/bin/svnversion" # get the svn revision
svn_revision = Popen(cmd, shell=True, stdout=PIPE).stdout.read()
info_plist = os.environ['BUILT_PRODUCTS_DIR'] + "/" + os.environ['WRAPPER_NAME'] + "/Info.plist"

## Open the plist and write the svn revision as the bundle version
plist = NSMutableDictionary.dictionaryWithContentsOfFile_(info_plist)
plist['CFBundleVersion'] = svn_revision
plist.writeToFile_atomically_(info_plist, 1)

Zunächst wird also mittels “svnrevision” die aktuelle SVN-Revision ermittelt. Das aktuelle Verzeichnis zur Ausführung des Scripts ist dabei das Projektwurzelverzeichnis, daher bekommt man auch automatisch die korrekte Revision. Im zweiten Schritt wird dann das “Info.plist” file (welches die Meta-Informationen für das Executable enthält) geändert und der “CFBundleVersion” key gesetzt. Im Ergebnis hat man nach jedem Build wie gewünscht die SVN-Revision als Build-Version.

Im Prinzip also alles ganz einfach. Da ich aber trotzdem ne Weile gebraucht habe, um alle nötigen Schnipsel zusammenzusuchen, hab ich das hier mal zusammengefasst. Vielleicht hilfts ja dem einen oder anderen… :)

Tags : , ,

0

myNZBGet Dokumentation

Zu meiner iPhone App für NZBGet habe ich jetzt eine Dokumentationsseite eingerichtet. Denke mal, das Blog war nich wirklich der richtige Ort dafür…

Tags : , , ,

0

NZBGet iPhone App

Es geschehen doch noch immer Zeichen und Wunder, hab ich doch tatsächlich eine iOS App zusammengeklöppelt… :) – Ich hab nach einer Fernbedienung für den NZBGet Newsgrabber gesucht und nix gescheites gefunden… Naja, was soll ich sagen, vier Wochen und einige nervige Registrierungen bei Apple später, ist die App jetzt approved und im App-Store verfügbar. – Das Ding nennt sich “myNZBGet”, und ich hab folgende Seite dafür eingerichtet: myNZBGet.smu42.de. Mal schauen, vielleicht kann das ja noch der eine oder andere gebrauchen… :)

Tags : , , ,