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 Frameworkskatalogu udokumentowanego przez Apple. Jedynym sposobem, w jaki udało nam się sprawić, by działały, jest przeciągnięcie w .framekworkprawo do katalogu projektu i połączenie Embedded Frameworksi Link Binary with Librariesrę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_64wraz z armarchitekturami.
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 Frameworkskatalogu. 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 i386i x86_64architektur 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 -removenależy to zrobić raz dla każdej architektury do usunięcia. liponie modyfikuje pliku wejściowego, tworzy tylko plik, więc musisz lipo -removeraz uruchomić dla x86_64i 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ż .frameworkzostaną 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 .frameworkpliku, ponieważ chcesz mieć możliwość testowania zarówno na Symulatorze, jak i na urządzeniu fizycznym. Jeśli Twoja gruba biblioteka znajduje się w Frameworksfolderze w projekcie, spójrz na zaakceptowaną odpowiedź.