Powód: nie znaleziono odpowiedniego obrazu [zamknięty]

130
dyld: Library not loaded: @rpath/libswiftCore.dylib
  Referenced from: /var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/Stylist.app/Stylist
  Reason: no suitable image found.  Did find:
    /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib: mmap() errno=1 validating first page of '/private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib'
(lldb) 

Otrzymuję ten błąd podczas tworzenia na moim iPhonie. Potrafię zbudować na symulatorze. Przerobiłem wszystkie moje pliki rezerwowe, ale nadal nie mogę zbudować na moim iPhonie. Mój Xcode jest taki

wprowadź opis obrazu tutaj

Czy jest to problem z ramą czy z podpisem? Tak się nie stało w Xcode 6. Dziękuję.

Satsuki
źródło
Rozwiązałem ten problem (po znalezieniu wielu
ślepych zaułków
Aktualizacja dla iOS 13.3.1: jeśli masz ten pechowy iOS i próbujesz zainstalować aplikację z zagnieżdżonymi frameworkami, po prostu wiedz, że to błąd - aktualizacja do wersji 13.4.1 lub nowszej, jest już rozwiązana
iago849

Odpowiedzi:

389

Mam ten problem przed przypadkowym unieważnieniem mojego certyfikatu. Zatem wszystkie moje szybkie projekty mają ten problem. Istnieją dwa sposoby rozwiązania tego problemu:

Kliknij Produkt → Wyczyść (lub CMD+ Shift+ K)

Lub ręcznie czyszcząc pliki ustawień Xcode:

rm -rf "$(getconf DARWIN_USER_CACHE_DIR)/org.llvm.clang/ModuleCache"
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ~/Library/Caches/com.apple.dt.Xcode
Jieyi Hu
źródło
1
użyj ich w terminalu
Jieyi Hu
Nie ma problemu. Wybierz moją odpowiedź, jeśli chcesz :)
Jieyi Hu
10
Myślę, że Alt + Clean też to zrobi
jjxtra
9
Sprzątanie projektu zadziałało dla mnie: SHIFT + CMD + K
B-Rad
9
Czy używasz identyfikatora Apple ID innej firmy, aby zainstalować aplikację na telefonie? Wygląda na to, że iOS 13.3.1 ma zepsute aplikacje zainstalowane z bezpłatnymi identyfikatorami Apple ID, ale tylko wtedy, gdy zawierają osadzone struktury. Jeśli możliwe jest połączenie wszystkich zależności jako bibliotek statycznych, a nie frameworków (na przykład, jeśli używasz Cocoapods, możesz usunąć use_frameworks! Ze swojego Podfile), powinno to na razie rozwiązać problem.
Kashif Rabbani
31

Długo szukałem w tej sprawie. Istnieje kilka przyczyn tego problemu.

Jeśli masz do czynienia z kodem / biblioteką Swift w projekcie Objectice C, powinieneś wypróbować rozwiązanie 1-2-3

Jeśli napotykasz ten problem, nowy projekt Swift Rozwiązanie 4 będzie dla Ciebie najlepsze.

Rozwiązanie 1 :

Uruchom ponownie Xcode, a następnie komputer i iPhone'a

Rozwiązanie 2 :

Przejdź do ustawień kompilacji projektu i ustaw Embedded Content Contains Swiftflagę kodu na TAK

Rozwiązanie 3:

Przejdź do ustawień kompilacji projektu i dodaj @executable_path/Frameworksopcję Runpath Search Paths

Rozwiązanie 4:

Jeśli żadne z powyższych nie działa, powinno. Wydaje się, że Apple to certyfikaty z łatkami ninja, jak wspomniano w poście AirSign

At InHouse certyfikaty

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, O=Company Name, C=FR

dodali nowe pole o nazwie OU

Subject: UID=269J2W3P2L, CN=iPhone Distribution: Company Name, OU=269J2W3P2L, O=Company Name, C=FR

więc należy po prostu odtworzyć certyfikat i udostępnienie

