2009-09-17 3 views
10

У меня есть несколько ресурсов в приложении для iPhone, и когда они скомпилированы, все они добавляются в корневую папку ресурсов в приложении, независимо от структуры группировки Xcode. Это прекрасно для большинства вещей, однако есть набор файлов, которые мне нужно структурировать в папке в папке ресурсов приложения.Xcode building and resources folders

На данный момент я добавил свои папки в Xcode, используя «Добавить существующие файлы ... -> Создать ссылки на папки для добавленных папок». Это прекрасно, и значки папок в Xcode являются синими, а не желтыми. Моя проблема заключается в том, что Xcode не замечает и не изменяет файлы в этих папках, и поэтому при создании моего проекта ни одно из новых или измененных изображений в ресурсах целевого приложения. Единственный способ заставить его работать - это сделать чистую, а затем сборку, что очень раздражает, поскольку я делаю изменения и перекомпилирую, может быть, несколько раз в минуту!

Моя структура папок в моих ресурсах, которые я хочу сохранить в приложении, состоит из нескольких вложенных файлов и папки.

Есть ли способ получить Xcode для распознавания всех файлов и папок, которые были изменены или новы?

Спасибо,

Майк

ответ

10

Моя проблема заключается в том, что Xcode не замечать и новые или измененные файлы в этих папках, и поэтому, когда я создаю свой проект, ни одно из новых или измененных изображений в ресурсах целевого приложения не используется.

Это давняя ошибка; его много укусили во время работы над Adium. Пожалуйста, укажите его в RadarWeb. И спасибо за напоминание; Я подал свой собственный отчет об ошибке как x-радар: // проблема/7232149 (visible to the public in OpenRadar). Вы должны указать этот номер ошибки в своем собственном отчете об ошибке.

Как обходной путь, вы можете щелкнуть правой кнопкой мыши ссылку на папку и выбрать «Touch», чтобы сообщить Xcode, что папка изменилась.

+0

Спасибо за эту информацию. Не могу поверить, что они не обращались к нему! Я даже обнаружил, что прикосновение к папкам, похоже, не работает, возможно, потому, что в нем есть какое-то гнездование. –

+1

Michael Waterfall: Да; вам нужно прикоснуться к конкретной папке, добавленной в ваш проект. Прикосновение к чему-либо в нем, включая любую подпапку, не будет работать (или, по крайней мере, это не последний раз, когда я пробовал это, что было какое-то время назад). –

+0

Я хотел бы добавить еще одно обходное решение. Я попытался выбрать прикосновение, как сказал Питер Хоузи, но не помог. То, что я сделал, это скопировать папку из папки проекта, удалить и переместить, чтобы уничтожить старую папку, перезапустить xcode и добавить папку, копирующую файлы с опцией папок, как обычно. – Pacu

-1

если вы хотите сохранить структуру каталогов, то лучше всего сделать это в каталоге документов. На начальном запуске приложений скопируйте файлы из пакета в каталог документов в иерархии, которую вы предпочитаете.

EDIT: после уточнения кажется, что вам, вероятно, просто нужно добавить некоторые пути поиска заголовков к вашему проекту. Откройте панель сведений о целях, перейдите в раздел сборки и добавьте корневую папку структур в список путей поиска заголовков. Проверьте рекурсивной, и вы должны быть лучше

+0

Проблема заключается в подпапке не существует в связке без использования ссылок папки и построения проекта, что путь. И это здание, с которым я столкнулся. Обработка папок в комплекте - это нормально. Мне просто нужен Xcode для распознавания любых новых файлов и папок в файлах моего проекта на каждой сборке, поэтому он компилирует их в цель без необходимости делать чистую и перестраивать каждый раз. –

+0

Я думаю, вы должны играть с путями поиска заголовков – coneybeare

+1

Пути поиска заголовков для #include, а не ресурсов. –

4

я имел свою первую проблему себе сегодня, и я нашел эту статью, в которой говорит о второй проблеме также: http://majicjungle.com/blog/?p=123

+0

Спасибо за отличную ссылку. Я попытался использовать скрипт, но он, похоже, не касается файлов в подпапках. Любая идея, как заставить его касаться файлов рекурсивно в подпапках? –

3

Я просто укусил эту ошибку. Ответы, приведенные здесь, были большой помощью.

Я нашел ответ в этом другом потоке тоже полезны, но я не уверен, если это на самом деле является безопасным, что нужно сделать (это, кажется, чтобы создать новый AppId или что-то):

iphone simulator resources not updating

Это мои личные заметки, которые я сделал для обхода этого.

1) Open the project in Xcode 
2) Right-click the folder reference (BLUE folder) in the navigator 
    at its root and pick "Remove Reference" 
3) Close Xcode all the way 
4a) Warning, this step might cause other problems in your project. 
4b) Open the folder browser/Finder 
4c) Navigate to: /users/USERNAME/Library/Application Support/ 
      /iPhone Simulator/version/Applications/THISPROJFOLDER 
4d) Delete this whole THISPROJFOLDER. The name of the folder may be all 
    numbers, but this clears the Xcode "Cache" so it will rebuild things 
5) Find the actual folder where you store your pictures that were referenced, 
    and move the folder elsewhere and rename it. 
6) Now open Xcode 
7) In Xcode, select Product -> Clean. It should clean successfully. 
8) Now run the program through Xcode. It should run, but (hopefully) crash or 
    otherwise fail because it doesn't detect the resource files you removed. 
9) Now go standard Xcode usage and add the files back to the folder you want, 
    and add a reference to that folder in the Xcode navigator. Run the program 
    again, and it should detect the UPDATED PDFfiles/Imagefiles. 

EDIT: Хорошо, я последовал за «ответ» инструкции от должности Питера Hosey по выше, и это тоже работает. Вероятно, лучше, чем мое решение здесь, потому что мой шаг 4 (обязательно), похоже, регенерирует ключ приложения или что-то в этом роде.

Так вот, как я установил его в Xcode 4.0 Следующий пост Петра:

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 
+0

Любой, кто может помочь при использовании этого, я получаю сообщение об ошибке ..../bin/sh /: bad interpreter: не каталог – LmC