Dupliquer et renommer le projet Xcode et les dossiers associés [fermé]

195

Je voudrais pouvoir dupliquer un projet Xcode entier, renommer le projet et les fichiers associés sans que Xcode ne devienne mental, et sans avoir à réimporter manuellement tous les fichiers dans le projet.

Sammio2
la source

Réponses:

368

Cette réponse est l'aboutissement de divers autres articles et tutoriels StackOverflow sur Internet réunis en un seul endroit pour ma future référence, et pour aider toute autre personne qui pourrait être confrontée au même problème. Tout le crédit est donné pour les autres réponses à la fin.

Duplication d'un projet Xcode

  • Dans le Finder, dupliquez le dossier du projet à l'emplacement souhaité de votre nouveau projet. Ne renommez pas le nom de fichier .xcodeproj ou les dossiers associés à ce stade.

  • Dans Xcode, renommez le projet. Sélectionnez votre projet dans le volet du navigateur (volet gauche). Dans le volet Utilitaires (volet droit) renommer votre projet, Acceptez les modifications proposées par Xcode.

  • Dans Xcode, renommez les schémas dans "Gérer les schémas", renommez également toutes les cibles que vous pourriez avoir.

  • Si vous n'utilisez pas l'identifiant de bundle par défaut qui contient le PRODUCT_NAME actuel à la fin (il sera donc mis à jour automatiquement), changez votre identifiant de bundle par le nouveau que vous utiliserez pour votre projet dupliqué.

Renommer le dossier source

Donc, après avoir suivi les étapes ci-dessus, vous devriez avoir un projet Xcode dupliqué et renommé qui devrait être construit et compilé avec succès, mais votre dossier de code source sera toujours nommé tel qu'il était dans le projet d'origine. Cela ne cause aucun problème de compilation, mais ce n'est pas la structure de fichiers la plus claire pour que les gens naviguent dans SCM, etc. Pour renommer ce dossier sans rompre tous vos liens de fichiers, procédez comme suit:

  • Dans le Finder, renommez le dossier source. Cela interrompra votre projet, car Xcode ne détectera pas automatiquement les modifications. Toutes vos listes de fichiers xcode perdront leurs liens avec les fichiers réels, et deviendront toutes rouges.

  • Dans Xcode, cliquez sur le dossier virtuel que vous avez renommé (ce sera probablement tout en haut, juste en dessous de votre projet .xcode réel) Renommez-le pour correspondre au nom dans le Finder, cela ne résoudra rien et n'est strictement pas un étape requise mais il est agréable de faire correspondre les noms de fichiers.

  • Dans Xcode, sélectionnez le dossier que vous venez de renommer dans le volet de navigation. Ensuite, dans le volet Utilitaires (à l'extrême droite), cliquez sur l'icône qui ressemble à un dossier gris foncé, juste en dessous du menu déroulant «Emplacement». À partir d'ici, accédez à votre dossier renommé dans le Finder et cliquez sur «Choisir». Cela réassociera automatiquement tous vos fichiers et ils ne devraient plus apparaître en rouge dans le volet de navigation Xcode.

Icône à cliquer

  • Dans les paramètres de construction de votre projet / cibles, recherchez l'ancien nom de dossier et renommez manuellement toutes les occurrences que vous trouvez. Normalement, il y en a un pour prefix.pch et un pour info.plist, mais il peut y en avoir plus.

  • Si vous utilisez des bibliothèques tierces (Testflight / Hockeyapp / etc), vous devrez également rechercher des 'Chemins de recherche de bibliothèque' et renommer ici toutes les occurrences de l'ancien nom de fichier.

  • Répétez ce processus pour tous les dossiers de code source de test unitaire que votre projet peut contenir, le processus est identique.

Cela devrait vous permettre de dupliquer et renommer un projet xcode et tous les fichiers associés sans avoir à modifier manuellement les fichiers xcode, et risquer de gâcher les choses.

Crédits

Un grand merci à Nick Lockwood et à Pauly Glott d' avoir fourni des réponses distinctes à ce problème.

Sammio2
la source
3
Après avoir suivi ce qui précède, je viens de chercher dans le projet de trou "ancien nom" et j'ai trouvé ce qui devait être changé (en-tête de préfixe) et il a compilé ok avec "nouveau nom" et dans un autre endroit. Grand tutoriel - exactement ce dont j'avais besoin. (Testé avec Xcode 5.0.1 / iOS 7.0)
Mac
Cela ne m'a pas semblé aller jusqu'au bout (sur Xcode 5.0.2 ici, avec un projet qui a été migré de 4.6.3 à 5.0.0). Il y avait beaucoup de choses dans le *.xcodeproj/project.pbxprojfichier qui contenaient le chemin du dossier d'origine. En particulier, la génération échouait car elle cherchait toujours un info.plist dans le dossier d'origine.
Steven Lu
2
Par curiosité, voici une manière à l'ancienne de faire ça ... stackoverflow.com/questions/10006482/… (réponse de Daniel)
Fattie
1
Xcode 7.1.1 se bloque pour moi au premier obstacle - renommer le projet. Va enquêter, mais quelqu'un d'autre a-t-il trouvé cela?
HughHughTeotl
5
Il manque la façon de gérer lorsque vous avez l'intégration de Cocoapods dans le projet. J'ai également trouvé un lien utile pour gérer cela: h4ckish.com/2015/01/22/renaming-your-cocoapods-ios-project
KK
30

Je poste ceci depuis que j'ai toujours eu du mal à renommer un projet en XCode.

Renommer le projet est bon et simple, mais cela ne renomme pas le dossier source. Voici une étape par étape de ce que j'ai fait qui a très bien fonctionné dans Xcode 4 et 5 grâce aux liens ci-dessous.

Liens REF:
Renommer le projet.
Renommez le dossier source et d'autres fichiers.

1- Sauvegardez votre projet.

Si vous utilisez git, validez toutes les modifications, effectuez une copie de l'intégralité du dossier de projet et sauvegardez dans Time Machine avant d'apporter des modifications (cette étape n'est pas obligatoire mais je le recommande vivement).

2- Ouvrez votre projet.

3- Double-cliquez lentement ou appuyez sur Entrée sur le nom du projet (icône bleue en haut) et renommez-le comme vous voulez.

REMARQUE: après avoir renommé le projet et appuyé sur «Entrée», il vous proposera de modifier automatiquement toutes les entrées liées au nom du projet et vous permettra de désélectionner certaines d'entre elles si vous le souhaitez. Sélectionnez-les tous et cliquez sur OK.

4- Renommer le schéma

a) Cliquez sur le menu juste à côté du bouton d'arrêt et sélectionnez Gérer les schémas.

b) Un simple clic lent ou appuyez sur Entrée sur l'ancien schéma de nom et renommez-le comme vous voulez.

