Ответ 1
Любые библиотеки, которые вы используете с помощью CocoaPods, будут не компилироваться в вашу инфраструктуру по умолчанию - они предназначены для внешних зависимостей, которые не являются частью вашего реального продукта. Однако, согласно их часто задаваемым вопросам, они поддерживают режим, в котором вы можете загружать модули и не связывать их с вашим проектом. Из их FAQ:
Обратите внимание, что сам CocoaPods не требует использования рабочего пространства. Если вы предпочитаете использовать подпроекты, вы можете сделать это, запустив pod install --no-integrate, что позволит вам интегрироваться в ваш проект, как вам удобно.
Чтобы включить внешние зависимости в скомпилированный двоичный файл:
-
Для кода: вместо использования cocoapods проверьте репозитории, которые вы хотите включить, и скопируйте исходные файлы в свой проект - это обеспечит их компиляцию с остальной частью вашего кода.
-
Для статических библиотек (т.е.
.a
файлов) в фазе сборкиLink Binary With Libraries
необходимо включить все те, которые вы хотите скомпилировать. Вы также должны убедиться, что связанные файлы заголовков включены в фазу сборкиCopy Headers
с соответствующей видимостью.
Примечание При объединении сторонних библиотек таким образом вы рискуете столкнуться с конфликтами с проектами, которые интегрируют вашу инфраструктуру. Например, скажем, вы используете lib под названием SOSomeView
, и вы решили скомпилировать это с помощью своей фреймворка. Теперь, если приложение, в которое вы интегрируетесь, также включает SOSomeView
, вы получите ошибку времени компиляции, которую класс объявит дважды. Чтобы исправить эту проблему, вы должны переименовать любые внешние зависимости, которые вы хотите жестко указать в свою структуру (например, переименуйте класс в XXSOSomeView
).
Я не знаю, как решить эту проблему, если вы компилируете статические библиотеки в своей инфраструктуре.