Папки сборки и ресурсов Xcode - PullRequest
10 голосов
/ 17 сентября 2009

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

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

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

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

Спасибо

Mike

Ответы [ 4 ]

10 голосов
/ 17 сентября 2009

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

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

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

4 голосов
/ 17 сентября 2009

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

3 голосов
/ 28 июля 2011

Меня тоже укусила эта ошибка. Ответы, уже приведенные здесь, очень помогли.

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

ресурсы симулятора iphone не обновляются

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

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: Хорошо, я следовал инструкциям «ответа» из поста Питера Хоси выше, и это тоже работает. Вероятно, лучше, чем мое решение, потому что мой шаг 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 голосов
/ 17 сентября 2009

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

РЕДАКТИРОВАТЬ: после разъяснения, вам, вероятно, просто нужно добавить несколько путей поиска заголовка в ваш проект Откройте информационную панель целей, перейдите в раздел сборки и добавьте корневую папку своих структур в список путей поиска заголовка. Проверь рекурсивно и тебе лучше будет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...