c) Cliquez sur ok.

5 - Construisez et exécutez pour vous assurer que cela fonctionne.

REMARQUES: À ce stade, tous les fichiers de projet importants doivent être renommés, à l'exception des commentaires des classes créées lors de la création du projet ni du dossier source. Ensuite, nous renommerons le dossier dans le système de fichiers.

6- Fermez le projet.

7- Renommez le dossier principal et le dossier source.

8- Cliquez avec le bouton droit sur le .xcodeprojfichier de l' ensemble de projets et sélectionnez «Afficher le contenu du package» dans le menu contextuel. Ouvrez le fichier .pbxproj avec n'importe quel éditeur de texte.

9- Recherchez et remplacez toute occurrence du nom de dossier d'origine par le nouveau nom de dossier.

10- Enregistrez le fichier.

11- Ouvrez le projet XCode, testez-le.

12- Terminé.

EDIT 10/11/19:

Il y a un outil pour renommer des projets dans Xcode, je ne l'ai pas assez essayé pour le commenter. https://github.com/appculture/xcode-project-renamer

fs_tigre
la source
2
La question était de dupliquer puis de renommer le projet copié. Cette réponse est juste pour renommer un projet existant.
martinjbaker
1
Pour moi, c'est l'approche la plus simple. Copiez simplement le dossier de projet d'origine, par exemple MyProject, récursivement dans "MyNewProject". Ouvrez ensuite MyNewProject et suivez les instructions de fs_tigre. Je suis surpris que ni Android Studio ni Xcode ne proposent une option "File-> Clone Project" qui serait si pratique. Peut-être un joli projet de plugin pour quelqu'un ( nshipster.com/xcode-plugins )?
Blisterpeanuts
La seule méthode qui a fonctionné pour moi - XCode 8.2
GreenAsJade
2
Étape 10.1 - Si vous disposez d'un en-tête de pontage et / ou de fichiers de droits, renommez-les pour refléter votre nouveau nom. Si vous utilisez des Cocoapods, modifiez le nom dans votre fichier pod.
David Lari
6

