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

Как использовать Cocoapods во встроенной структуре?

Я использую встроенную фреймворк для своих пользовательских представлений в новом проекте, чтобы использовать преимущества нового @IBDesignable материала в Xcode 6, и я хотел бы оживить упомянутые представления в Facebook Pop. Я добавил Pop в проект с использованием Cocoapods, но встроенная инфраструктура не имеет доступа к этим файлам ('POP/pop.h' file not found).

Я попытался скопировать фазы сборки, связанные с Cocoapods, с целевого объекта приложения на целевую платформу, но они не работают как есть. Что делает копирование папки Pop во встроенную фреймворк напрямую, но тогда Xcode сообщает мне, что я должен изменить все угловые скобки <POP/pop.h> на цитаты "POP/pop.h". Я предполагаю, что там лучший способ, и я замалчиваю его.

4b9b3361

Ответ 1

Предполагая, что в вашем подфайле вы используете link_with 'MyCustomFramework', где "MyCustomFramework" - это ваше встроенное имя фреймворка и запустить pod install. Выберите файл проекта (синий в правом верхнем углу) и перейдите в раздел " Настройки сборки". Затем найдите " Разрешить немодульное включение в Framework Modules" и установите для него ДА как для файла проекта (синий), так и для целевой пользовательской рамки (например, MyCustomFramework - значок оранжевого "значка для ланчбокса" ).

Setting build settings for non-modular includes

Затем вы можете включить cocoa содержимое pods в свой основной файл MyCustomFramework.h. Including CocoaPods in CustomFramework

Затем просто импортируйте '@import MyCustomFramework;' в вашем целевом приложении, и вы получите остальную часть CocoaPods в вашем распоряжении. (Пример показывает вам доступ к "каждому" из ObjectiveSugar). Importing CustomFramework into AppDelegate

Независимо от того, нужно ли это делать или нет, это отдельная проблема, но это позволяет вашей пользовательской структуре включать библиотеки CocoaPods сама по себе, а затем позволяет целевой среде приложения просто включать вашу пользовательскую структуру и получать все CocoaPods.

Извините за несколько изображений, но мне нравится быть визуальным.

Ответ 2

Я предполагаю, что вы модифицируете фреймворк для использования Pop. В этом случае вам также нужно будет добавить путь заголовков Pop к строкам заголовка структуры настроек Build Settings.

Но если вы изменяете фреймворк, вы можете просто создать podspec для него и позволить CocoaPods обрабатывать все (и отправить запрос тянуть к создателю?).


Что касается вопроса о щедрости.

Структура никогда не должна встраивать другие библиотеки. Если, например, вы хотите использовать AFNetworking в своей библиотеке:

  • Укажите, что AFNetworking требуется в ваших собственных инструкциях по установке рамок.
  • Если вы распространяете двоичные файлы, вы просто создаете локально для заголовков AFNetworking. При связывании своего приложения пользователям необходимо будет предоставить свои собственные AFNetworking.
  • Если вы распространяете исходный код с вашей каркасной структурой (если пользователи сами его сами создают), попросите на этапах установки указать путь заголовков AFNetworking в своих структурах "Пути поиска заголовков сборки" и предустановить его на общие пути, такие как POD_ROOT и т.д.

Затем он работает, но у вас есть сложные инструкции по установке, пользователям приходится вручную добавлять ресурсы, если таковые имеются, трудно контролировать версию AFNetworking, добавляемую пользователями, и большинство из них никогда не обновит вашу инфраструктуру, потому что это может нарушить их настройку. Все основания для поддержки CocoaPods, создавая podspec (вы можете продолжать поддерживать проект framework/static library, если вы действительно этого хотите).