Les fichiers de ressources ne sont pas mis à jour avec Xcode 5
J'ai quelques fichiers binaires avec une extension propriétaire qui ne sont pas mis à jour dans un build quand je compile. Dans les précédentes versions de Xcode avec ce même projet, il permettrait de détecter le fichier a été modifié, et rarement je dois effectuer un "Propre" que j'ai à faire avec cette version. Bien sûr, c'est de consommer beaucoup plus de temps, j'apprécierais si quelqu'un pourrait me permettre de savoir ce qui a changé avec Xcode 5 et/ou ce que je pouvais faire à ce sujet.
Je n'ai pas de projets spécifiques parce que c'est vraiment juste un binaire propriétaire fichier avec une extension personnalisée dans un dossier de ressources, qui, utilisé pour mettre à jour automatiquement lors de l'-il changé depuis la dernière compilation. Si vous avez besoin de tout projet, les paramètres de je serais heureux de vous l'offrir.
C'est à l'aide de la sorte de "bleu" dossier de ressources qui est une référence dans le dossier, il en, et qui n'est pas simplement copiés dans le répertoire du projet. Je m'excuse car j'ai oublier ce que ce type de dossier est appelé (je suppose de Référence).
Version: Xcode 5 (5A1413)
Mise à JOUR:
Cela se produit uniquement quand je suis en référence à un fichier que j'ai modifier par programmation avec fopen,fwrite,etc, et à l'aide d'un éditeur de fichier dans OSX pour réenregistrer le fichier (sans vraiment le changer) Xcode verrez alors il a changé.
Je suis maintenant à la recherche dans FSEvents pour voir si c'est API sous-jacente est quelque chose dont j'ai besoin, même si je ne suis pas exactement sûr de la façon de définir les indicateurs à cet instant.
Mise à JOUR:
Eh bien, tout comme un test simple, je prends le même fichier et l'enregistrer via:
NSData* data = [[NSData alloc] initWithContentsOfFile: @"/location/file.dat"];
[data writeToFile:@"/location/file.dat" atomically:YES];
Bien sûr, après je l'appelle et ensuite exécuter l'application qui utilise la ressource, il est mis à jour via Xcode lors de la compilation. Il semblerait donc que Xcode 5 s'appuie sur certains des indicateurs pas définie par la norme io fonctions. À ce stade, je peux soit le patch que j'ai eu avec que 2 ligne chose ou à comprendre ce que le mécanisme de repérage est, et comment l'écrire. (FSEvents? Je ne vois pas l'écriture d'un mécanisme de là..)
source d'informationauteur Kyle
Vous devez vous connecter pour publier un commentaire.
J'ai aussi été en cours d'exécution dans les problèmes. Tout allait bien avant de Xcode 5, et mes ressources référencées dossier copie assez fiable. Cependant, après la mise à jour, peu importe ce que j'ai fait à un fichier individuel (le toucher, de le supprimer et de re-copier, etc.), rien déclenché Xcode pour scoop.
Cependant, j'ai maintenant modifier l'heure de la dernière écriture sur le dossier référencé au cours de mon étape de génération, et maintenant c'est le contenu semble être la copie à nouveau correctement. J'Espère que vous aide aussi.
Je suis en utilisant des outils personnalisés, mais je suis sûr que le script de construction peuvent faire de même. Ma conjecture est que Xcode essaie d'optimiser la dépendance de l'étape, et vérifie que le dossier du dernier accès en écriture/de fois avant de plonger en elle.
J'ai eu le même problème. J'ai configuré un Xcode l'accumulation de la phase de script de toucher à la racine du dossier de la ressource, et cela fonctionne maintenant. J'ai trouvé les instructions ici et ils sont comme suit (voir le lien pour plus de détails):
1) Ajouter votre ressource unique répertoire (nommé quelque chose, mais "Ressources") à votre projet dans la section "Ressources" comme un bleu "Dossier de Référence"
2) clic Droit sur votre application cible, sélectionnez Ajouter->Nouvelle Phase de construction->Nouveau Exécuter le Script Phase de construction
3) Dans le résultat de l' ‘Info’ de la fenêtre, changer le shell /bin/tcsh et copier /coller le script ci-dessous dans le ‘Script’ affichage de texte.
Script:
(Aussi, vous pouvez avoir besoin de connaître comment trouver des "Phases de construction" dans Xcode 5)
bien un moyen plus simple serait de simplement toucher le dossier à partir de votre shell ou long terme.
par exemple, sur votre terminal, il suffit d'exécuter
touch -cm PATH_TO_FOLDER_UNDER_RESOURCES
PATH_TO_FOLDER_UNDER_RESOURCES est réelle chemin d'accès au dossier en vertu de dossiers de ressources qui contient les fichiers.
Puisque la modification de vos fichiers ne changent pas nécessairement le timestamp du dossier et Xcode regarde dans le timestamp de la le dossier contenant.
J'ai eu le même problème avec xcode5, j'ai besoin de javascript pour mettre à jour fréquemment. J'ai eu à nettoyer et à construire, il a fallu du temps car mon projet a eu plusieurs fichiers source. Plus tard, j'ai essayé de supprimer l'application, sélectionnez "déplacer dans la corbeille" plutôt que de "supprimer la référence") et de construire, il a été très rapide, mais j'ai dû redémarrer xcode, de sorte que l'application peut apparaître dans le projet de nouveau.