10
votes

Dossiers de construction et de ressources Xcode

J'ai plusieurs ressources dans mon application iPhone et quand elles sont compilées, elles sont toutes ajoutées à la racine du dossier Ressources de l'application, quelle que soit la structure de regroupement Xcode. C'est bien pour la plupart des choses, mais il existe un ensemble de fichiers que je dois avoir structuré dans le dossier dans le dossier Ressources de l'application.

Pour le moment, j'ai ajouté mes dossiers à Xcode en utilisant "Ajouter des fichiers existants ... -> Créer des références de dossiers pour des dossiers ajoutés". C'est bien et les icônes de dossier en Xcode sont bleues au lieu de jaune. Mon problème est que Xcode ne consiste pas à noter et à modifier des fichiers dans ces dossiers et donc lorsque je construis mon projet, aucune des images nouvelles ou modifiées ne figure dans les ressources de l'application cible. La seule façon dont je peux le faire fonctionner est de faire une propreté, puis de construire, ce qui est assez gênant que je fais des changements et que je compilise peut-être quelques fois une fois par minute parfois!

Ma structure de dossiers dans mes ressources que je veux conserver sur l'application consiste en plusieurs fichiers et dossiers imbriqués.

Y a-t-il un moyen d'obtenir XCode de reconnaître tous les fichiers et dossiers qui ont changé ou sont nouveaux?

merci,

Mike


0 commentaires

4 Réponses :


-1
votes

Si vous souhaitez conserver une structure de répertoire, il est préférable de le faire dans le répertoire des documents. Lors de votre lancement initial de votre application, copiez-vous sur les fichiers du forfait dans le répertoire de documents de la hiérarchie que vous préférez.

Edit: Après clarification, il semble que vous ayez probablement besoin d'ajouter des chemins de recherche d'en-tête à votre projet. Ouvrez le volet Info cibles, allez dans la section Construction et ajoutez votre dossier racine de structures à la liste des chemins de recherche de l'en-tête. Vérifiez récursif et vous devriez être mieux


3 commentaires

Le problème est que le dossier n'existe pas dans le forfait sans utiliser de références de dossiers et de construire le projet de cette façon. Et c'est le bâtiment que j'ai le problème avec. Manipulation des dossiers dans le paquet convient. J'ai juste besoin de Xcode pour reconnaître les nouveaux fichiers et dossiers dans les fichiers de mon projet sur chaque construction, de sorte qu'il les compile dans la cible sans avoir à faire de la propreté et de reconstruire à chaque fois.


Je pense que vous devriez jouer avec les chemins de recherche d'en-tête


Les chemins de recherche d'en-tête sont pour #include, pas de ressources.



4
votes

J'ai eu votre premier problème moi-même aujourd'hui et j'ai trouvé cet excellent article, qui parle également du deuxième problème également: http://majicjungle.com/blog/?p=123


1 commentaires

Merci pour le grand lien. J'ai essayé d'utiliser le script mais il ne semble pas toucher aucun fichier dans des sous-dossiers. Avez-vous une idée de la façon de l'obtenir pour toucher des fichiers récursives dans les sous-dossiers?



10
votes

Mon problème est que Xcode ne se remarque pas et que les fichiers nouveaux ou modifiés dans ces dossiers et, par conséquent, lorsque je construis mon projet, aucune des images nouvelles ou modifiées ne sont dans les ressources de l'application cible.

Ceci est un bug de longue date; Il m'a mordu plusieurs fois tout en travaillant sur Adium. S'il vous plaît le déposer dans radarweb . Et merci pour le rappel; J'ai déposé mon propre rapport de bogue comme x-radar: // problème / 7232149 ( visible au public à OpenRadar ). Vous devriez mentionner ce numéro de bogue dans votre propre rapport de bogue.

comme solution de contournement, vous pouvez cliquer avec le bouton droit de la souris sur la référence du dossier et choisir "Touch" pour indiquer à XCode que le dossier a changé.


4 commentaires

Merci pour cette information. Je ne peux pas croire qu'ils ne l'ont pas traitée! Je trouve même que toucher les dossiers ne semble pas fonctionner, peut-être parce qu'il y a quelques nidifications impliquées.


Waterfall Michael: Oui; Vous devez toucher le dossier spécifique que vous avez ajouté à votre projet. Toucher quoi que ce soit, y compris tout sous-dossier, ne fonctionnera pas (ou du moins cela n'a pas fait la dernière fois que je l'ai essayé, ce qui était il y a quelque temps).


Je voudrais ajouter une autre solution de contournement. J'ai essayé de choisir la touche que Peter Hosey a dit, mais n'aide pas. Ce que j'ai fait était de copier le dossier du dossier du projet, supprimez et déplacez-vous à la corbeille l'ancien dossier, redémarrez Xcode et ajoutez le dossier Copie des fichiers avec l'option Dossiers comme d'habitude.


À partir de maintenant (xcode v4.6.3), je ne trouve pas l'option "toucher" dans le menu contextuel. Mais lorsque je fais une touche manuelle dans le terminal, cela fonctionne.



3
votes

Je viens de me faire piquer par ce bug. Les réponses déjà données ici étaient une bonne aide.

J'ai trouvé la réponse dans cet autre fil utile aussi, mais je ne sais pas si c'est en fait une chose sûre à faire (il semble générer une nouvelle Appid ou quelque chose) : p>

iPhone Simulator Ressources ne mettant pas à jour P> Ce sont mes notes personnelles que j'ai faits pour contourner la solution. p> xxx pré>

édition: D'accord, j'ai suivi les instructions "Réponse" du poste de Peter Hosey ci-dessus et cela fonctionne aussi. Probablement mieux que ma solution ici, parce que mon étape 4 (requise) semble régénérer une clé d'application ou quelque chose. P>

Voici comment je l'ai réparé dans Xcode 4.0 suivant Post de Peter: P>

 1) Open your project in Xcode
 2) Select the main project root item in the Navigator
 3) Select "Build Phases" in the main pane
 4) Select "Add Build Phase" button -> "Add Run Script"
 5) Reposition he "Run Script" entry bar in the screen,
    and move it to just-before the Copy Bundle Resources area
 6) Edit the run-script you just added in the main pane:
    : Set Shell to: /bin/sh (its the default, or try /bin/tsch)
    : Set the script line to: touch -cm ${SRCROOT}/MyDocs
    (Set it to your folder root area, matching the Blue Folder
     area in your Navigator)
 7) Save it all and select "Product -> Clean" to clean project


1 commentaires

Toute personne capable d'aider lors de l'utilisation de cela, je reçois une erreur disant .... / bin / sh /: mauvais interpréteur: pas un répertoire