Utworzyłem projekt iOS Framework za pomocą tej metody: https://github.com/jverkoey/iOS-Frameworkzależności obsługi dla iOS projektu ramowego
działa całkiem zgrabny, ale jestem trochę mylić o tym, jak to bibliotek/ram, które są potrzebne do pracy mojego ram a w szczególności, jak to zrobić, aby aplikacja klienta innej firmy, która używa mojej platformy, mogła również zawierać te biblioteki bez konfliktów.
Powiedzmy mój kod framework potrzebuje tych dwóch rzeczy:
- FacebookSDK.framework
- libFlurry.a
Pierwszy z nich jest ramowa iOS. Kiedy dodaję go do fazy "Link Binary With Libraries" w moim Framework i spróbuj skompilować projekt klienta który używa mojej struktury linker narzeka na brakujące symbole - muszę dodać FacebookSDK do projektu klienta, który jest świetny: nie ma możliwość konfliktów, jeśli aplikacje klienckie chcą korzystać z Facebooka.
Jednak gdy robię to samo z biblioteką statyczną Flurry, podczas kompilowania projektu klienta otrzymuję błąd duplikatów symboli. Co mnie trochę zdezorientowało, bo to nie jest FacebookSDK.framework tylko spakowana biblioteka statyczna?
ukaszs-iMac:FacebookSDK.framework lukasz$ file Versions/A/FacebookSDK
Versions/A/FacebookSDK: Mach-O universal binary with 3 architectures
Versions/A/FacebookSDK (for architecture i386): current ar archive random library
Versions/A/FacebookSDK (for architecture armv7): current ar archive random library
Versions/A/FacebookSDK (for architecture cputype (12) cpusubtype (11)): current ar archive random library
Więc moje pytania to:
- dlaczego biblioteka osadzone w ramach (takich jak Facebook) nie jest związana z moim ramowego projektu produktu, natomiast biblioteka włączone jako .a plik jest?
- jak dołączyć plik .a do mojego frameworka tak, aby nie powodował błędów w powtarzaniu symboli, gdy aplikacja kliencka korzystająca z mojego framework również potrzebuje tej konkretnej biblioteki statycznej?
Czy wiesz, jak to zrobić? – anoop4real