murrekatt
źródło
Dziękuję Zrobiłem rozwiązanie 1 ~ 3 i nie działa Odtworzyłem certyfikat i przepis i nie działa tak dobrze
Satsuki
1
Miałem do czynienia z tym samym komunikatem o błędzie, o który zadał pierwotnie Satsuki. Rozwiązanie 4 załatwiło sprawę za mnie. Miałem problemy z Realm Framework, ale tylko wtedy, gdy próbowałem utworzyć archiwum mojej aplikacji, a następnie zainstalować je przez iTunes (w przeciwnym razie bezpośrednie wdrożenie na urządzenie przebiegało płynnie).
Peter Ivanics
4 zrobił to również dla mnie! Oto link do postu AirSign
pshah
2
Jak edytować certyfikat InHouse?
Al Wang
1
1 i 2 nie działały dla mnie. Okno -> projekt, usuń dane pochodne, naprawił to. Gorszy, błędny xcode>. <
Cymric
27
Xcode->Product->Clean + Xcode Restart

Po wypróbowaniu wielu innych wymienionych rozwiązań, ku mojemu wiecznemu zażenowaniu, wykonanie Xcode-> Product-> Clean i ponowne uruchomienie Xcode załatwiło sprawę.

Sean Vikoren
źródło
2
Ja również wykonałem wiele z wcześniej wymienionych kroków, takich jak pobranie WWRD, sprawdzenie ścieżki biegu itp.. Nic nie działało, dopóki nie zrobiłem tego „Wyczyść”. Więc WIELKIE dziękuję!
Joe Famme
Musiałem zrestartować Xcode po kilku nieudanych czyszczeniach. Wydawałoby się to zbyt oczywistym rozwiązaniem, biorąc pod uwagę, jak trudne wydaje się Apple robić wszystko inne
Jeffrey Kern
19

U mnie ten problem pojawił się z powodu certyfikatu WWRD - mój był aktualny, ale z jakiegoś powodu został ustawiony na „zawsze ufaj” zamiast „używaj domyślnych ustawień systemu”, co najwyraźniej robi różnicę.

Warblr
źródło
4
+1 za problem z certyfikatem. Próbowałem absolutnie WSZYSTKIEGO, ale potem zauważyłem, że mój certyfikat programisty jest ustawiony na „Zawsze ufaj” w pęku kluczy. Zmiana na „Użyj domyślnych ustawień systemu”, jak mówisz, zadziałała idealnie. Dziękuję Ci!
tylermilner
1
Próbowałem wszystkiego i to się udało. Poważnie Dlaczego Apple nie może tego naprawić w ramach Xcode ...
UKDataGeek
1
niezwykle WAŻNE: po zmianie certyfikatu dostęp do "użyj domyślnych ustawień systemu" głęboko CZYŚĆ projekt (cmd + Alt + shift + K)
Roman Slyepko
2
Uratowałem mój dzień stary! dzięki
andrea.rinaldi
Myślę, że jest to NAJLEPSZE rozwiązanie tego problemu. Wypróbowałem też prawie wszystkie rozwiązania dostępne w Internecie, ale żadne z nich nie działa dla mnie poza tym. Świetne rozwiązanie ...
Eee. Vihar
17

Jeśli przypadkowo zresetujesz pęku kluczy, może to być spowodowane brakującymi certyfikatami Apple w pęku kluczy. Poszedłem za odpowiedzią w tej sprawie, aby rozwiązać mój problem.

Miałem ten sam problem i udało mi się go naprawić, ponownie pobierając WWDR (Apple Worldwide Developer Relations Certification Authority). Pobierz stąd: http://developer.apple.com/certificationauthority/AppleWWDRCA.cer

user1742302
źródło
1
naprawiłem to dla mnie po przeniesieniu Xcode i mojego profilu użytkownika z jednego Maca na drugi.
RTasche
1
Działa w moim przypadku, dzięki!
Alice Chan
1
DZIĘKUJĘ PANI, JESTEŚ ŻYCIE
Josh O'Connor,
Dziękuję, tyle czasu zajęło mi znalezienie tego.
loudmouth
15

Usunięcie DerivedData załatwiło sprawę.

