Dodam tutaj moje 2 centy (w mniej przerażający sposób :-). Zetknąłem się z wieloma grubymi bibliotekami od dostawców, które (z jakiegoś powodu) nie działają normalnie, dodając je do Frameworks
katalogu udokumentowanego przez Apple. Jedynym sposobem, w jaki udało nam się sprawić, by działały, jest przeciągnięcie w .framekwork
prawo do katalogu projektu i połączenie Embedded Frameworks
i Link Binary with Libraries
ręcznie w Ustawieniach kompilacji. Wydaje się, że działało to bez żadnych problemów, ponieważ w każdej grubej bibliotece są one dostarczane z zewnętrznymi architekturami symulatorów i386
i x86_64
wraz z arm
architekturami.
Szybkim sposobem na sprawdzenie architektury biblioteki tłuszczu jest
$ cd 'Project_dir/Project'
$ lipo -info 'YourLibrary.framework/YourLibExec`
Co powinno wypluć dane wyjściowe coś takiego
Architectures in the fat file: YourLibrary.framework/YourLibExec are: i386 x86_64 armv7 arm64
Potwierdza to, że będziesz musiał „przyciąć gruby” (a mianowicie i386
& x86_64
) ze swojego środowiska przed przesłaniem archiwum iTunesConnect, co nie pozwala na te architektury (ponieważ nie są obsługiwane dla iOS).
Teraz wszystkie odpowiedzi (lub przynajmniej niektóre z tych odpowiedzi) dostarczają tych wspaniałych skryptów Run, które na pewno działają naprawdę dobrze, ale tylko wtedy, gdy Twój Framework znajduje się w Frameworks
katalogu. Teraz, chyba że jesteś ćpunem w skryptach powłoki, te skrypty bez modyfikacji nie będą działać w scenariuszu, który wyjaśnię powyżej. Istnieje jednak bardzo prosty sposób na pozbycie się architektury i386
i x86_64
architektur z frameworka.
Otwórz terminal w katalogu swojego projektu.
Zmień katalog bezpośrednio w .framekwork
, jak
cd YourProjectDir/YourProject/YourLibrary.framework
Uruchom serię poleceń, jak pokazano poniżej-
$ mv YourLibrary YourLibrary_all_archs
$ lipo -remove x86_64 YourLibrary_all_archs -o YourLibrary_some_archs
$ lipo -remove i386 YourLibrary_some_archs -o YourLibrary
$ rm YourLibrary_all_archs YourLibrary_some_archs
Należy zwrócić uwagę na kilka rzeczy - lipo -remove
należy to zrobić raz dla każdej architektury do usunięcia. lipo
nie modyfikuje pliku wejściowego, tworzy tylko plik, więc musisz lipo -remove
raz uruchomić dla x86_64
i i386
. Powyższe polecenia po prostu robią to, najpierw zmieniając nazwę pliku wykonywalnego, a następnie usuwając pożądane archiwa, a następnie usuwając pozostałe pliki. I to jest to, powinieneś teraz zobaczyć zielony znacznik wyboru w przesyłaniu archiwum modułu ładującego aplikacje do iTunesConnect.
Należy pamiętać : powyższe kroki należy wykonać tylko podczas kompilacji produkcyjnej, ponieważ .framework
zostaną one usunięte z architektur symulatora, kompilacje na symulatorach przestaną działać (co jest oczekiwane). W środowisku programistycznym nie powinno być potrzeby usuwania architektur z .framework
pliku, ponieważ chcesz mieć możliwość testowania zarówno na Symulatorze, jak i na urządzeniu fizycznym. Jeśli Twoja gruba biblioteka znajduje się w Frameworks
folderze w projekcie, spójrz na zaakceptowaną odpowiedź.