Jacques Foucry bio photo

Jacques Foucry

IT, râleur et faiseur de pain

Email



Lorsque l’on développe (une application iPhone, une application MacOSX ou le firmware d’un four à micro-onde), on met du code de déverminage pour vérifier que le programme fait bien ce qui doit faire au moment ou il doit le faire.

Que l’on utilise le système de log du système (NSLog pour iOS et OSX), printf sous d’autres plateformes ou l’excellent NSLogger de Florent Pillet (iOS OSX et Android), ce code ralentit l’exécution de l’application.

Souvent ce code est conditionné :

1
2
3
#ifdef DEBUG
    NSLOG(@"var1 == %@");
#endif

Comment ça marche ?

Xcode définit pour nous cette Macro, DEBUG, parce que nous utilisons une configuration Debug :

Les schémas d'un projet Xcode

Le schéma « Run » utilise la configuration Debug. C’est en général celle que l’on utilise en cours de développement.

Mais voilà, vous êtes à peu près satisfait de votre développement et vous voudriez tester en vrai, c’est à dire sans le code déverminage. Et surtout faire tester sans ce code, histoire de voir si votre application est assez réactive.

La configuration Release ne définit pas la macro DEBUG, mais elle n’utilise pas le provisioning profile de développement. Impossible alors de faire tester cette version.

Ce n’est donc pas la solution, mais nous en approchons.

Nous allons créer une nouvelle configuration qui ne définit pas DEBUG et qui utilise le PP de développement simple non ?

Comment faire ?

La première chose à faire est de trouver où sont définies les configurations.

Trouver la définition des configurations

Sélectionnez votre projet dans la colonne idoine et positionnez-vous sur l’onglet « info ».
Dans le cadre configuration se trouvent les configurations pas défaut défini au moment de la création de votre projet Xcode.

Juste en dessous, un petit bouton + va nous permettre d’ajouter une configuration. En fait, nous allons dupliquer la configuration Debug (c’est celle qui nous donne le moins de travail ensuite). J’ai appelé la mienne Private, mais vous pouvez choisir le nom qui vous fait plaisir.

Passons maintenant sur l’onglet « Build Settings » et cherchons dans la liste les « Preprocessor Macros »

Définir les macros associés à la configuration

Nous pouvons constater que Debug et Private définissent la macro DEBUG. Nous allons éditer notre nouvelle configuration pour retirer cette définition gênante. Il suffit de double clicker sur DEBUG=1 pour faire apparaitre un popover qui indique les macros définies. Nous allons nous inspirer ici de la configuration Release et supprimer toutes les définitions.

Sélectionnez chacune des lignes et cliquez sur le bouton – (moins) en bas du popover.

Le popover de définition des macros

Vous pouvez vérifier plus haut dans cette fenêtre que Private utilise bien votre identité developer pour signer de code de l’application (et donc le PP qui y correspond).

Comment ça s’utilise 

Si vous utilisez mon script de build automatique, vous avez quasiment fini le travail. Il suffit de définir un fichier de configuration pour le script xcodebuild-wrapper.py qui utilise la configuration Private et le PP de développement

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
  [xcodebuild]
  SDK=iphoneos6.1
  keychain=/Users/Jacques/Library/Keychains/test.keychain
  password=unmotdepasse
  configuration=Private
  target=PilStock
  developerName=iPhone Developer: Jacques Foucry
  deployment_address=http://www.examples.com/download/ipa
  projectPath=/Users/Jacques/source/Test/test.xcodeproj
  remoteHost=host.example.com
  username=jacques
  remotePassword=monmotdepasse
  remoteFolder=/var/www/html/example.com/download/ipa
  gitrepository=git.example.com/repositories/test.git
  provisioningProfile=/Users/Jacques/Library/MobileDevice/Provisioning Profiles/Test_Provisioning_Profile_.mobileprovision

Si vous voulez utiliser cette configuration directement dans Xcode, il vous reste à définir un nouveau schéma qui utilise cette configuration.

Vous pouvez par exemple, dupliquer le schéma « Run » et changer la configuration. J’ai également appelé mon nouveau schéma « Private » pour rester cohérent.

Une fois votre nouveau schéma créé, changez dans la cible « Run » la configuration par « Private ».

Désormais lorsque vous désirez tester votre application sans code de déverminage, choisissez le schéma « Private ».


Laisser un commentaire

Les commentaires sont soumis à modération.