Zrobiłem to przez Xcode -> Preferencje -> Lokalizacje -> kliknąłem strzałkę za ścieżką DerivedData i usunąłem cały folder DerivedData w Finderze.

NBoymanns
źródło
dzięki, pracował dla mnie, cordova + xcode 7.2
jujule
1
Window > Projects > My Project > Derived Data > Deletewykonał pracę za mnie.
Michael Waterfall
Pracował dla mnie na Xcode 10.1. Wszystko też działało, ale pewnego szczęśliwego dnia Xcode zaczął pokazywać te błędy. Dzięki.
Zhebzhik Babich
5

Zdarzyło się to po mojej stronie podczas tworzenia aplikacji w wierszu poleceń za pośrednictwem xcodebuild i xcrun PackageApplication, podpisując aplikację profilem przedsiębiorstwa. Na naszych serwerach kompilacji CI certyfikat został ustawiony na „Zawsze ufaj” w pęku kluczy (wybierz certyfikat -> Uzyskaj informacje -> Zaufanie -> „Użyj domyślnych ustawień systemu” można zmienić na „Zawsze ufaj”). Musiałem ustawić go z powrotem na „Użyj domyślnych ustawień systemu”, aby to zadziałało. Początkowo ustawiliśmy to na „Zawsze ufaj”, aby obejść okna dialogowe pęku kluczy, które pojawiają się po aktualizacjach oprogramowania i aktualizacjach certyfikatów.

Jagveer Singh
źródło
4

Ryzykując, że zasieję więcej zamieszania, miałem ten problem podczas aktualizacji do XC8.

Żadna z tych sugestii, ani żadnego innego wątku, nie rozwiązała tego problemu. To, co ZROBIŁO, to usunięcie WSZYSTKIEGO z fazy budowania „Połącz plik binarny z bibliotekami”, fazy budowania „Zależności docelowe” oraz ustawienia ogólnego „Połączone struktury i biblioteki”.

FYI, używam Kartaginy i dodałem $(PROJECT_DIR)/Carthage/Build/tvOSdoFRAMEWORK_SEARCH_PATHS ustawień kompilacji, aby można było znaleźć moje frameworki.

FYI 2, te projekty i ramy, są w 100% szybkie, a ramy są budowane DEFINES_MODULE = YES.

daimler250v8
źródło
DEFINES_MODULE = YES pracował dla mnie. Mój projekt zawierał zarówno Objective-C, jak i Swift.
Jason Huh
3
  1. Usuń aplikację z urządzenia
  2. Wyczyść projekt ( CMD+ SHift+ K)
  3. Kompiluj / uruchom na urządzeniu
Maxim Firsoff
źródło
2

Cytowane z pytań technicznych i odpowiedzi QA1886 :

Aplikacja Swift ulega awarii podczas próby odwołania się do biblioteki Swift libswiftCore.dylib.

P: Co mogę zrobić z błędem ładowania libswiftCore.dylib w konsoli mojego urządzenia, który występuje, gdy próbuję uruchomić aplikację języka Swift?

O: Aby rozwiązać ten problem, musisz podpisać aplikację przy użyciu certyfikatów do podpisywania kodu z jednostką organizacyjną podmiotu (OU) ustawioną na identyfikator zespołu. Wszystkie certyfikaty dewelopera w wersji Enterprise i standardowej iOS, które zostały utworzone po wydaniu iOS 8, mają nowe pole Team ID w odpowiednim miejscu, aby umożliwić uruchamianie aplikacji języka Swift.

Zwykle ten błąd pojawia się w dzienniku konsoli urządzenia z komunikatem podobnym do jednego z następujących: [....] [deny-mmap] mapowany plik nie ma identyfikatora zespołu i nie jest plikiem binarnym platformy: / private / var / mobile / Kontenery / Pakiet / Aplikacja / 5D8FB2F7-1083-4564-94B2-0CB7DC75C9D1 / YourAppNameHere.app / Frameworks / libswiftCore.dylib

Dyld Error Message:
  Library not loaded: @rpath/libswiftCore.dylib

Exception Type: EXC_BREAKPOINT (SIGTRAP)
Exception Codes: 0x0000000000000001, 0x0000000120021088
Triggered by Thread: 0

