Próbuję uruchomić aplikację Swift na moim iPhonie 4s. Działa dobrze na symulatorze, a mój przyjaciel może z powodzeniem uruchomić go na swoim iPhonie 4s. Mam iOS 8 i oficjalne wydanie Xcode 6.
próbowałem
- Ponowne uruchamianie Xcode, iPhone'a, komputera
- Czyszczenie i odbudowa
- Odwoływanie i tworzenie nowego certyfikatu / profilu udostępniania
- Ścieżki wyszukiwania Runpath to
$(inherited) @executable_path/Frameworks
- Zawartość osadzona zawiera kod Swift: „Tak”
- Identyfikator podpisywania kodu jest programistą
Poniżej znajduje się błąd w całości
dyld: Library not loaded: @rpath/libswiftCore.dylib
Referenced from: /private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/AppName
Reason: no suitable image found. Did find:
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/AppName.app/Frameworks/libswiftCore.dylib: mmap() error 1 at
address=0x008A1000, size=0x001A4000 segment=__TEXT in Segment::map() mapping
/private/var/mobile/Containers/Bundle/Application/LONGSERIALNUMBER/APPLICATION_NAME/Frameworks/libswiftCore.dylib
Odpowiedzi:
Dla mnie żadne z poprzednich rozwiązań nie zadziałało. Odkryliśmy, że w ustawieniach kompilacji istnieje flaga „Zawsze osadzaj szybkie biblioteki standardowe”, którą należy ustawić na TAK. Domyślnie NIE było!
Build Settings > Always Embed Swift Standard Libraries
Po ustawieniu tego wyczyść projekt przed ponownym budowaniem.
Dla zapalonych czytelników najważniejsze wyjaśnienie Najważniejsze jest:
Flaga była wcześniej nazywana
Embedded Content Contains Swift Code
źródło
O dziwo, wszystko, co zrobiłem, to „Wyczyść” mój projekt (shift + cmd + K) i zadziałało. Wydaje się, że jest to związane z certyfikatem.
źródło
Ten błąd pojawił się po usunięciu:
z
Runpath Search Paths
moich ustawień kompilacji. Zastąpienie go naprawiło wszystko ponownie (dzięki Bogu za kontrolę źródła!)Nie wiem, jak się tam dostał, ale wydaje się, że jest on potrzebny, aby plik binarny znalazł wbudowane środowisko wykonawcze Swift.
źródło
@loader_path/../Frameworks
testów jednostkowych systemu macOS i testów jednostkowych systemu@loader_path/Frameworks
iOS.W przypadku urządzenia musisz również dodać dynamiczną strukturę do
Embedded binaries
sekcji naGeneral
karcie projektu.źródło
W Xcode 8 opcja dla
Embedded Content Contains Swift Code
opcji nie jest już dostępna.Został przemianowany na
"Always Embed Swift Standard Libraries = YES"
źródło
Myślę, że to błąd, kiedy certyfikaty są generowane bezpośrednio z Xcode. Aby rozwiązać (przynajmniej w Xcode 6.1 / 6A1052d):
źródło
OK, udostępniam tutaj kolejną przyczynę tego błędu. Zajęło mi to kilka godzin.
W moim przypadku polityka zaufania mojego certyfikatu w Dostępie do pęku kluczy brzmiała Zawsze zaufanie , a zmiana go z powrotem na domyślne rozwiązała problem.
Aby otworzyć okno ustawień certyfikatów, kliknij dwukrotnie certyfikat na liście certyfikatów Dostęp do pęku kluczy.
źródło
Miałem ten problem z uruchomieniem testów Swift (ale nie mojej aplikacji). Okazuje się, że test musiał mieć więcej niż
@executable_path/Frameworks
w jegoRunpath Search Paths
otoczeniu build dla celu badania. Ustawienie Ścieżek wyszukiwania Run Run na następujące działało dla mnie uroku:źródło
carthage copy-frameworks
ponieważ był to zależność wtórna (taka, którą dodałem frameworku, którego użyłem )Ten problem występuje ponownie w Xcode 10.2 . Musisz pobrać i zainstalować następujący pakiet od Apple. Zapewnia obsługę środowiska wykonawczego Swift 5 dla narzędzi wiersza poleceń .
https://support.apple.com/kb/DL1998?locale=en_US
źródło
msvcrt.dll
Trzeba ustawić
Runpath Search Paths
się@executable_path/Frameworks
jak pokazano na poniższym zrzucie ekranu z Ustawienia produkcji:Jeśli masz jakiekolwiek osadzone struktury wykonane w Swift, możesz ustawić
YES
Opcje budowaniaEmbedded Content Contains Swift Code
.źródło
otool -L
albowiem ci dylibowie powiedzieli mi, że już używają@rpath/...
swojej własnej ścieżki. Teraz, ustawiając Ścieżkę wyszukiwania Runpath na ścieżkę tego folderu, mogę uruchomić moje narzędzie i znajdzie dylibs, które są przechowywane w folderze obok niego.@rpath/libswiftAppKit.dylib
. Problem prowadź mnie, aby dowiedzieć się, że muszę dodać SearchPath:@executable_path/../Frameworks/
na podstawie niniejszej instrukcji . Nie mogę powiedzieć, czy dotyczy to tylko struktury mojego projektu. Warto zauważyć, że nie musiałem czyścić DerivedData, aby to ustawienie zadziałało!Myślę, że Apple już to podsumowało w przypadku awarii aplikacji Swift podczas próby odwołania się do biblioteki Swift libswiftCore.dylib
Cytat z technicznych pytań i odpowiedzi QA1886 :
Jak faceci AirSign stwierdzić problem korzenie z brakującym OU atrybut w temacie dziedzinie certyfikatu w domu .
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.
źródło
Załóżmy, że projekt P importuje niestandardową bibliotekę L, a następnie musisz dodać L do
P -> Build Phases -> Embed Frameworks -> +
. To działa dla mnie.źródło
Najłatwiejszy i najłatwiejszy do zignorowania sposób: wyczyść i odbuduj.
To rozwiązało problem po wypróbowaniu powyższych odpowiedzi i nie działało.
źródło
Miałem ten sam problem po przeprowadzce na nowego Maca, a po godzinach, wypróbowując wszystkie sugerowane odpowiedzi w pytaniach, żadne z nich nie działało dla mnie.
Rozwiązaniem było dla mnie zainstalowanie tego brakującego certyfikatu. http://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Tutaj znalazłem odpowiedź. https://stackoverflow.com/a/14495100/976628
źródło
Zmień zasoby kopiowania strąków dla celu z:
do:
źródło
Rozwiązałem, usuwając dane pochodne i tym razem działało poprawnie. Próbowałem z Xcode 7.3.1GM
źródło
Ten komunikat o błędzie może być również spowodowany podczas aktualizacji Xcode (a następnie do nowej wersji Swift), a Twój projekt korzysta ze środowiska zbudowanego / skompilowanego ze starszą / poprzednią wersją Swift.
W takim przypadku przebudowanie frameworka i ponowne dodanie go rozwiąże problem.
źródło
Po wypróbowaniu wszystkiego w końcu dowiedziałem się, że kompilacja nie zawsze zawiera każdy szczegół. Może w celu przyspieszenia procesu ... Aby zapewnić CAŁE opakowanie przed uruchomieniem na urządzeniu, najpierw wykonaj czyszczenie: Shift-Cmd-K. Następnie buduj z: Cmd-B. Następnie uruchom go na swoim urządzeniu. Łatwy. Pozdrawiam wszystkich miłych facetów w tym miejscu!
źródło
W moim przypadku była to tylko nazwa mojego celu:
Zmieniłem nazwę tak: MyApp.something i pojawił się ten sam problem. Ale widziałem w oknie Ustawienia kompilacji, nazwa mojego modułu produktu została zmieniona, tak jak to MyApp-something . Usunąłem kropkę w nazwie docelowej ( MyAppSomething ) i problem zniknął.
źródło
Dla mnie, próbowałem wszystkiego bez powodzenia, co zadziałało, było usunięcie
@executable_path/Frameworks
zPackaging section
(nie wiem jak to się stało się tam w pierwszej kolejności)źródło
Żadne z rozwiązań nie działało dla mnie. Ponowne uruchomienie telefonu naprawiło to. Dziwne, ale zadziałało.
źródło
żadne z tych rozwiązań nie działało, ale kiedy zmieniłem pozwolenie światowego certyfikatu programisty na
Use System defaults
to zadziałało. W linku poniżej umieściłem kroki i zrzuty ekranuZachęcam do zalogowania się w zgłoszeniu błędu Apple, jak wspomniano tutaj, ponieważ Apple naprawdę powinien rozwiązać ten ogromny błąd: https://stackoverflow.com/a/41401354/559760
źródło
Xcode 7.2, iOS 9.2 na jednym urządzeniu, 9.0 na drugim. Oba miały błąd. Nie mam pojęcia, co to spowodowało, ale powyższe rozwiązania dla WWDR były dla mnie poprawne. Zainstaluj ten certyfikat i problem rozwiązany.
https://forums.developer.apple.com/message/43547 https://forums.developer.apple.com/message/84846
źródło
Istnieje wiele odpowiedzi, ale być może moja odpowiedź pomoże komuś pomóc.
Mam ten sam problem. Moja aplikacja działa poprawnie na Symulatorze, ale na urządzeniu uległa awarii podczas aplikacji I Lunches i daje błąd jak wyżej. Wypróbowałem wszystkie odpowiedzi i rozwiązania. W moim przypadku, mój projekt Mam wiele celów. Utworzyłem zduplikowany cel B z celu A. Cel B działa dobrze, podczas gdy cel A ulega awarii. Używam różnych zasobów obrazu dla każdego celu. Po wyszukaniu i zrobieniu google znalazłem coś, co może komuś pomóc.
Aplikacja przestaje się zawieszać, gdy zmieniam nazwę Uruchamiaj zasoby obrazów dla obu aplikacji. np. Target A Launch Image nazwa zasobu LaunchImage A. Target B Nazwa zasobu obrazu lunchu Uruchom obraz B i prawidłowo przypisany w zakładce Ogólne każdego celu. Moje aplikacje działają dobrze.
źródło
Dla mnie budowanie aplikacji Swift z linii poleceń MacOS, która zależała od bibliotek Swift innych firm (np. SQLite), żadne z powyższych rozwiązań nie działało. To, co działało, polegało na bezpośrednim dodaniu następującej ścieżki do ścieżek wyszukiwania Runpath w Ustawieniach kompilacji:
/Applications/Xcode.app/Contents//Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/macosx/
Spowodowało to ostrzeżenie w czasie wykonywania, że Xcode znalazł 2 wersje libswiftCore - co ma sens. Tyle że nieuwzględnienie tej linii spowodowało, że Xcode nie znalazł żadnej wersji libswiftCore.
Tak czy inaczej, zrobi to dla mnie, nawet jeśli nie wydaje się to właściwe - moja aplikacja to narzędzie, którego nie zamierzam rozpowszechniać i przynajmniej działa teraz!
źródło
Mam zainstalowanych wiele wersji Xcode w tym samym czasie. Framework został zbudowany z nowszą wersją Xcode. Aplikacja, którą próbowałem skompilować, była ze starszą wersją Xcode. Kiedy wyczyściłem i skompilowałem zarówno środowisko, jak i aplikację z tą samą wersją Xcode, wtedy wszystko działało.
źródło
Ten podobny błąd zacząłem otrzymywać podczas testowania dodawania pliku S3 za pomocą usług AWS. Poniżej był błąd. dyld: Biblioteka nie załadowana: @ rpath / AWSAutoScaling.framework / AWSAutoScaling
Często szukałem i powyższe rozwiązania również nie są dla mnie pomocne. Poniższy link pomógł mi rozwiązać ten problem.
https://forums.developer.apple.com/thread/21292
Który mówi, aby rozwiązać ten problem, ponownie pobierając WWDR (Apple Worldwide Developer Relations Certification Authority) .
źródło
Jestem na Xcode 8.3.2. Dla mnie problem polegał na tym, że certyfikat AppleWWDRCA był w systemie i pęku kluczy logowania. Usunięto oba, a następnie dodano tylko do pęku kluczy logowania, teraz znów działa dobrze. 2 dni stracone 😭
źródło
Używam Xcode 8.3.3 i Xcode 9.2. Rozwiązaniem dla mnie było przełączenie mojego domyślnego Xcode z 8 na 9 za pomocą Xcode Select:
$ xcode-select --print-path
$ sudo xcode-select -switch /Applications/Xcode-9.2.app
Edycja: W rzeczywistości pomogło nam to, że Xcode 9.2 wykorzystał dane pochodne z Xcode 8.3.3. Nie jest to rozwiązanie, ale przynajmniej pozwala mi iść naprzód z moją pracą.
źródło
Jeśli pojawia się taki błąd:
i użyj CocoaPods w swoim frameworku, a następnie spróbuj edytować
Podfile
i usunąćinherit! :search_paths
zTest
celu, a następnie uruchompod install
ponownie.Aby uzyskać więcej informacji, zobacz https://github.com/CocoaPods/CocoaPods/issues/8868 .
źródło