iOS static Library versionieren

Eine App Versionsnummer steht in der zugehörigen Info.plist. Aber wie versioniert man eine statische Library?

3 Aspekte fallen mir ein:

  • Die Version muss an einer zentralen Stelle eingetragen werden.
  • Die Version muss zur Laufzeit vom bindenden Programm abgefragt werden können.
  • Die Version muss von „ausserhalb“ erkennbar sein, also bevor die Bibliothek eingebunden wird.


In Xcode gibt es in den Build Settings einen Abschnitt Versionen.
Xcode Versioning
Hier trage ich Current Project Version und Versioning System ein. Beim Build wird dann automatisch eine Datei mit Namen MyLib_vers.c erzeugt („MyLib“ ist ein Platzhalter). Sie ist  unterhalb des DerivedData Verzeichnisses abgelegt. Wo genau, kann man im Log Navigator herausfinden.

Die erzeugte Datei enthält einen Versions-String und eine Versions-Nummer, die man später im Quellcode der bindenden App verwenden kann.

const unsigned char MyLibVersionString[] __attribute__ ((used)) = 
"@(#)PROGRAM:MyLib  PROJECT:MyLib-1.9" "\n";
const double MyLibVersionNumber __attribute__ ((used)) = 
(double)1.9;

Die spezielle Zeichenkette @(#) stammt vom Urahn der Versionierungssysteme ab, dem UNIX SCCS (Source Code Control System). Sie dient dazu, in einer Nicht-Textdatei den Versionsstring wiederzufinden. Genau diese Aufgabe erfüllt das kleine UNIX-Programm what, welches ich von der Kommandozeile aufrufe:

$ what libMyLib.a
libMyLib.a
        PROGRAM:MyLib PROJECT:MyLib-1.9

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.