Referenced from: /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/TestApp
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib: mmap() error 1 at address=0x1001D8000, size=0x00194000 segment=__TEXT in Segment::map() mapping /private/var/mobile/Containers/Bundle/Application/C3DCD586-2A40-4C7C-AA2B-64EDAE8339E2/TestApp.app/Frameworks/libswiftCore.dylib
Dyld Version: 353.5

Nowe certyfikaty są potrzebne podczas tworzenia archiwum i pakowania aplikacji. Nawet jeśli masz jeden z nowych certyfikatów, po prostu rezygnacja z istniejącego archiwum szybkiej aplikacji nie zadziała. Jeśli został utworzony z certyfikatem w wersji wcześniejszej niż iOS 8, musisz zbudować kolejne archiwum.

Ważne: zachowaj ostrożność, jeśli musisz unieważnić i skonfigurować nowy certyfikat Enterprise Distribution. Jeśli jesteś wewnętrznym programistą dla przedsiębiorstw, musisz uważać, aby nie unieważnić certyfikatu dystrybucyjnego, który został użyty do podpisania aplikacji, której którykolwiek z pracowników przedsiębiorstwa nadal używa jako wszystkich aplikacji podpisanych tym certyfikatem dystrybucyjnym przedsiębiorstwa natychmiast przestanie działać. Powyższe dotyczy tylko certyfikatów Enterprise Distribution. Certyfikaty programistyczne można bezpiecznie odwołać w przypadku deweloperów systemu iOS w przedsiębiorstwie / standardu.

Jak mówią pracownicy AirSign, problem ma swoje źródło w brakującym atrybucie OU w polu tematu certyfikatu In-House.

Temat: UID = 269J2W3P2L, CN = iPhone Dystrybucja: nazwa firmy, OU = 269J2W3P2L, O = nazwa firmy, C = FR

Mam certyfikat rozwoju przedsiębiorstwa, utworzenie nowego rozwiązało problem.

AG
źródło
czy ktoś może to wyjaśnić po angielsku?
UKDataGeek
2

Nadal możesz napotkać ten problem po wypróbowaniu @Jieyi Hu Answer. może wydaje się, że jest naprawiony, ale jeśli pojawi się ponownie (prawdopodobnie na xCode 9).

Jednak to obejście wydaje się działać (dotyczy Cocoapods 1.5.x):

  1. wyczyść swój projekt
  2. zamknij Xcode i usuń DerivedData
  3. otwórz Podfile w swoim projekcie i dodaj to:

    post_install do |installer| installer.pods_project.build_configurations.each do |config| config.build_settings.delete('CODE_SIGNING_ALLOWED') config.build_settings.delete('CODE_SIGNING_REQUIRED') end end

  4. aktualizacja pod

Źródła:

https://github.com/evgenyneu/Cosmos/issues/105

https://github.com/Skyscanner/SkyFloatingLabelTextField/issues/201#issuecomment-381915911

Dziękuję @ Cédric

Pranavan Sp
źródło
1

prawdopodobnie nie masz poprawnego łuku w tej bibliotece, możesz zrobić plik

file /private/var/mobile/Containers/Bundle/Application/3FC2DC5C-A908-42C4-8508-1320E01E0D5B/testapp.app/Frameworks/libswiftCore.dylib

i powinno pokazać ci archiwa, które są w tej bibliotece ... Nie jestem pewien, w jaki sposób łączysz, ale prawdopodobnie nie jest to właściwy sposób (jeśli libswiftcore jest biblioteką fabryczną, jeśli jest to jakaś dodatkowa biblioteka, to prawdopodobnie nie jest poprawnie skompilowany)

Grady Player
źródło
Witam, dziękuję za odpowiedź, mam pytanie. W odpowiedzi, którą powiedziałeś, powinna pokazać ci łuki, które są w tej bibliotece. jak to pokazujesz.
Satsuki
polecenie nazywa się plik ... ale myślę, że musisz znaleźć lokalną wersję na swoim Macu, a nie ścieżkę w telefonie ...
Grady Player
1

