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

StackOverflow https://stackoverflow.com/questions/707429

  •  22-08-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

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

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

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

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

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

Пакетыhttps://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

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

Другие советы

Ответ на комментарий (не помещается в поле для комментариев)

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

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

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

  1. «включить» -> поместить сюда файлы .h
  2. «res» -> поместите сюда файлы .xib
  3. «lib» -> содержит подпапки «iphoneos» и «iphonesimulator», каждая из которых содержит libFoo.a

Затем заархивируйте это и отправьте клиенту.Тогда клиент:

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

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

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

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

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

При распространении вы также можете создать 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 и другие ресурсы.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top