Odpowiedzi:
Dla mnie żadne z poprzednich rozwiązań nie zadziałało. Odkryliśmy, że ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES
w ustawieniach kompilacji istnieje flaga (we wcześniejszych wersjach: „Osadzona zawartość zawiera kod Swift”), która musi być ustawiona na TAK. Domyślnie NIE było!
Ten błąd może wystąpić, jeśli coś poszło nie tak podczas konwersji projektu Objective-C, aby rozpocząć korzystanie z Swift. Problem polega na tym, że ustawienia kompilacji Linkera nigdy nie zostały poprawnie skonfigurowane, więc musisz to zrobić ręcznie. Wyszukaj ustawienie kompilacji Ścieżki wyszukiwania Runpath i ustaw je na:
$(inherited) @executable_path/Frameworks
EDYCJA: Powinienem również dodać, że ostatnio pojawiło się wiele błędów spowodowanych czymś zupełnie innym - Apple dokonało zmiany w samym Swift, zaczynając od Xcode 6.1 lub 6.1.1. Wydaje się, że jedynym rozwiązaniem jest zamknięcie Xcode, zniszczenie certyfikatów w Keychain Access, przejście do Centrum użytkowników i usunięcie wszystkich certyfikatów i profili (z wyjątkiem profili aplikacji w Sklepie - nie można ich usunąć), a następnie uruchomienie cały proces żądania certyfikatu od zera.
Nie jestem do końca pewien, dlaczego pytanie to jest dyskutowane, miałem również ten problem, kiedy po raz pierwszy spróbowałem użyć Swift z istniejącym projektem. Ponowne uruchomienie Xcode również naprawiło to dla mnie.
Długo szukałem tego problemu. 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 masz do czynienia z tym problemem dzięki nowemu projektowi Swift, Rozwiązanie 4 będzie dla Ciebie najlepsze.
Uruchom ponownie Xcode, a następnie komputer i iPhone'a
Przejdź do ustawień kompilacji projektu i ustaw Always Embed Swift Standard Libraries
(poprzednio Embedded Content Contains Swift Code
) flagę naYES
Przejdź do ustawień kompilacji projektu i dodaj @executable_path/Frameworks
do Runpath Search Paths
opcji
Jeśli żadna z powyższych czynności nie zadziała, to powinno. Apple wydaje się być łatkami na ninja, jak wspomniano w poście AirSign
Na certyfikatach InHouse
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 powinieneś po prostu odtworzyć certyfikat i przepis
@executable_path/../Frameworks
gdzie wymagają tego projekty iOS bez ..
pośrodku. Zmiana tej wartości jest ważna, jeśli cel został przekonwertowany z jednego systemu operacyjnego na drugi.
W moim przypadku próbowałem zaimportować niestandardową platformę i otrzymałem podobny błąd. Okazuje się, że musiałem zaimportować platformę do wbudowanych plików binarnych, a nie do połączonych struktur i bibliotek.
Osadzone pliki binarne znajdują się w obszarze Ustawienia projektów -> -> Ogólne
Dla programistów, którzy mieli ten problem z kompilacjami dystrybucji Adhoc / Enterprise,
Utwórz certyfikat produkcyjny z portalu deweloperskiego, a następnie ponownie wygeneruj profil dystrybucji. Pobierz i zainstaluj oba na komputerze Mac. Upewnij się, że wybrałeś odpowiedni profil w ustawieniach kompilacji Xcode i przebuduj aplikację.
Rozwiązanie 5:
W moim przypadku wszystkie rozwiązania wymienione w odpowiedzi na accfews były bardzo pomocne, ale żadne z nich nie zadziałało. Rozwiązałem problem, dodając moją szybką bibliotekę w sekcji „Osadzone pliki binarne” w sekcji „Ogólne” celu mojego projektu. Być może wynika to z faktu, że w mojej przestrzeni roboczej umieściłem moją szybką platformę? Cokolwiek teraz się kompiluje! Przygotuj się Szybko, jestem tutaj!
Dla mnie problem wynikał z faktu, że mój urząd certyfikacji Apple Worldwide Relations Relationship był nieprawidłowy.
Pobierz go stąd: https://developer.apple.com/certificationauthority/AppleWWDRCA.cer
Przeciągnij i upuść w Dostęp do pęku kluczy, wyczyść projekt i uruchom.
Miałem projekt Obj-C, w którym zacząłem dodawać szybkie pliki źródłowe. Następujące rozwiązało problem dla mnie:
RUNPATH SEARCH PATHS = $(inherited) @executable_path/Frameworks
EMBEDDED CONTENT CONTAINS SWIFT = YES
Właśnie utworzyłem nowy projekt z szablonów Xcode 6.3 i porównałem ustawienia projektu z moim starym oryginalnym projektem.
Spróbuj przytrzymać klawisz Alt, a następnie przejdź do produktu -> czysty folder kompilacji ...
Mam nadzieję, że to pomoże komuś ...
Powodów tego jest wiele. Właśnie spędziłem zabawny weekend, znajdując kolejny problem, który to powoduje (kolejność podpisywania kodu), chciałem stworzyć podsumowującą odpowiedź, która łączy wszystkie możliwe rozwiązania:
DerivedData
i Build
. Sprawdź w Preferencjach lokalizację DerivedData
. Build
powinien znajdować się w folderze projektu.@executable_path/Frameworks
. To takie proste. Jeśli wykonujesz własną kompilację z wiersza poleceń, możesz tworzyć własne .ipa
pliki do przesłania. W takim przypadku musisz upewnić się, że:
SwiftSupport/iphoneos
jest taka sama jak wersja wContents/YourApp.app/Frameworks
Ponieważ Swift nie jest jeszcze kompatybilny binarnie między wersjami, musisz upewnić się, że te wersje są tymi, z których zbudowałeś aplikację. Możesz znaleźć te biblioteki pod /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift/iphoneos
.codesign
bibliotek i plików frameworka ( Frameworks
w .app
folderze), a następnie podpisać całe .app
drzewo. .app
Drzewo musi być podpisana z entitlements.plist
ale nie ram.Mamy nadzieję, że kiedy pojawi się Swift 3.0 i nie będziemy już musieli dołączać Swift do naszych aplikacji, cały problem zniknie.
Miałem ten problem, korzystając z usługi mobilnej Ad Hoc (lub przedsiębiorstwa) z certyfikatem produkcyjnym. Przejście na certyfikat rozwoju i mobileprovision rozwiązało problem.
Mój projekt jest projektem Swift z niektórymi klasami Objective-C. Miałem ten sam problem po podpisaniu przy użyciu starego certyfikatu inHouse (Enterprise).
Poniższe kroki naprawiły to dla mnie.
Runpath Search Paths
ustawienia kompilacji do: $(inherited) @executable_path/Frameworks
. Rozwiązanie 6:
W naszym przypadku certyfikat dystrybucji dla przedsiębiorstw został unieważniony. Wygenerowanie nowego certyfikatu i zaktualizowanie profilu informacyjnego rozwiązało problem.
(Wydaje się, że istnieje wiele różnych przyczyn tego błędu. Mam nadzieję, że to komuś pomoże.)
Napotkałem ten sam problem, ustawienie prawidłowej tożsamości znaku kodowego rozwiązało problem (Ustawienia kompilacji-> Tożsamość podpisywania kodu).
Zgodnie z pytaniem technicznym Apple „Wszystkie certyfikaty programistów Enterprise i standardowe iOS, które są tworzone po wydaniu iOS 8, mają nowe pole Team ID w odpowiednim miejscu, aby umożliwić uruchamianie aplikacji językowych Swift”
Jeśli dodasz trzy frameworki za pomocą osadzonych plików binarnych, zostaną one również dodane do frameworków połączonych i bibliotek. Usuń trzy wpisy w połączonych ramach i bibliotekach rozwiąże problem.
Magiczne metody, takie jak ponowne uruchomienie Xcode i ponowne uruchomienie komputera Mac, nie działają na mnie.
Dodanie frameworka jako „Embedded Binary” zamiast po prostu „Linked Frameworki i biblioteki” - Naprawiono mój problem.
Ustawiłem również opcję Osadzona zawartość zawiera kod szybkiego na TAK.
Uaktualnij do najnowszej wersji OS X (Yosemite)
Po godzinach prób i błędów doszedłem do rozwiązania tego problemu. - Jeśli dotyczy to oczywiście twojego przypadku.
Miałem ten sam problem, dopóki nie zaktualizowałem systemu Mac OS X z Mavericks do Yosemite. - Naprawił mój problem, mam nadzieję, że naprawi również twój
Wypróbowałem wszystkie rozwiązania znalezione w sieci, w tym Apple i nowe certyfikaty. Bezskutecznie.
Jedynym sposobem, w jaki mogłem uruchomić xcode, po 6 miesiącach prób, było utworzenie nowego konta na moim Macbooku.
Zwykle ten błąd zniknie, jeśli dodasz tę bibliotekę do segmentu „Kopiuj pliki” w swoich fazach kompilacji.
Żadne z tych rozwiązań nie działało dla mnie konsekwentnie; po każdych kilku udanych uruchomieniach znowu się nie powiedzie. Dla mnie flaga „Treść osadzona zawiera szybki kod” zawsze była ustawiona na TAK.
Okazuje się, że ustawiłbym Xcode na zgodność z 6.3. Powrót do wersji zgodnej z 3.2 rozwiązał:
Miałem też ten problem, tylko że nie był w stanie go zlokalizować libswiftXCTest.dylib
.
Rozwiązaniem było dodanie XCTest.framework
do celu Testy w Build Phases/Link Binary with Library
. Ten błąd pojawiał się nawet wtedy, gdy próbowałem zbudować główny cel.
Pojawiło się to, gdy dodałem nowy cel rozszerzenia Today z językiem Swift do starego projektu. Naprawiono łatwo, aktualizując projekt do zalecanych ustawień. Xcode 6.0.1
Ten sam problem mam przy użyciu Mavericks, Xcode 6.1.1, testowania na iPhone5 z iOS 8.1.1. Wypróbowałem wszystkie możliwe rozwiązania, w tym nowe certyfikaty i profile udostępniania, ale nic nie pomogło. Wprowadziłem zmiany do Embedded Content Contains Swift Code
iRunpath Search Paths
zarówno na poziomie projektu, jak na poziomie docelowym.
Zainstalowałem teraz Yosemite i bez żadnych dalszych zmian zaczął on działać.
Ten sam problem tutaj, dla mnie było to, że Crashlytics / Fabric / Beta / Twitter / jakkolwiek się nazywają, ładują plik binarny, w którym brakuje osadzonych frameworków. Jeśli stworzyłem archiwum, a następnie wyeksportowałem kompilację Enterprise w standardowy sposób, zadziałałyby urok.
Po miesiącach i miesiącach próbowania wszystkiego tutaj ... Definicja szaleństwa ... uruchomienie Xcode pod nowym użytkownikiem komputera Mac rozwiązało to dla mnie.
Usunąłem ~ / Library / Developer / * i ponownie zainstalowałem Xcode, więc nie mam pojęcia, co jeszcze sformatować, aby działało.
otool