Ja też miałem ten problem, jednak nic nie próbowałem powyżej iw kilku innych postach nie działało ... poza tym.

U mnie zmieniłem identyfikator pakietu, ponieważ mamy inny identyfikator pakietu na potrzeby dystrybucji i programowania.

Mój sprzęt jest dozwolony w tym przepisie, a moje konto zespołu jest ważne, ale wyrzucało powyższy błąd w innej strukturze.

Okazuje się, że musiałem całkowicie usunąć starą wersję aplikacji z telefonu. I nie tylko usuwając go w standardowy sposób.

Rozwiązanie :

  1. Upewnij się, że telefon docelowy jest podłączony
  2. w menu xcode kliknij [Okno> Urządzenia]
  3. wybierz urządzenie docelowe w menu po lewej stronie.
  4. Po prawej stronie będzie lista aplikacji w Twoim urządzeniu. Znajdź aplikację, którą próbujesz przetestować, i usuń ją.

Najwyraźniej po zainstalowaniu tej samej aplikacji w tym samym zespole pod innym identyfikatorem pakietu, jeśli nie zaczynasz całkowicie od zera, istnieją odniesienia do frameworków, które się mylą.

Mam nadzieję, że to komuś pomoże.

Christopher Wade Cantley
źródło
Mój identyfikator pakietu nie zmienił się. Żadna z powyższych sugestii nie rozwiązała problemu (-> Wyczyść; ręczne usuwanie; zrestartuj wszystko; i za każdym razem ręcznie usuwaj aplikację z iPhone'a; i więcej). Po prostu podążanie za sugestiami Christophera, naprawione, myśli natychmiastowo, bez ponownego czyszczenia. [iPhone 5; iOS 9.3.5; Xcode 7.3]
marco
1

Właśnie wyczyściłem projekt i Clean Build Folderprzez alt Product menu

Edward Ashak
źródło
Skrót do czyszczenia folderu kompilacji: alt + cmd + shift + k
Ori
1

Poniższe kroki zakończyły się sukcesem.

1) W bibliotece dynamicznej nazwa instalacji musiała być „@loader_path”

2) W głównym projekcie ścieżka wyszukiwania Runpath musi mieć postać „@loader_path” i „@ loader_path / Frameworks”

3) Z widoku używanego pęku kluczy -> pokaż wygasłe certyfikaty i usuń wszystko.

4) Usunięto certyfikat dystrybucji i ponownie zainstalowano.

5) Pobrano developer.apple.com/certificationauthority/AppleWWDRCA.cer i zainstalowano.

czarna włócznia
źródło
1

Niedawno miałem ten problem. Próbowałem wszystkich możliwych rozwiązań, ale nic nie działało. Na koniec po prostu zamknąłem Xcode, usunąłem certyfikaty z pęku kluczy i zainstalowałem wszystko świeże i zrestartowałem mac. Na szczęście zadziałało jak urok :)

ZATRZYMAĆ
źródło
1

Miałem ten sam problem i udało mi się go naprawić, ponownie pobierając plik WWDR (Apple Worldwide Developer Relations Certification Authority). Pobierz stąd :

i ustaw na Zawsze ufaj pękowi kluczy. Zmiana naUse System Default

to działa dla mnie, mam nadzieję, że to ci pomoże

voidxin
źródło
1

W moim przypadku pęk kluczy wyświetla certyfikat jako niezaufany. Aby rozwiązać ten problem, ustawiłem opcje zaufania certyfikatu na „Zawsze ufaj”. Ustawienie certyfikatu na „Zawsze ufaj” było główną przyczyną awarii. Nie udało mi się zainstalować aplikacji na urządzeniu. Rozwiązałem ten problem, ustawiając opcję zaufania na „Domyślne ustawienia systemu” zamiast „Zawsze ufaj”. To zadziałało dla mnie.

Roshni
źródło
1

