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

Как создать инфраструктуру iOS со слабосвязанными библиотеками CocoaPods

Я пытаюсь создать iOS Framework (Test.framework) с использованием нового шаблона, предлагаемого Xcode 6 для создания Cocoa Touch Frameworks. Структура имеет разные зависимости (как AFNetworking или FacebookSDK), указанные в подфайле. Я не хочу, чтобы зависимости включались в структуру, я просто хочу связать их.

Проблема в том, что когда я создаю фреймворк, libPods.a связан и включен. В: Как я могу связать библиотеку libPods.a, но не включать ее в рамки?


Подробнее:

Я читал о слабой связи: https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html Но у меня нет большого опыта работы с настройками проекта, поэтому я не профессионал.

Я попытался установить libPods.a как "Необязательный", но ничего не изменился, зависимости все еще были включены.

Я попытался удалить libPods.a из раздела "Связывание двоичных файлов с библиотеками" на этапах сборки, но я получаю эту ошибку (после очистки папки проекта и создания снова):

ld: library not found for -lPods-MyFramework-AFNetworking

Я попытался удалить все флаги из "Other Linker Flags", но он дает мне undefined символы:

Undefined symbols for architecture armv7:
  "_OBJC_CLASS_$_FBSession", referenced from:
      objc-class-ref in TestClass.o
ld: symbol(s) not found for architecture armv7

Вот исходный код для чистого проекта с включенными библиотеками: https://www.dropbox.com/sh/0ymuzw6kiagz02j/AABzyHiZVaQQvBEnjBgRBq3ua?dl=0

4b9b3361

Ответ 1

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

Документация Cocoapods, перейдите к разделу "Что происходит за кулисами?" для подробного объяснения

Если вы хотите собрать некоторую базовую конфигурацию для некоторых из ваших обычных контейнеров, вероятно, лучший способ сделать это - создать собственный cocoapod с другими в качестве зависимостей. Таким образом, вы можете полагаться на cocoapods для управления версиями и обновлять код в соответствии с вашими предпочтениями. Я сам использую подобный подход, и я очень доволен результатами.