2 applis avec un seul projet

groumpfgroumpf Membre
Salut,

je me demande si c'est possible de générer 2 applis avec le même projet. J'ai 2 applis qui sont très proches et avec une compilation conditionnelle je peux avoir le code de l'une ou l'autre.
Donc pour la compilation conditionnelle je peux dupliquer les configurations et mettre le define dans les configurations.

Par contre il reste le problème de l'image Default.png qui est différente. Il faudrait que je puisse dans une configuration recopier l'un ou l'autre png dans Default.png.

Pour l'AppId, je ne vois pas d'autre moyen que de le changer au moment de générer.

Des idées ?

Merci

Réponses

  • AliGatorAliGator Membre, Modérateur
    14:02 modifié #2
    Il faut que tu crées deux Targets différents.
    Pour ce qui est du Default.png il n'y a aucun souci non plus : déjà  tu peux cocher ou non les fichiers que tu veux mettre dans chacun des Targets (petit conseil du jour si tu as plusieurs targets, fais un ctrl-clic dans l'en-tête de la zone de gauche "Groups & Files" et coche dans le menu déroulant qui apparait la ligne "Target Membership" pour afficher devant chaque fichier la case à  cocher indiquant si chaque fichier va être inclus au target ou non, c'est plus simple que d'y aller par la vue "Details" dans ce cas)

    Ensuite si tu as plusieurs images Default.png nul besoin de les copier dans un sens ou dans l'autre etc, il suffit de préciser le nom que tu veux dans le Info.plist.
    Dans le Info-Target1.plist tu indiques Default1.png comme launch image, dans Info-Target2.plist tu indiques Default2.png comme launch image, et dans les Build Settings de Target1 tu indiques si ce n'est pas déjà  fait (normalement c'est fait automatiquement quand tu crées un nouveau target) que le Info.plist à  utiliser c'est Info-Target1.plist, et l'autre pour l'autre target.
  • groumpfgroumpf Membre
    14:02 modifié #3
    Cela m'éclaire sur l'utilité des targets.
    Merci beaucoup.
  • maxi_moussemaxi_mousse Membre
    14:02 modifié #4
    Tiens tu peux potasser ça, moi ça m'avait bien aidé quand j'en avais eu besoin.
  • groumpfgroumpf Membre
    septembre 2010 modifié #5
    Bon j'essaye de mettre en oeuvre le seconde target mais je galère un peu.

    En premier j'ai créé une nouvelle target mais là  quand je faisais un build il ne se passait rien.

    Donc j'ai dupliqué la target existante mais maintenant j'ai une erreur sur le precompile du .pch.
    Est-ce qu'il faut changer le nom du .pch ?

    A vrai dire je ne sais pas vraiment ce que c'est. Sachant que j'ai une compilation conditionelle il vaut mieux que mes headers soient compilés séparément non ? Est-ce que ca veut dire 2 .pch ?

    Et au niveau des configurations, sont-elles étanches d'une target à  l'autre parce que quand je sélectionne la seconde target j'ai l'impression de retrouver les configurations de l'autre (la config appstore par exemple).

    Et puis j'ai aussi un warning depuis que j'ai 2 Infos.plist : Warning: The Copy Bundle Resources build phase contains this target's Info.plist file 'Target2-Info.plist'.


    Merci pour vos lumières.
  • AliGatorAliGator Membre, Modérateur
    14:02 modifié #6
    Il faut choisir la Target pour laquelle tu build (il ne va pas builder les 2 en même temps : tu choisis ta Target 1 puis lance le build, puis choisis la target 2 et lance le build. Comme quand tu veux changer de SDK, de Config, ou de cible Simulator/Device : tu choisis tous ces paramètres, ensuite tu build, et dans tous les cas ça te fait un unique produit en sortie correspondant aux paramètres que tu as choisi.

    Le PCH c'est un "Pre-compiled header", c'est un fichier d'en-tête comme un .h mais... précompilé (au lieu d'être inclus dans les .c ou .m à  chaque fois et que la partie venant du header soit recompilé pour tous les fichiers de code à  trasnsformer en fichier objet). C'est éventuellement un bon endroit par exemple pour y mettre des constantes ou des macros génériques à  tout ton programme. Tu peux n'avoir qu'un seul PCH pour tes deux targets si tu veux.

    Pour ce qui est des configurations, si tu fais un Pomme-I au niveau de ton projet (ligne du xcodeproj dans le panel de gauche "Groups & Files") pour avoir les infos projet, tu auras dans l'onglet Build de cette fenêtre les valeurs des configurations au niveau du projet. Si tu fais un Pomme-I après avoir sélectionné un de tes Targets par contre, les valeurs affichées dans l'onglet Build seront les valeurs affectées au niveau du Target et non du Projet.
    Les valeurs de ta build configuration que tu vois dans ton Target sont héritées de celles dans ton Projet. Ce qui veut dire que si pour la config Debug au niveau de la build config de ton projet par exemple tu mets une valeur donnée V1 pour une entrée E1 de ton onglet "Build" et une valeur V2 pour une entrée E2, si ensuitetu regardes la build config de ton Target, bah si tu changes rien E1 vaudra V1 et E2 vaudra V2. Si tu modifies la valeur de E1 en V1bis au niveau du Target, alors E1 vaudra V1bis uniquement pour ce target (mais ton autre target lui comme tu n'auras pas modifié E1 pour ce target il vaudra toujours V1, valeur héritée du projet).

    Pour le warning, il veut bien dire ce qu'il veut dire : le fichier "Target2-Info.plist" fait partie de la phase "Copy Bundle Resources" alors qu'il ne devrait pas : en effet tu n'es pas sensé copier le fichier "Target2-Info.plist" dans ton bundle (car le compilateur génère lui-même le vrai Info.plist final à  partir de ce fichier, et en nommant du coup celui qu'il génère "Info.plist" et pas "Target2-Info.plist", avant de l'inclure dans le bundle de l'appli générée). S'il te dit ça c'est donc que tu as sans doute ce fichier "Target2-Info.plist" qui est inclus dans le target alors qu'il ne devrait pas : décoche juste la case à  cocher correspondant à  la colonne "Target Membership" (case à  cocher que tu peux entre autres voir dans le panneau "Groups & Giles" à  gauche de ta fenêtre projet, si tu as activé cette colonne "Target Membership" comme je te l'avais conseillé précédemment)



    Sinon il doit y avoir un Guide dans la doc Apple qui traite de tout ça (genre le UserGuide Xcode ou un truc comme ça) [EDIT] Tiens, bingo, tout est là  : targets, build configurations, build phases, precompiled headers, ... :D
  • groumpfgroumpf Membre
    14:02 modifié #7
    Merci beaucoup, il faut que je lise tout ça attentivement.
    Bon j'ai déjà  résolu le problème du pch qui passait pas, j'avais mis -DXXX au lieu de XXX dans les preprocessor macros, je m'en suis apercu en affichant le texte complet de la ligne d'erreur (chose que je n'avais pas eu besoin encore).
Connectez-vous ou Inscrivez-vous pour répondre.