Te same objawy występują, jeśli pracujesz w Xamarin Studio i odwołujesz się do przenośnej biblioteki, dla której musisz wykonać przynętę PCL i zmienić sztuczkę. Dzieje się tak, jeśli projekt odniesienia jest nieaktualny w odniesieniu do biblioteki, do której się odwołuje. Odkryłem, że zaktualizowałem moją wspólną bibliotekę do nowszej struktury, zaktualizowałem moje pakiety, ale nie zaktualizowałem moich pakietów iOS, aby pasowały. Aktualizacja pakietów rozwiązała ten błąd za mnie.

Senator
źródło
0

Możesz zregenerować certyfikat i ponownie uruchomić iPhone'a.

Ta praca dla mnie, mam nadzieję, że to pomoże.

Joffrey Outtier
źródło
Proszę wyjaśnij, jak to zrobiłeś.
TDM
0

Rozwiązuję problem, sprawdzając moje lokalne pęki kluczy. Zachowaj login. Pęku kluczy ma odpowiedni certyfikat

Bill Xie
źródło
Witamy w Stack Overflow! To nie daje odpowiedzi na pytanie. Aby skrytykować lub poprosić autora o wyjaśnienie, zostaw komentarz pod jego postem - zawsze możesz komentować własne posty, a gdy zdobędziesz wystarczającą reputację , będziesz mógł komentować każdy post. Jeśli masz podobne, ale inne pytanie, zadaj nowe pytanie odnoszące się do tego, jeśli pomoże to w dostarczeniu kontekstu.
ddb
0

Musisz ustawić certyfikat (tylko certyfikat, a nie profil obsługi administracyjnej) dla każdej dynamicznej struktury, którą łączysz (bezpośrednio lub pośrednio) w swoim projekciewprowadź opis obrazu tutaj

Mayur Kothawade
źródło
0

W moim przypadku po usunięciu wszystkich certyfikatów utworzonych przez Xcode i pobranych. Niech xcode 8.1 zarządza certyfikacją aplikacji, działa dobrze !!! Mam nadzieję, że to może komuś pomóc.

shujucn
źródło
0

Napotkałem ten problem TYLKO na symulatorze. Wygląda na to, że jest to związane z niektórymi nieprawidłowymi uprawnieniami w naszej aplikacji, ale problem nie pojawia się, gdy uruchamiamy na urządzeniu.

bkbeachlabs
źródło
0

Rozwiązałem za pomocą tych sztuczek.

Krok 1:

Przejdź do ustawień kompilacji projektu i dodaj opcję @ executable_path / Frameworks to Runpath Search Paths

Krok 2:

Przejdź do ustawień kompilacji docelowej i dodaj @ executable_path / Frameworks do opcji Runpath Search Paths i Framework Search Paths.

wprowadź opis obrazu tutaj

Krok 3:

Ponowne pobranie WWDR (Apple Worldwide Developer Relations Certification Authority), ustaw opcję Użyj domyślnych ustawień systemu jako opcję.

Krok 4:

Usuń wszystkie dane pochodne za pomocą terminala

rm -rf ~ / Library / Developer / Xcode / DerivedData / *

Krok 5 :

Usuń wszystkie certyfikaty i zainstaluj je ponownie w pęku kluczy. Włączyłem opcję Użyj domyślnych ustawień systemu.

Krok 6:

Uruchom ponownie Xcode.

AG
źródło
0

napotkał ten sam problem

  1. mój certyfikat programisty stracił ważność, więc utworzono nowy certyfikat programisty i pobrać
  2. wyczyść i uruchom ponownie xcode to działa dla mnie
Midhun Narayan
źródło
0

Napotkałem ten problem z XCode 9. Nic z powyższego nie wyszło. To załatwiło sprawę dla mnie:

Project > Build Settings > Swift Compiler - Search Path: Setting "Import Paths"do $(PROJECT_DIR)(rekurencyjnie)

ggs
źródło
0

To rozwiązało mój błąd-

Ponowne pobranie WWDR (Apple Worldwide Developer Relations Certification Authority), ustaw opcję Użyj domyślnych ustawień systemu jako opcję.

DRP
źródło
0

W moim przypadku był to problem z jednym z kapsuł, których używałem. Skończyło się na usunięciu tego zasobnika i ręcznym umieszczeniu z niego kodu w moim projekcie.

radthemad4
źródło