2014-11-06 9 views
12

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

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


Подробнее:

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

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

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

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

Я пытался удалить все флаги из «других флагов компоновщика», но это дает мне неопределенные символы:

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

ответ

1

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

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

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