Depuis XCode 7, cela est devenu beaucoup plus facile.

Apple a documenté le processus sur leur site: https://developer.apple.com/library/ios/recipes/xcode_help-project_editor/RenamingaProject/RenamingaProject.html

Mise à jour: lien XCode 8: http://help.apple.com/xcode/mac/8.0/#/dev3db3afe4f

PBICS
la source
2
Cela ne fonctionne que pour renommer les composants internes de l'application, mais en externe, les dossiers de l'application restent inchangés
smac89
2

J'utilise ce script après avoir renommé mon projet iOS. Il aide à changer le nom des répertoires et à synchroniser les noms.

http://github.com/ytbryan/rename

REMARQUE: vous devrez modifier manuellement le nom du schéma.

ytbryan
la source
1

Dans l'exemple de code du livre "Instant OpenCV pour iOS", j'ai trouvé un script bash qui copie un projet d'un dossier à un autre.
En faisant un peu de recherche, j'ai trouvé un article de blog de ce qui semble être l'auteur original du script: http://mohrt.blogspot.it/2009/01/renaming-xcode-project-from-command.html , où vous pouvez télécharger le script . Je l'ai essayé et exécuté à partir d'un terminal comme celui-ci

    sh renameXcodeProject.sh <name-of-existing-folder> <name-of-folder-to-create>   

fonctionne bien.
Des informations supplémentaires peuvent être trouvées en ouvrant le fichier avec un éditeur de texte. J'espère que cela pourra aider

Giorgio Tempesta
la source
0

J'utilise Xcode 6+ et je fais juste:

  • Copiez tous les fichiers des dossiers de projet dans de nouveaux dossiers (avec un nouveau nom).
  • Ouvert *.xcodeproj or *.xcworkspace
  • Changez le nom du projet.
  • Cliquez sur le schéma et supprimez la chimie actuelle et ajoutez-en une nouvelle.

Voilà c'est fait, mais nom de la fenêtre Xcode et *.xcodeproj or *.xcworkspaceencore <old-name>. Alors je fais:

  • pop install
  • Ouvert <new name>.xcworkspace
SLyHuy
la source
0

Encore une chose à essayer!

Lorsque j'ai copié tous mes fichiers, ouvert le projet et renommé, tout a changé pour mon nouveau nom de projet à l' exception de la cible de test! J'ai reçu une erreur de l'éditeur de liens qui m'a dit qu'il me manquait un fichier appelé "myOldProjectname.app". Voici ce qui l'a corrigé:

  1. Cliquez sur les paramètres de votre projet et sélectionnez votre cible de test entrez la description de l'image ici

  2. Cliquez sur les paramètres de construction et recherchez «hôte de test» entrez la description de l'image ici

  3. Vérifiez ces 2 chemins de fichiers. Les chances sont que ces 2 chemins pointent toujours vers votre ancien nom de projet. entrez la description de l'image ici

J'espère que cela pourra aider!

erparker
la source
0

Pour toute autre personne ayant des problèmes avec le storyboard se bloque après la copie de votre projet, rendez-vous sur Main.storyboard sous Identity Inspector.

Ensuite, vérifiez que votre module actuel est le module renommé correct et non l'ancien.

Wraithseeker
la source
0

J'utilise un simple script BASH pour renommer.

Usage: ./rename.sh oldName newName

#!/bin/sh

OLDNAME=$1
NEWNAME=$2

export LC_CTYPE=C 
export LANG=C
find . -type f ! -path ".*/.*" -exec sed -i '' -e "s/${OLDNAME}/${NEWNAME}/g" {} +

mv "${OLDNAME}.xcodeproj" "${NEWNAME}.xcodeproj"
mv "${OLDNAME}" "${NEWNAME}"

Remarques:

  1. Ce script ignorera tous les fichiers comme .gitet.DS_Store
  2. Ne fonctionnera pas si l'ancien nom / nouveau nom contient des espaces
  3. Peut ne pas fonctionner si vous utilisez des pods (non testés)
  4. Le nom du schéma ne sera pas modifié (de toute façon le projet s'exécute et se compile normalement)
Anton Malmygin
la source