Jeśli używasz niestandardowych frameworków, musisz umieścić je w sekcji „Osadzone pliki binarne” znajdującej się w projekcie Xcode w zakładce Cel / Ogólne.
Mam niestandardową strukturę i jest ona wymieniona w sekcji „Osadzone pliki binarne” w projekcie Xcode w obszarze Cel> Ogólne. Nadal pojawia się ten problem, gdy próbuję uruchomić testy jednostkowe. Niedawno zaktualizowałem części mojego kodu Swift do Swift 3 (z 2). Jeśli to pomoże ...
Mario A Guzman
@MarioAGuzman Jak to naprawić? Problem pojawia się również po migracji Swift 3
iOS
@iOS Niestety nie udało mi się to naprawić. Problem rozwiązał się sam z Xcode 8.3, który właśnie został wydany.
Mario A Guzman
Dlaczego to musi być w sekcji Osadzone pliki binarne? Próbuję użyć ObjectiveDropboxOfficial.framework. Otrzymywałem ten błąd, umieściłem go w programie Embedded i „naprawiłem”. Jednak wyjąłem go ponownie i pozostaje „naprawiony”. Jednak inne cele, które są skonfigurowane z tym samym AFAICT, kończą się niepowodzeniem. Dokumenty instalacyjne Dropbox nie mówią, aby umieścić je we wbudowanych strukturach.
Jim Leask
To pomogło. Upewnij się również, że nie masz duplikatów w „Połączonych strukturach i bibliotekach”. Po dodaniu do sekcji Osadzone automatycznie dodaje ją do sekcji Połączone.
milesmeow
59
Dla mnie proste Cleani Rebuildzałatwione. Mam nadzieję, że to pomoże.
Wyczyść, czysty folder kompilacji, usuń zawartość folderu danych pochodnych, zainstaluj pod (w stosownych przypadkach), uruchom ponownie Xcode, uruchom ponownie komputer; potem posmaruj drzwi krwią baranka
johnnyclem
1
Mnie też pomogło !!
Dmitriy Greh
Usunięcie katalogu i pobranie ostatniego zatwierdzenia z git nie pomogło, ale wyczyszczenie i odbudowanie pomogło lol
え る ま る
8
W moim przypadku musiałem zawiązać chili i cytrynę na framudze drzwi.
Naresh
1
Musiałem też poświęcić mojego pierwszego syna, ale zadziałało!
Andor Németh
25
Ten problem pojawił się po aktualizacji systemu do wersji beta macOS 10.15.2. Wyłączenie „Thread Sanitizer” rozwiązało problem (Xcode 11.2). Teraz nie mogę używać Thread Sanitizer i muszę czekać na następną aktualizację systemu operacyjnego.
Ten post odpowiada na pierwotne pytania, kiedy problem pojawia się w symulatorach Xcode 11.3 po aktualizacji do wersji Mac 10.15.2. Wygląda na to, że błąd Apple'a, zobacz forums.developer.apple.com/thread/126891
Vadim Motorine
19
Dodanie struktury do listy osadzonych zasobów binarnych rozwiązało ten problem. Oto jak wygląda konfiguracja obcego frameworka w ostatecznej formie w Xcode GUI jako Embedded Framework (Xcode 9.2, osobiście wolę wizualny ślad okruchów chleba ;-)):
Czy Apple celowo zawiesił środowisko wykonawcze, aby w jakiś sposób poinformować dewelopera o problemie, że nie można używać frameworków innych niż Apple jako prostych połączonych frameworków w programowaniu iOS? Byłoby lepiej, gdyby pojawił się jako błąd kompilacji, myślę ... z przyciskiem z napisem „przesuń to!”
Korzystanie z wbudowanych plików binarnych sprawia, że użytkownik końcowy nie musi dodawać Framework niezależnie od aplikacji (lub musisz zrobić to z instalatorem). W przypadku iPhone'a (iOS) jest to niemożliwe, ale na macOS jest to możliwe, ale może szybko się zabrudzić.
Dla użytkownika końcowego znacznie przyjemniej jest po prostu przeciągnąć i upuścić aplikację, aby zainstalować ją w systemie MacOS, co oznacza, że osadzenie staje się korzyścią. Osadzanie pozwala również uniknąć klasycznych „konfliktów bibliotek DLL” związanych z zarządzaniem zewnętrznymi wersjami platformy. (miejsce na dysku jest tanie, czas klienta jest cenny).
Mała aktualizacja. Xcode 10.1 pozwala teraz na przeciągnięcie niestandardowego środowiska z sekcji „Połącz pliki binarne z bibliotekami”, gdzie jest ono domyślnie przenoszone, do sekcji „Kopiuj zasoby pakietu”, gdzie musi być ... To już nie tylko kopiuje odniesienie ale też go porusza. Zrzut ekranu tutaj: stackoverflow.com/questions/24993752/ ...
William Cerniuk
13
Właśnie naprawiłem błąd w moim projekcie!
Jeśli używasz szybkiego frameworka w projekcie Object-C, radzę zmienić ustawienia kompilacji.
Opcja Zawsze osadzaj Swift Standard Libraries na TAK. lubię to:
super człowieku, walczyłem z tym problemem 1,5 dnia. nawet znalazłem tę fajną matrycę twitter.com/isupportmatrix zmieniając ją na wymagane rozwiązane również po mojej stronie
swift2geek
a także działało tylko z ustawieniem w Plik -> Ustawienia projektu-> System kompilacji starszego typu
swift2geek
10
Xcode 11.1 , Wyłącz Do not Embed, Embed & Signto fajna opcja.
2) Upewnij się, że dodałeś pliki binarne w sekcji „Osadź pliki binarne”.
3) Upewnij się, że masz włączone podpisywanie struktur w sekcji fazy kompilacji.
4) Upewnij się, że osadzone struktury nie są dowiązaniami symbolicznymi.
5) Połączone frameworki można uczynić opcjonalnymi zamiast wymaganymi w fazie „Łączenie plików binarnych z bibliotekami”. To powie iOS, aby nie szukał tych frameworków podczas uruchamiania. Ale i tak musisz naprawić błędy, aby używać tych frameworków!
6) Sprawdź, czy wszystkie wpisy w serwisie info.plist są prawidłowe. W moim przypadku używałem pliku info.plist na Maca dla iOS. Szukał pliku xib, którego nie było w projekcie iOS.
7) Po każdej takiej zmianie wyczyść i zbuduj. Jest to wymagane, ponieważ xcode nie kopiuje / nie zmienia tych plików, jeśli już istnieją.
8) Usuń aplikację z iPada, a następnie zainstaluj. Z tego samego powodu co w 7.
Guard Malloc, aby być poprawnym. Czy ktoś wie, dlaczego naprawia awarię?
Mojo66
1
Możesz także spróbować wyczyścić projekt, a następnie uruchomić go ponownie lub po prostu ponownie uruchomić Xcode. Tego rodzaju błędy są po prostu irytujące i przypominają błędy w Xcode
Karanveer Singh.
5
Aby odpowiedzieć na pierwotne pytanie „Co mogę zrobić, aby uzyskać więcej informacji o problemie?”, Ten wątek na forum Apple zawiera bardzo prostą wskazówkę: po prostu uruchom aplikację powodującą awarię poza XCode (tj. urządzenie). Spowoduje to utworzenie dziennika awarii zawierającego więcej szczegółów na temat tego, co się stało. Następnie możesz przejrzeć ten dziennik z menu XCode Window / Devices and Simulators -> View Device Logs.
Napotkałem ten sam problem z Xcode 11.3 i macOS Catalina 10.15.2. Aplikacja działała dobrze na urządzeniu, ale nie na symulatorze. Wygląda na to, że wystąpił problem z symulatorem i obejściem jest wyłączenie narzędzia Thread Sanitizer.
Napotkałem błąd z tą samą sygnaturą (mój projekt był w Obj-C) i odkryłem, że zapomniałem połączyć się z odpowiednim frameworkiem. Komunikat o błędzie w dzienniku debugowania, który doprowadził do znalezienia błędu, to:
dyld: Nie znaleziono symbolu: _OBJC_CLASS _ $ _ SFSafariViewController
W przypadku mojego konkretnego błędu dodanie SafariServices.framework w Celach -> Fazy kompilacji -> „Połącz plik binarny z bibliotekami” rozwiązało problem. Chociaż prawdopodobnie nie masz tego samego konkretnego błędu i rozwiązania, przydatne jest sprawdzenie dziennika debugowania pod kątem wskazówek.
Miałem taką sytuację po aktualizacji Xcode do v10.2.1 i swift do v5.0. Jeśli używasz Carthage + RxSwift, nowy RxSwift używa RxRelay.framework. Powinieneś przejść do swojego katalogu / Carthage / Build, znaleźć ten framework i pobrać go do swojego projektu. Nie zapomnij również dodać go do swojego carthage copy-frameworksskryptu:
$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Jeśli używasz frameworka napisanego w Swift w aplikacji Objective-C, musisz dołączyć Swift toolchain do aplikacji, która używa frameworka.
Sposób, w jaki udało mi się to zrobić, polega na utworzeniu w aplikacji fikcyjnego pliku Swift, aby XCode rozpoznał go i odpowiednio dodał do projektu. Następnie możesz usunąć fikcyjny plik.
Chciałbym, żeby ktoś znał lepszy sposób na jawne dodanie swift do projektu obiektywnego c bez dodawania szybkiego pliku.
jeśli używasz frameworka budującego Carthage, po przeciągnięciu frameworka do swojego projektu, powinieneś dodać go do plików binarnych General / Embeded.
Aby dodać do długiej listy spotkań z tym błędem, występuje on, gdy korzystam z XCode12.2 Beta 2 i wdrażam go na moim komputerze Mac z systemem MacOS 10.15.5 z celem wdrożenia ustawionym na MacOS 11.0. Taka sytuacja zdarzyła się, ponieważ podczas dodawania paska bocznego wypróbowywałem aplikację Mac Catalyst Tutorial . Przełączenie celu na MacOS 10.15.5 wyeliminowało błąd i poprawnie uruchomiło aplikację.
Naprawiłem błąd w moim projekcie.
1. Sprawdź inne wątki, gdy wystąpił błąd. Mój błąd dotyczy aparatu.
Dodaj prywatność kamery w pliku Info.plist.
1) Otwórz plik info.plist.
2) Dodaj nowy klucz o nazwie „Prywatność - Opis użycia kamery” i wprowadź ciąg opisujący, dlaczego aplikacja potrzebuje kamery. Opisy będą wyświetlane, gdy aplikacja będzie potrzebować prywatności.
Właśnie miałem ten sam problem, a powód był taki, że odwołałem moje certyfikaty programisty i utworzyłem nowe za pomocą Xcode 10, po świeżej aktualizacji macOS Mojave (dla niektórych usunęło wszystkie dane logowania, a niektóre przestarzały certyfikaty pęku kluczy).
Wszystko, co musiałem zrobić, to usunąć zainstalowane aplikacje z mojego urządzenia i ponownie uruchomić je przez Xcode, aby zainstalować odpowiedni nowy profil obsługi administracyjnej na moim urządzeniu :)
Czasami zdarza się, gdy używasz struktur systemowych, które są dostępne tylko z późniejszej wersji systemu iOS niż wersja docelowa. Można to naprawić, oznaczając tę połączoną strukturę jako opcjonalną.
Na przykład projekt przeznaczony dla systemu iOS 11 i korzystający z funkcji AuthenticationServices dla systemu iOS 12 ulegnie awarii w systemie iOS 11 w opisany sposób.
Właściwie miałem problem z 11.3.1 i Thread Sanitizer był już wyłączony, jak wspomniano powyżej. W moim przypadku problem polegał na tym, że miałem różne wersje xCode w moim folderze aplikacji
Zrozumienie, że system kompilacji domyślnie wygląda na plik /Applications/Xcode.app zajmuje mi 2 dni. Zatem przeniesienie wersji 11.3.1 do /Applications/Xcode.app w końcu rozwiązało problem
Również jeśli używasz niestandardowych frameworków, upewnij się, że ustawiłeś typ Mach-O na bibliotekę statyczną. Czytałem gdzieś, że IOS nie pozwala na dylib. W każdym razie to zadziałało dla mnie.
Dla mnie proste
Clean
iRebuild
załatwione. Mam nadzieję, że to pomoże.źródło
Ten problem pojawił się po aktualizacji systemu do wersji beta macOS 10.15.2. Wyłączenie „Thread Sanitizer” rozwiązało problem (Xcode 11.2). Teraz nie mogę używać Thread Sanitizer i muszę czekać na następną aktualizację systemu operacyjnego.
źródło
Dodanie struktury do listy osadzonych zasobów binarnych rozwiązało ten problem. Oto jak wygląda konfiguracja obcego frameworka w ostatecznej formie w Xcode GUI jako Embedded Framework (Xcode 9.2, osobiście wolę wizualny ślad okruchów chleba ;-)):
Czy Apple celowo zawiesił środowisko wykonawcze, aby w jakiś sposób poinformować dewelopera o problemie, że nie można używać frameworków innych niż Apple jako prostych połączonych frameworków w programowaniu iOS? Byłoby lepiej, gdyby pojawił się jako błąd kompilacji, myślę ... z przyciskiem z napisem „przesuń to!”
Korzystanie z wbudowanych plików binarnych sprawia, że użytkownik końcowy nie musi dodawać Framework niezależnie od aplikacji (lub musisz zrobić to z instalatorem). W przypadku iPhone'a (iOS) jest to niemożliwe, ale na macOS jest to możliwe, ale może szybko się zabrudzić.
Dla użytkownika końcowego znacznie przyjemniej jest po prostu przeciągnąć i upuścić aplikację, aby zainstalować ją w systemie MacOS, co oznacza, że osadzenie staje się korzyścią. Osadzanie pozwala również uniknąć klasycznych „konfliktów bibliotek DLL” związanych z zarządzaniem zewnętrznymi wersjami platformy. (miejsce na dysku jest tanie, czas klienta jest cenny).
źródło
Właśnie naprawiłem błąd w moim projekcie!
Jeśli używasz szybkiego frameworka w projekcie Object-C, radzę zmienić ustawienia kompilacji.
Opcja Zawsze osadzaj Swift Standard Libraries na TAK. lubię to:
mam nadzieję, że to było dla ciebie przydatne.
źródło
Wreszcie rozwiązany!
Udało mi się uczynić framework „opcjonalnym” zamiast „wymaganym”.
Mam nadzieję, że to pomoże!
źródło
Xcode 11.1 , Wyłącz
Do not Embed
,Embed & Sign
to fajna opcja.Dzięki @mkonovalov, @William Cerniuk
źródło
1) Kontynuuj wykonywanie, aby sprawdzić, czy w debugerze nie pojawił się żaden komunikat, taki jak „MyFramework.framework”, nie znaleziono. Jeśli tak jest, wykonaj tę dyskusję: Biblioteka OS X Framework nie została załadowana: `` Nie znaleziono obrazu '' Dla mnie ta odpowiedź zadziałała: https://stackoverflow.com/a/44796734/4060763
2) Upewnij się, że dodałeś pliki binarne w sekcji „Osadź pliki binarne”.
3) Upewnij się, że masz włączone podpisywanie struktur w sekcji fazy kompilacji.
4) Upewnij się, że osadzone struktury nie są dowiązaniami symbolicznymi.
5) Połączone frameworki można uczynić opcjonalnymi zamiast wymaganymi w fazie „Łączenie plików binarnych z bibliotekami”. To powie iOS, aby nie szukał tych frameworków podczas uruchamiania. Ale i tak musisz naprawić błędy, aby używać tych frameworków!
6) Sprawdź, czy wszystkie wpisy w serwisie info.plist są prawidłowe. W moim przypadku używałem pliku info.plist na Maca dla iOS. Szukał pliku xib, którego nie było w projekcie iOS.
7) Po każdej takiej zmianie wyczyść i zbuduj. Jest to wymagane, ponieważ xcode nie kopiuje / nie zmienia tych plików, jeśli już istnieją.
8) Usuń aplikację z iPada, a następnie zainstaluj. Z tego samego powodu co w 7.
źródło
Odznaczenie "Guard Malloc" w diagnostyce zadziałało.
źródło
Guard Malloc
, aby być poprawnym. Czy ktoś wie, dlaczego naprawia awarię?Aby odpowiedzieć na pierwotne pytanie „Co mogę zrobić, aby uzyskać więcej informacji o problemie?”, Ten wątek na forum Apple zawiera bardzo prostą wskazówkę: po prostu uruchom aplikację powodującą awarię poza XCode (tj. urządzenie). Spowoduje to utworzenie dziennika awarii zawierającego więcej szczegółów na temat tego, co się stało. Następnie możesz przejrzeć ten dziennik z menu XCode Window / Devices and Simulators -> View Device Logs.
źródło
Właśnie przegapiłem zastosowanie „Prywatności - Opis użycia kamery” w info.plist.
Nie wiem, czy te informacje pomogą komukolwiek innemu ...
źródło
Napotkałem ten sam problem z Xcode 11.3 i macOS Catalina 10.15.2. Aplikacja działała dobrze na urządzeniu, ale nie na symulatorze. Wygląda na to, że wystąpił problem z symulatorem i obejściem jest wyłączenie narzędzia Thread Sanitizer.
Zobacz: https://forums.developer.apple.com/message/397978#397978
Mam nadzieję że to pomoże.
źródło
Napotkałem błąd z tą samą sygnaturą (mój projekt był w Obj-C) i odkryłem, że zapomniałem połączyć się z odpowiednim frameworkiem. Komunikat o błędzie w dzienniku debugowania, który doprowadził do znalezienia błędu, to:
dyld: Nie znaleziono symbolu: _OBJC_CLASS _ $ _ SFSafariViewController
W przypadku mojego konkretnego błędu dodanie SafariServices.framework w Celach -> Fazy kompilacji -> „Połącz plik binarny z bibliotekami” rozwiązało problem. Chociaż prawdopodobnie nie masz tego samego konkretnego błędu i rozwiązania, przydatne jest sprawdzenie dziennika debugowania pod kątem wskazówek.
źródło
Miałem taką sytuację po aktualizacji Xcode do v10.2.1 i swift do v5.0. Jeśli używasz Carthage + RxSwift, nowy RxSwift używa
RxRelay.framework
. Powinieneś przejść do swojego katalogu / Carthage / Build, znaleźć ten framework i pobrać go do swojego projektu. Nie zapomnij również dodać go do swojegocarthage copy-frameworks
skryptu:$(SRCROOT)/Carthage/Build/iOS/RxRelay.framework
Rozwiązane dzięki: https://stackoverflow.com/a/52550148/2493555
źródło
Jeśli używasz frameworka napisanego w Swift w aplikacji Objective-C, musisz dołączyć Swift toolchain do aplikacji, która używa frameworka.
Sposób, w jaki udało mi się to zrobić, polega na utworzeniu w aplikacji fikcyjnego pliku Swift, aby XCode rozpoznał go i odpowiednio dodał do projektu. Następnie możesz usunąć fikcyjny plik.
Chciałbym, żeby ktoś znał lepszy sposób na jawne dodanie swift do projektu obiektywnego c bez dodawania szybkiego pliku.
źródło
jeśli używasz frameworka budującego Carthage, po przeciągnięciu frameworka do swojego projektu, powinieneś dodać go do plików binarnych General / Embeded.
źródło
Znajduję właściwy sposób rozwiązania tego problemu.
Upewnij się, że
AppleWWDRCA.cer
ustawiony jest domyślny tryb systemu, wtedy zadziała:źródło
Miałem ten sam problem. Ustawienie „Zawsze osadzaj Swift Standard Libraries” na Tak w ustawieniach kompilacji mojego celu zadziałało.
źródło
Miałem podobny problem, który został rozwiązany przez brak specyfikacji uprawnień w plist (tak dziwne, jak to jest ...)
Próbowałem użyć AVCaptureDevice i właśnie się zawiesił podczas uruchamiania (moja aplikacja była bardzo minimalna)
Dodawanie -
Privacy - Camera Usage Description
abyinfo.plist
rozwiązać to za mnie.źródło
Aby dodać do długiej listy spotkań z tym błędem, występuje on, gdy korzystam z XCode12.2 Beta 2 i wdrażam go na moim komputerze Mac z systemem MacOS 10.15.5 z celem wdrożenia ustawionym na MacOS 11.0. Taka sytuacja zdarzyła się, ponieważ podczas dodawania paska bocznego wypróbowywałem aplikację Mac Catalyst Tutorial . Przełączenie celu na MacOS 10.15.5 wyeliminowało błąd i poprawnie uruchomiło aplikację.
źródło
Naprawiłem błąd w moim projekcie.
1. Sprawdź inne wątki, gdy wystąpił błąd. Mój błąd dotyczy aparatu.
1) Otwórz plik info.plist.
2) Dodaj nowy klucz o nazwie „Prywatność - Opis użycia kamery” i wprowadź ciąg opisujący, dlaczego aplikacja potrzebuje kamery. Opisy będą wyświetlane, gdy aplikacja będzie potrzebować prywatności.
źródło
Właśnie miałem ten sam problem, a powód był taki, że odwołałem moje certyfikaty programisty i utworzyłem nowe za pomocą Xcode 10, po świeżej aktualizacji macOS Mojave (dla niektórych usunęło wszystkie dane logowania, a niektóre przestarzały certyfikaty pęku kluczy).
Wszystko, co musiałem zrobić, to usunąć zainstalowane aplikacje z mojego urządzenia i ponownie uruchomić je przez Xcode, aby zainstalować odpowiedni nowy profil obsługi administracyjnej na moim urządzeniu :)
źródło
Czasami zdarza się, gdy używasz struktur systemowych, które są dostępne tylko z późniejszej wersji systemu iOS niż wersja docelowa. Można to naprawić, oznaczając tę połączoną strukturę jako opcjonalną.
Na przykład projekt przeznaczony dla systemu iOS 11 i korzystający z funkcji AuthenticationServices dla systemu iOS 12 ulegnie awarii w systemie iOS 11 w opisany sposób.
źródło
Właściwie miałem problem z 11.3.1 i Thread Sanitizer był już wyłączony, jak wspomniano powyżej. W moim przypadku problem polegał na tym, że miałem różne wersje xCode w moim folderze aplikacji
i
/Applications/Xcode.app - was 11.2
Zrozumienie, że system kompilacji domyślnie wygląda na plik /Applications/Xcode.app zajmuje mi 2 dni. Zatem przeniesienie wersji 11.3.1 do /Applications/Xcode.app w końcu rozwiązało problem
źródło
Również jeśli używasz niestandardowych frameworków, upewnij się, że ustawiłeś typ Mach-O na bibliotekę statyczną. Czytałem gdzieś, że IOS nie pozwala na dylib. W każdym razie to zadziałało dla mnie.
źródło
Ten sam problem wystąpił ze mną. Miałem iOS 14 Beta i problem został rozwiązany, kiedy zaktualizowałem go do oficjalnej wersji.
źródło
Doświadczyłem tego problemu tylko podczas pracy na prawdziwym urządzeniu (iPhone SE). Na symulatorze projekt działał zgodnie z oczekiwaniami.
Wypróbowałem wszystkie poprawki z tego wątku i stąd: Biblioteka OS X Framework nie została załadowana: `` Nie znaleziono obrazu '' Żaden z nich nie pracował dla mnie.
U mnie problem został rozwiązany po ponownym uruchomieniu iPhone'a (sic!).
Zrobiłem:
I w końcu działa. :)
Jeśli każde inne rozwiązanie zawodzi, nie zapomnij go wypróbować.
źródło
Mam to posortowane według polecenia „pod install”.
źródło