Widziałem wiele referencji Link, aby znaleźć połączenie między strukturą BITCODE_ENABLE
i .dylib
, ale nie mogę uzyskać pozytywnego wyniku. Proszę mi pomóc, jaki jest dokładny związek między nimi, a także wyraźnie wspomnieć o użyciu BITCODE_ENABLE
.Jakie jest dokładne połączenie między BITCODE_ENABLE a ramą dylib?
Odpowiedz
Myślę, że wprowadzasz zamieszanie w to, czym właściwie jest Bitcode. Bitcode może być używany zarówno w statycznych strukturach, jak i bibliotekach dynamicznych.
Z Apple docs:
Bitcode jest pośrednim przedstawieniem kompilatu. Aplikacje przesłane do iTunes Connect, które zawierają kod Bitcode, zostaną skompilowane i połączone w App Store. Dołączenie bitu pozwoli Apple na ponowną optymalizację pliku binarnego aplikacji w przyszłości bez konieczności przesyłania do sklepu nowej wersji aplikacji.
Większość bibliotek i frameworków jest "grubych", co oznacza, że zawierają dodatkowe pliki binarne obsługujące wszystkie architektury. Oznacza to, że framework iOS może obsługiwać armv7, armv7s i i386 (wszystkie architektury urządzeń i symulator).
Budowanie biblioteki za pomocą bitcode umożliwia jej działanie w trybie Thinning. Oznacza to, że tylko pliki binarne odpowiednie dla architektury, w której aplikacja będzie działać, są pobierane ze sklepu App Store. Dodatkowo, jak wspomina Crazyrems w komentarzach, zoptymalizuje to instalację aplikacji i rozmiar pobierania, ponieważ urządzenie pobierze tylko zasoby niezbędne do uruchomienia aplikacji na tej konkretnej architekturze/urządzeniu.
Nie będę wdawać się w szczegóły o LLVM IR, ale polecam czytanie tych artykułów na odniesienie:
Instalacje będą zoptymalizowany. Tylko część aplikacji zbudowana dla architektury konkretnego telefonu zostanie pobrana podczas instalacji, co oznacza mniejsze rozmiary aplikacji. – Crazyrems
@ Dziękuję za podziękowania, dodałem to jako aktualizację mojej odpowiedzi. – JAL
Zadowolony z odpowiedzi. Dzięki @JAL – iMHitesh