Italian
English
blog

Blog e News:

blog

Lun 19, maggio 2008

frogSincronizzare la versione Svn con CFBundleVersion by Matteo Rattotti

Per gli utenti finali ogni applicazione ha una versione espressa da un numero. Ma per gli sviluppatori, ogni applicazione ha anche un numero detto di build, che è usato dal sistema operativo (esempio: Launch Services) e che serve per capire quale codice è utilizzato nell'applicativo.

Quando si crea un'applicazione in Cocoa questi due numeri possono essere assegnati alle chiavi: CFBundleShortVersionString e CFBundleVersion all'interno del file info.plist. Come scegliere questi numeri? E' facile trovare informazioni sul web (articoli in inglese):

Noi usiamo Subversion per gestire il nostro codice sorgente, abbiamo pensato che sarebbe stato interessante avere il numero di versione Svn sincronizzato con il CFBundleVersion. Abbiamo quindi creato uno script Python che senza sforzo alcuno sincronizza i due numeri:

#!/usr/bin/python

from AppKit import NSMutableDictionary 
import os

def increaseVersion():
    # reading svn version
    version = os.popen('svnversion -n').read()
    
    version = version.split(':')[-1]
    
    if not version[-1].isdigit():
        version = version[:-1]
    
    # reading info.plist file
    projectPlist = NSMutableDictionary.dictionaryWithContentsOfFile_('Info.plist')
    
    # setting the svn version for CFBundleVersion key
    projectPlist['CFBundleVersion'] = version
    projectPlist.writeToFile_atomically_('Info.plist', True)

if __name__ == '__main__':
    increaseVersion()

Come usare questo script in Xcode:

  1. Creare una nuova new build phase alla fine del vostro target’s build phases: tasto destro del mouse su Target , Add -> New build Phase -> New Run Script Build Phase.
  2. Doppio click sul nuovo oggetto "Run Script" e copiate/incollate lo script nel campo Script.
  3. Assicuratevi che il campo Shell contenga questo path: /usr/bin/python.

Quando andrete a compilate la vostra applicazione, il numero di versione Svn sarà utilizzato per la chiave CFBundleVersion.

Questo script è pensato per Mac OS X 10.5; può funzionare anche con 10.4 basta installare PyObjC.

Bookmark and Share

1 Comments:

Mickaël Menu - Mag 22, 08
Avatar bracket

Great tips,thanks you !






add comment

Comments rules:

  • If possible please stick to English language
  • We support Gravatar, go for it!
  • Use BBCode for formatting: [b], [u], [s]
  • Use [i] for quoting
  • Use [link www.site.com] site [/link] for links
  • Use [google] or [wiki] for referencies
  • HTML code is not allowed in comments