2014-11-06 12 views
12

Próbuję zbudować framework iOS (Test.framework) przy użyciu nowego szablonu oferowanego przez Xcode 6 do tworzenia szkieletów dotykowych Cocoa Touch. Ramy mają różne zależności (jak AFNetworking lub FacebookSDK) określone w Podfile. Nie chcę, aby zależności były włączone w ramy, po prostu chcę połączyć się z nimi.Jak zbudować framework iOS ze słabo połączonymi bibliotekami CocoaPods

Problem polega na tym, że kiedy buduję framework, biblioteka libPods.a jest połączona i dołączona. P: Jak mogę połączyć z biblioteką libPods.a, ale nie uwzględniam jej w strukturze?


Więcej szczegółów:

czytałem o słabej linkami: https://developer.apple.com/library/ios/documentation/MacOSX/Conceptual/BPFrameworks/Concepts/WeakLinking.html Ale nie mam dużego doświadczenia z gry ustawieniach projektu, więc jestem nie pro.

Próbowałem umieścić bibliotekę libPods.a jako "Opcjonalnie", ale nic się nie zmieniło, nadal były uwzględniane zależności.

Próbowałem zdjąć libPods.a z sekcji „Link binarne z bibliotekami” w fazach budowy, ale pojawia się ten błąd (po raz kolejny czyszczenia folder projektu i budowy):

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

Próbowałam usunąć wszystkie flagi z „innej flagi łącznik”, ale daje mi niezdefiniowane symbole:

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

Oto kod źródłowy czystym projektem z biblioteki obejmowały: https://www.dropbox.com/sh/0ymuzw6kiagz02j/AABzyHiZVaQQvBEnjBgRBq3ua?dl=0

Odpowiedz

1

Nie mogę jeszcze komentować, więc odpowiem tutaj. Myślę, że nie możesz tego zrobić. Cocoapods tworzą bibliotekę statyczną, a nie dynamiczną, więc cały kod powinien być dostępny podczas kompilacji i osadzony w strukturze.

Cocoapods documentation, przejdź do "Co dzieje się za kulisami?" dla szczegółowego wyjaśnienia:

Jeśli chcesz przygotować podstawową konfigurację niektórych z twoich zwykłych kapsuł, najprawdopodobniej najlepszym sposobem na zrobienie jest zrobienie niestandardowego cocoapodu, a inne jako zależności. W ten sposób możesz polegać na cocoapods w celu zarządzania wersjami i aktualizowania kodu zgodnie z własnymi preferencjami. Sam stosuję podobne podejście i jestem bardzo zadowolony z wyników.

Powiązane problemy