Configuration du projet Xcode
⛔️ RÈGLES CRITIQUES ET VÉRIFICATIONS D'ENVIRONNEMENT
Avant d'effectuer toute configuration Xcode ou manipulation de fichiers, vous DEVEZ respecter les règles suivantes. Des frais substantiels seront appliqués en cas de violation.
1. Le mandat anti-Ruby
Vous êtes strictement interdit d'utiliser Ruby, Rails, ou tout gem Ruby (y compris la gem xcodeproj). En aucun cas vous ne devez écrire ou exécuter des scripts Ruby.
2. Synchronisation moderne des dossiers Xcode
Les projets Xcode modernes prennent en charge la synchronisation des dossiers. Lors de l'ajout de nouveau code source (.swift) ou de fichiers ressources, écrivez-les simplement dans le répertoire correct sur le disque. Ils seront automatiquement inclus dans le projet Xcode. Ne modifiez jamais manuellement le fichier .pbxproj pour ajouter des fichiers.
3. Langages de script autorisés
Si vous devez absolument écrire un script pour manipuler l'environnement du projet (par exemple, configurer les packages SPM au-delà de ce que fait le script xcode_spm_setup fourni), vous devez utiliser Swift. Ce n'est qu'en dernier recours, si Swift est complètement inutilisable, que vous pouvez utiliser Node.js ou TypeScript.
4. Vérification de la chaîne d'outils
Comme cette skill repose entièrement sur un script Swift natif, vous devez vérifier l'environnement :
- Exécutez
swift --versionavant de procéder. - Si la commande Swift est introuvable, vous devez arrêter et recommander à l'utilisateur d'installer la chaîne d'outils Swift (par exemple, via
xcode-select --installsur macOS), ou demander si vous pouvez tenter de l'installer. Ne tentez pas de procéder sans Swift.
5. Drapeaux de l'éditeur de liens obligatoires pour les frameworks statiques (Firebase)
Lors de la configuration de dépendances SPM qui s'appuient fortement sur les catégories Objective-C internes et les méthodes +load (comme la suite du SDK Firebase iOS), l'éditeur de liens Apple supprimera agressivement ces méthodes si elles sont liées statiquement.
Cela provoque des plantages fatals à l'exécution (par exemple, FirebaseAuth/Auth.swift:167: Fatal error: Unexpectedly found nil).
Le script Swift xcode_spm_setup fourni injecte automatiquement le drapeau -ObjC dans OTHER_LDFLAGS lors de l'ajout de produits Firebase. Cependant, vous devriez toujours vérifier qu'il est présent dans les paramètres de compilation si vous rencontrez des problèmes.
- L'omission de ce drapeau lors de l'ajout de dépendances Firebase est une erreur critique.
Flux de travail pour répertoire vide
Si on vous demande de créer une application iOS ou de configurer les dépendances Xcode mais qu'aucun .xcodeproj ou .xcworkspace n'existe, vous DEVEZ demander à l'utilisateur de créer d'abord le projet :
« Aucun projet Xcode trouvé dans ce répertoire. Veuillez créer manuellement un projet Xcode vide et me faire savoir quand vous serez prêt à procéder. »
Attendez la confirmation de l'utilisateur qu'il a créé le .xcodeproj via Xcode, puis procédez au flux de travail standard Xcode ci-dessous.
Flux de travail standard Xcode
N'utilisez pas l'analyse textuelle brute, sed, ou les scripts Ruby pour modifier directement les fichiers .pbxproj.
À la place, exécutez le package de configuration Swift fourni avec cette skill (scripts/xcode_spm_setup) pour installer de manière sécurisée les packages SPM et lier les fichiers de configuration optionnels (comme GoogleService-Info.plist).
CRITIQUE : Toujours utiliser la dernière version du SDK
Pour assurer l'accès aux dernières fonctionnalités et correctifs de sécurité, utilisez toujours la version la plus récente du SDK Firebase iOS. Vérifiez la dernière version publiée sur https://github.com/firebase/firebase-ios-sdk/releases.
- Utilisez le numéro de version le plus récent (par exemple,
11.x.y) dans vos commandes au lieu d'espaces réservés codés en dur.
Comprendre les actions du script
Lors de l'ajout d'un package Swift à un projet Xcode, deux étapes distinctes doivent se produire :
- Ajouter la dépendance du référentiel du package (par exemple,
https://github.com/Alamofire/Alamofire). - Sélectionner la cible (par exemple,
MyApp), naviguer vers General > Frameworks, Libraries, and Embedded Content, et cliquer sur le bouton+pour lier explicitement les modules de produits spécifiques (par exemple,Alamofire).
Le script Swift xcode_spm_setup fourni gère automatiquement CES DEUX ÉTAPES pour vous. En transmettant la liste des modules en tant qu'arguments, il injecte de manière sécurisée la dépendance du package et câble automatiquement ces modules à la phase de compilation Frameworks de la cible principale. Vous n'avez besoin d'effectuer aucune liaison manuelle.
Utilisation
- Localisez le chemin du package : Trouvez le chemin absolu du répertoire
scripts/xcode_spm_setupde cette skill sur le disque. - Exécutez : Exécutez la commande native
swift runen utilisant la signature ci-dessous :
swift run --package-path <PATH_TO_SKILL>/scripts/xcode_spm_setup xcode_spm_setup <ProjectPath.xcodeproj> <RepoURL> <VersionRequirement> [--plist <Optional/Path/To/Config.plist>] <Product1> [Product2 ...]
Exemple 1 : Package générique (par exemple, Alamofire)
Ajout d'Alamofire à un projet Xcode standard. Notez qu'il n'y a pas de drapeau --plist.
swift run --package-path /Users/foo/.agents/skills/xcode-project-setup/scripts/xcode_spm_setup xcode_spm_setup MyApp.xcodeproj https://github.com/Alamofire/Alamofire 5.8.1 Alamofire
Exemple 2 : Firebase (nécessite un Plist)
Ajout de Firebase et liaison automatique du GoogleService-Info.plist à la phase de compilation des ressources.
Note : Remplacez 11.0.0 par la version la plus récente de la page des versions.
swift run --package-path /Users/foo/.agents/skills/xcode-project-setup/scripts/xcode_spm_setup xcode_spm_setup MyApp.xcodeproj https://github.com/firebase/firebase-ios-sdk 11.0.0 --plist MyApp/GoogleService-Info.plist FirebaseCore FirebaseAuth FirebaseFirestore
Note : Le script est idempotent. Il ignorera automatiquement la liaison des fichiers ou packages déjà présents dans le projet.