Xcode: qu'est-ce qu'un objectif et un schéma en langage clair?

Réponses:

309

J'ai également ajouté dans Workspace et Project!

  • Espace de travail - Contient un ou plusieurs projets . Ces projets sont généralement liés les uns aux autres
  • Projet - Contient du code et des ressources, etc. (vous y serez habitué!)
  • Cible - Chaque projet a une ou plusieurs cibles.
    • Chaque cible définit une liste de paramètres de construction pour ce projet
    • Chaque cible définit également une liste de classes, de ressources, de scripts personnalisés, etc. à inclure / utiliser lors de la construction.
    • Les cibles sont généralement utilisées pour différentes distributions d'un même projet.
      • Par exemple, mon projet a deux cibles, une build "normale" et une build "office" qui a des fonctionnalités de test supplémentaires et peut contenir plusieurs pistes de musique de fond et un bouton pour changer la piste (comme c'est le cas actuellement).
      • Vous serez habitué à ajouter des classes et des ressources à votre cible par défaut au fur et à mesure que vous les ajoutez.
      • Vous pouvez choisir quelles classes / ressources sont ajoutées à quelle cible.
        • Dans mon exemple, j'ai une classe "DebugHandler" qui est ajoutée à ma version de bureau
      • Si vous ajoutez des tests, cela ajoute également une nouvelle cible.
  • Schéma - Un schéma définit ce qui se passe lorsque vous appuyez sur "Build", "Test", "Profile", etc.
    • Habituellement, chaque cible a au moins un schéma
    • Vous pouvez créer automatiquement des schémas pour vos cibles en allant dans Schéma> Gérer les schémas et en appuyant sur «Créer automatiquement des schémas maintenant»
James Webster
la source
Essayons si j'ai bien compris ... Je programme une application et fais deux cibles. Une que je téléchargerai sur l'App Store et une dans laquelle je développerai déjà la prochaine version de la même application. Et dans les schémas, je fais par exemple un schéma dans les deux cibles à exécuter et un schéma pour le débogage? Mais pourquoi ai-je besoin de schémas différents pour cela? Je ne comprenais pas l'avantage de celui de BJ Homer ..
MichiZH
FWIW, je n'utilise pas de schémas différents pour la publication et le débogage, sauf si j'ajoute des fonctionnalités de débogage supplémentaires comme je le décris dans ma réponse.
James Webster
2
Superbe explication frère! ! !
Sagar Kalathil
6
que voulez-vous dire que votre build de bureau a un bouton de musique en bas. Votre application actuelle a-t-elle du code supplémentaire qui n'est activé que dans la version Office ou la musique est-elle exécutée sur votre Mac? Désolé, je suis confus
3366784
Ce type de définit les éléments qui composent chaque concept, mais pas le but de chaque élément. Pour moi, c'est ce que le PO demandait.
O'Rooney
67

Une cible est un produit final créé en exécutant "build" dans Xcode. Il peut s'agir d'une application, d'un framework, d'une bibliothèque statique ou d'un bundle de tests unitaires. Quoi qu'il en soit, il correspond généralement à un seul élément du dossier "produits construits".

Un schéma représente un ensemble de cibles avec lesquelles vous travaillez ensemble. Il définit les cibles à utiliser lorsque vous choisissez diverses actions dans Xcode (Exécuter, Tester, Profil, etc.) Souvent, vous n'aurez qu'un seul schéma, qui utilise la cible principale de l'application pour les actions Exécuter, Archiver et Profil, et un cible de test unitaire pour l'action Test. Si vous construisiez deux applications liées, vous pourriez avoir deux schémas qui utilisaient le même ensemble de tests unitaires mais des cibles d'application différentes.

Le principal avantage des schémas (introduits dans Xcode 4) est qu'ils vous permettent de basculer entre l'exécution de votre application et vos tests unitaires sans avoir à basculer la cible sélectionnée.

BJ Homer
la source
61

Je suis une personne visuelle, donc pour expliquer le concept, je vais utiliser un diagramme.

Lorsque vous avez plusieurs cibles, elles peuvent être mises en correspondance un à un avec les actions Exécuter, Tester, Profil de Xcode, ce concept définit un schéma

entrez la description de l'image ici

Une cible est une version de votre projet , c'est-à-dire que les cibles diffèrent légèrement dans les classes et les ressources à utiliser pendant la construction. Un projet peut avoir plusieurs paramètres de temps de construction pour des exigences de distribution distinctes.

Abhinav Singh
la source
7
Ce diagramme semble faux. Un schéma doit être lié à une cible particulière, je ne vois pas où dans un schéma vous pouvez avoir plusieurs cibles.
Boon
6
@Boon Non, carelesslyChoosy est correct. Dans l'éditeur de schéma, cliquez sur l'élément «build» à gauche. Dans la zone de droite, cliquez sur «+» et vous pouvez ajouter d'autres cibles à ce schéma. Cochez les cases souhaitées. Les exécutables de ces cibles sont ensuite disponibles dans les autres actions (Exécuter, Profil, etc.) dans la liste déroulante des exécutables.
occulus
C'est bien mais il manque la partie de configuration de construction des schémas. Je pense au schéma comme une collection de la façon dont les actions (Run, Test, Profile) correspondent à une combinaison de cibles et de configurations de construction (débogage, version, qa, prod, etc.).
Steve Moser
3

Workspace( .xcworkspace) - est un conteneur de multiples projects. Il a été créé comme une prochaine étape de cross-project references[À propos]

  • Workspacecontient tout schemesde inclusprojects
  • Workspacegère tout implicit dependencies[À propos]

Observations:

  • Il est sûr de travailler avec différents projets à l'intérieur d'un même workspaceet de ne pas intercepterCouldn't load Project.xcodeproj because it is already opened from another project or workspace
  • Cocoapods[À propos] travailler avecworkspaceoù crée le Podsprojet

Project( .xcodeproj) - C'est un conteneur pour targetset scheme. Il définit les fichiers de code, les ressources ...

Target- PBXNativeTargetsection. Définit un ensemble spécifique de paramètres de génération qui génèrent:

  • Application target
  • Library and framework targets
  • Test
  • Aggregate[À propos] . Par exemple, il est utilisé pour créer unUniversal frameworkouUmbrella framework

Scheme- une Project'sconfiguration pour l'action dans Xcode: exécuter , tester , profiler , analyser et archiver . Schemapeut être partagé ce qui vous aide dans CI, Carthage... et localisé:

<project_path>/<project_name>.xcodeproj/xcshareddata/xcschemes

Dependency- Targetspeut avoir dependencies. La dépendance est un lien source contre. Ces dépendances peuvent être liées statiquement ou dynamiquement [À propos] Il en existe deux types:

  • Explicit Dependency[À propos] - Code source de la dépendance qui se trouve dans le même projet ou projet imbriqué
  • Implicit Dependency[À propos] - Code source / fermé de la dépendance qui se trouve dans le projet qui fait partie du même espace de travail.

[Vocabulaire]

yoAlex5
la source