vendredi 4 mai 2012

Compilation et signature d'une application XCode en ligne de commande

Pour signer une application vous aurez besoin de votre clé privée et d'un fichier "mobileprovision" correspondant au "bundle identifier" de votre application. Il convient de noter que XCode stoque vos "mobileprovision" qui servent à signer les applications dans le répertoire suivant:

/Users/UserName/Library/MobileDevice/Provisioning Profiles

Les noms de fichier donnés par XCode aux "mobileprovision" n'étant pas très lisibles vous pouvez également organiser votre propre répertoire de profiles avec des noms plus explicites comme MaSuperAppAdHoc.mobileprovision.

Pour compiler en ligne de commande le processus est le suivant:

TARGETNAME=NomDeMonProjet
BUILD
TYPE=Release
NAME=MaSuperApp
TARGETSDK=iphoneos
xcodebuild -target $TARGETNAME -sdk $TARGETSDK -configuration $BUILDTYPE PRODUCT_NAME=$NAME 2> /dev/null

Le paramètre NAME est très pratique car il permet de modifier à la volée le nom de votre application tel qu'il apparait sur le bureau de l'iPhone.

Le paramètre BUILTYPE peut contenir la valeur Release, Debug ou tout autre schéma de compilation que vous avez créé sous XCode. Par exemple MaSuperAppAdHoc ou MaSuperAppAppStore.

Pour obtenir la liste des valeurs possibles dans TARGETSDK vous pouvez utiliser la commande:
xcodebuild -showsdks

Mac OS X SDKs:
   Mac OS X 10.6 -sdk macosx10.6
   Mac OS X 10.7 -sdk macosx10.7

iOS SDKs:
   iOS 5.0 -sdk iphoneos5.0

iOS Simulator SDKs:
   Simulator - iOS 4.3 -sdk iphonesimulator4.3
   Simulator - iOS 5.0 -sdk iphonesimulator5.0

La signature de l'application se réalise avec la commande suivante:
DEVELOPPERNAME="iPhone Distribution: Nom Prénom"
PROVISONNING
PROFILE="MaSuperAppAdHoc.mobileprovision
/usr/bin/xcrun -sdk iphoneos PackageApplication -v "$NAME.app" -o "$NAME.ipa" --sign "$DEVELOPPERNAME" --embed $PROVISONNINGPROFILE

Si vous cumulez toutes ces commandes dans un petit fichier script vous pourrez automatiser la compilation et la distribution de vos applications. Si en plus vous rajoutez un scp vers votre serveur de test vous pourrez distribuer vos applications en adhoc over the air en une seule étape.

Aucun commentaire:

Enregistrer un commentaire