Подтвердить что ты не робот

Можете ли вы ссылаться на Xib файлы из статических библиотек на iPhone?

В моем приложении у меня в настоящее время весь мой код разделен на статическую библиотеку, чтобы упростить настройку целей проекта xcode для реального приложения и для модульных тестов для моего кода. Проблема заключается в том, что я хочу поместить большинство моих xib файлов в статическую библиотеку, но кажется, что когда я запускаю свое приложение и пытаюсь ссылаться на xib, он не может его найти, если он не включен в фактическую вместо целевой статической библиотеки. Возможно ли иметь xib файлы и другие ресурсы, включенные в статические библиотеки, на которые может ссылаться код в той же библиотеке, и если да, то как?

4b9b3361

Ответ 1

Нет, это невозможно, потому что статическая библиотека не совпадает с "пакетом".

Пакет - это каталог, который может содержать все файлы, включая файлы ресурсов (xib), исполняемые файлы и статические библиотеки. Он существует в файловой системе как группа отдельных файлов.

Статическая библиотека - это один файл, содержащий классы, код и переменные, которые были связаны создателем библиотеки. Он не "содержит" другие файлы, это, по сути, база данных скомпилированного кода.

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

В Mac OS вы можете создать "Framework", который по сути представляет собой набор кода, ресурсов, настроек и т.д., которые могут быть повторно использованы несколькими проектами. Однако Apple, похоже, не поддерживает создание пользовательских фреймворков для iPhone OS.

Связки http://developer.apple.com/iphone/library/documentation/CoreFoundation/Conceptual/CFBundles/CFBundles.html

Статические библиотеки http://en.wikipedia.org/wiki/Static_library

Ответ 2

Ответить на комментарий (не подходит в поле комментариев)

Не стоит беспокоиться, я пытался сделать почти то же самое, что и вы на прошлой неделе - я бы хотел отправить "фреймворк" xibs, включить файлы и .a libs клиенту, не давая им весь исходный код. Я не мог найти хороший способ сделать это с помощью пакетов.

По какой-то причине Apple особенно тупо относится к этому - я не вижу причин для их возникновения в случае статических библиотек (достаточно динамических библиотек).

Мое решение на данный момент состоит в том, чтобы вручную создать папку пакета "Foo", которая содержит следующие подпапки:

  • "include" → помещать файлы .h здесь
  • "res" → поместите файлы .xib здесь
  • "lib" → содержит подпапки iphoneos и iphonesimulator с libFoo.a

Затем закрепите это и отправьте клиенту. Затем клиент:

  • Разархивирует пакет, когда захочет.
  • Добавляет папку res в группе ресурсов.
  • Изменяет следующие целевые настройки:
    Другие флаги компоновщика = -Objc -lfoo
    Пути поиска заголовков =/include
    Пути поиска библиотек =/lib/$(PLATFORM_NAME)

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

Ответ 3

Я нашел идеальное решение для этого, которое делает все вышеперечисленное автоматически и более https://github.com/kstenerud/iOS-Universal-Framework Его плагин xCode

Это работало для меня как шарм, Он работает только для XCode 4 и выше

Ответ 4

Да, вы можете. добавьте xib файл в свою библиотеку, как и для любого обычного проекта. Затем в целевой проект библиотеки добавьте xib файл в папку "Файлы" вместе с .a файлом. В своем основном проекте, в котором вы используете библиотеку, перетащите файл xib, где находится файл .a для библиотеки.

Ответ 5

При распространении вы также можете создать SDK. JSON.framework сделал это в своем SVN, и я успешно воспроизвел это. Вы можете увидеть, как это было сделано в http://hltypes.svn.sf.net/ в hltypes-ios.xcodeproj и папке iOS в проекте.

В первую очередь вам нужно "установить" в свою папку сборки, а затем вам нужно скопировать специально отформатированный SDKSettings.plist. Затем добавьте путь к SDK в список "Дополнительные SDK" в проекте приложения. Недостатком составных SDK является необходимость перезапуска Xcode 3.x при обновлении этого мини-SDK и настойчивость Xcode в построении составного SDK, созданного из базового SDK от Apple и вашего мини-SDK (что означает, что вам нужно подождать совсем немного).

В проекте приложения все еще должны быть добавлены .xib и другие ресурсы.