2 Targets - X schemes

Pour ceux qui utilisent plusieurs targets pour une application, est-ce que vous créez 1 scheme par target ?



J'ai bien vu qu'on pouvait ajouter des targets à  un scheme, mais comment alors multiplier les executables et sélectionner le bon dans le menu ?



D'autre part, lors de la duplication d'un scheme, si j'ajoute un target, je ne peux pas supprimer le premier target ajouté par défaut... ?



Donc en gros, comment vous y prenez vous pour avoir sous la main 6 executables ? (2 targets fois 3 configs (debug, adhoc, distri))



Quelle est la meilleure approche ?

Réponses

  • AliGatorAliGator Membre, Modérateur
    Avec le nouveau système de Build & Archive, il ne signe l'application qu'après avoir créé l'Archive : tu crées une "archive" via Product > Archive, et ensuite depuis l'Organizer, tu peux distribuer cette archive soit par OTA, soit sur l'AppStore.



    Du coup pas besoin de cible AdHoc et AppStore séparées.



    Du coup moi j'ai un Scheme "Preprod" qui tape sur notre serveur de preprod, un Scheme "Prod" qui tape sur les serveurs de Prod.

    L'action "Run" utilise la configuration "Debug - Preprod" dans le premier scheme, "Debug - Prod" dans le 2e scheme

    L'action "Archive" utilise la configuration "Release - Preprod" dans le premier scheme, "Release - Prod" dans le 2e.



    Au final que 2 schemes pour tous les cas Debug/Release, Prod/Preprod, Debugging/OTA/AppStore.
  • muqaddarmuqaddar Administrateur
    'AliGator' a écrit:


    Du coup pas besoin de cible AdHoc et AppStore séparées.




    Oui, mais moi j'ai 2 targets pour une version Lite et une version standard. Ce sont 2 exécutables différents.

    Et j'ai toujours mes 3 configs comme avant: debug, beta (adhoc), distri (release).



    Donc je suis obligé d'avoir 2 targets (qui contiennent des preprocessors macros différentes).

    Tu me suis ?
  • JegnuXJegnuX Membre
    mars 2012 modifié #4
    'muqaddar' a écrit:


    Oui, mais moi j'ai 2 targets pour une version Lite et une version standard. Ce sont 2 exécutables différents.

    Et j'ai toujours mes 3 configs comme avant: debug, beta (adhoc), distri (release).



    Donc je suis obligé d'avoir 2 targets (qui contiennent des preprocessors macros différentes).

    Tu me suis ?




    Oui mais c'est ce qu'explique Ali : lui il a deux targets aussi (avec des preprocessors macros différentes) pour différencier le serveur de preprod et le serveur de prod. ça correspond "en gros" à  ta version lite et ta version complète.

    Après, comme il te l'as dit, tu n'as besoin que de deux configs : debug et distrib. Puisque quand tu feras un Archive, l'appli ne sera pas encore signée. Tu pourras la signer après coup, depuis l'organizer, > Archives > Distribute > App Store || Ad Hoc, et à  ce moment tu pourras choisir le profile pour signer ton App.



    Et du coup, tu auras uniquement 2 Schemes : 1 par Target, que tu configureras comme la expliqué Ali.
  • Bonjour,



    Je ne sais pas si tu as résolu ton problème, personnellement pour la même question (2 targets : Lite/Full) j'ai suivi ce tutoriel (Creating Lite Versions of iPhone Games / Apps : http://www.bit-101.com/blog/?p=2098 ), les captures xcode ne sont pas à  jour mais on s'en sort.
  • muqaddarmuqaddar Administrateur
    'JegnuX' a écrit:


    Oui mais c'est ce qu'explique Ali : lui il a deux targets aussi (avec des preprocessors macros différentes) pour différencier le serveur de preprod et le serveur de prod. ça correspond "en gros" à  ta version lite et ta version complète.

    Après, comme il te l'as dit, tu n'as besoin que de deux configs : debug et distrib. Puisque quand tu feras un Archive, l'appli ne sera pas encore signée. Tu pourras la signer après coup, depuis l'organizer, > Archives > Distribute > App Store || Ad Hoc, et à  ce moment tu pourras choisir le profile pour signer ton App.



    Et du coup, tu auras uniquement 2 Schemes : 1 par Target, que tu configureras comme la expliqué Ali.




    OK, j'ai tout compris ! Merci de m'avoir éclairé. image/thumbsup.gif' class='bbc_emoticon' alt='' />
  • AliGatorAliGator Membre, Modérateur
    Ce n'est pas tout à  fait ça en fait (moi je n'ai qu'un seul Target et 4 configs ("Debug-Preprod", "Debug-Prod", "Release-Preprod", "Release-Prod"), mais c'est un peu différent, car je ne produis vraiment qu'une seule application avec mon Xcode : FoodReporter. Point barre. La différentiation Preprod/Prod se fait grâce à  une macro ("-DPREPROD" ou "-DPROD" dans les "Other Compiler Flags") mais je ne considère pas ça comme 2 produits différents, plutôt comme un choix de paramètre lors de la compilation.



    Dans ton cas, avec tes 2 versions Lite et Standard, ce que t'as expliqué JegnuX est en effet bien plus adapté :

    - 2 targets, un "Lite" et un "Standard"

    - 2 configs, une "Debug" et une "Release"

    - 2 schemes, pour pouvoir lancer au choix la version Lite ou Standard (quand tu débugues dans le simulateur ou sur ton iPhone, lorsque tu lances l'Analyzer, etc)



    C'est sûr que dans ton cas les "schemes" se confondent un peu avec les "Targets", puisque tes 2 targets sont 2 applications exécutables iOS que tu vas vouloir potentiellement tester, débuguer, distribuer... de façon indépendante.
  • muqaddarmuqaddar Administrateur
    'AliGator' a écrit:


    Ce n'est pas tout à  fait ça en fait (moi je n'ai qu'un seul Target et 4 configs ("Debug-Preprod", "Debug-Prod", "Release-Preprod", "Release-Prod"), mais c'est un peu différent, car je ne produis vraiment qu'une seule application avec mon Xcode : FoodReporter. Point barre. La différentiation Preprod/Prod se fait grâce à  une macro ("-DPREPROD" ou "-DPROD" dans les "Other Compiler Flags") mais je ne considère pas ça comme 2 produits différents, plutôt comme un choix de paramètre lors de la compilation.



    Dans ton cas, avec tes 2 versions Lite et Standard, ce que t'as expliqué JegnuX est en effet bien plus adapté :

    - 2 targets, un "Lite" et un "Standard"

    - 2 configs, une "Debug" et une "Release"

    - 2 schemes, pour pouvoir lancer au choix la version Lite ou Standard (quand tu débugues dans le simulateur ou sur ton iPhone, lorsque tu lances l'Analyzer, etc)



    C'est sûr que dans ton cas les "schemes" se confondent un peu avec les "Targets", puisque tes 2 targets sont 2 applications exécutables iOS que tu vas vouloir potentiellement tester, débuguer, distribuer... de façon indépendante.




    Oui, c'est exactement ce que j'ai fait.



    Sinon pour les MACRO, je les ai mises dans PREPROCESSOR_MACROS (de LLVM) et non dans Other Compiler FLags. Je suppose que tant que je ne change pas de compilateur, ça ne pose pas de problème.
  • AliGatorAliGator Membre, Modérateur
    Ah heu ouais j'ai cité le réglage de tête mais je suis pas sûr de savoir où je les ai foutues non plus en réalité ^^

    Evidemment s'il y a un réglage PREPROCESSOR_MACROS autant l'utiliser.
  • muqaddarmuqaddar Administrateur
    Dis moi Ali, tu me confirmes que tu ne mets pas du tout de CodeSigning (Don't code sign) dans le target en mode distri ?



    J'ai beau sélectionné Distri dans mon Scheme pour la fonction "Archive", quand je demande un Product => Archive, je prends une erreur:





    CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 5.1'
  • AliGatorAliGator Membre, Modérateur
    Bah en fait j'indique le profil "iPhone Distribution" dans ma configuration utilisée pour la distri si.

    J'avoue que là  je suis un peu perplexe sur ce point, mais je pense qu'il y a une sorte de double signature : une signature du code quand tu compiles (en .app), et une signature du bundle ensuite quand tu lui demandes de créer le .ipa pour la distribution OTA (ou AppStore).



    La première signature (signature du code) est faite via les réglages "Code Signing" dans les Build Settings. La seconde est faite quand tu choisis "Distribute" dans l'Organizer pour distribuer ton archive en IPA via OTA.



    Enfin c'est comme ça que je le comprend.
  • muqaddarmuqaddar Administrateur
    Ok, je vois.



    Cela semble marcher. Un grand merci !
Connectez-vous ou Inscrivez-vous pour répondre.