Jednak ponownie skompilowałem framework przy użyciu tego samego Xcode i nadal daje mi ten błąd.
- Podstawowy pakiet SDK iOS 11.1 dla obu
- Swift Language Version Swift 4.0 dla obu
- Nie używam Pods / Carthage
Mam nadzieję, że ktoś może wiedzieć
Jednak ponownie skompilowałem framework przy użyciu tego samego Xcode i nadal daje mi ten błąd.
Mam nadzieję, że ktoś może wiedzieć
Odpowiedzi:
Aktualizacja:
W przypadku wersji Xcode:
Ten błąd (i podobne błędy dotyczące Swift 4.1, 4.2 itd.) Wystąpi podczas otwierania projektu z Xcode 9.1, 9.2, 9.3, 9.4, 10 itd., Który korzysta ze struktur zbudowanych przy użyciu wcześniejszych narzędzi Xcode.
Aby rozwiązać ten problem, zaktualizuj i carthage update --platform iOS
odbuduj struktury za pomocą Carthage ( ), Cocoapods ( pod update
lub pod install
) lub ręcznie, za pomocą nowych zaktualizowanych narzędzi Xcode. Narzędzia powinny być aktualizowane automatycznie podczas aktualizacji Xcode, ale jeśli nie, możesz wykonać kroki opisane poniżej w oryginalnej odpowiedzi.
Może być również konieczne wyczyszczenie projektu cmd + shift + k
i prawdopodobnie folderu kompilacji, cmd + option + shift + k
aby Xcode nie używał buforowanych kompilacji platformy.
W niektórych przypadkach może być również konieczne usunięcie folderu danych pochodnych (można go łatwo znaleźć, przechodząc do Preferencje Xcode -> Lokalizacje -> Folder danych pochodnych ( dzięki Stunner )
W przypadku wersji beta Xcode:
Zobacz oryginalną odpowiedź poniżej, a następnie wykonaj powyższe kroki.
Oryginalna odpowiedź:
Prawdopodobnie nadal masz narzędzia xcodebuild ustawione na Xcode 9.0, które kompilują się ze Swift 4.0 i są niezgodne z Xcode 9.1 beta Swift 4.0.1.
Sprawdź w terminalu za pomocą polecenia:
xcodebuild -version
Lub po prostu przejdź do preferencji Xcode -> Lokalizacje i sprawdź / zmień narzędzia wiersza poleceń na Xcode 9.1. W takim razie powinieneś być ustawiony.
Swift Language Version
do Swift 4
nich. Wtedy zadziałało.
Mój problem był spowodowany tym, że zewnętrzna struktura nie była kompilowana dla Swift 4.0.2. Dodałem ten plik przez Carthage , więc uruchomiłem:
carthage update --platform iOS
A potem wyczyszczenie cmd + shift + k
folderu projektu i kompilacji cmd + option + shift + k
oraz usunięcie folderu danych pochodnych (po prostu przeniesienie go do kosza również działa) działało dla mnie.
W moim przypadku pobrałem wersję beta xCode 11, aby przetestować SwiftUI. Kiedy uruchamiam projekt, pojawia się błąd „Moduł skompilowany w Swift 5.1 nie może być zaimportowany przez kompilator Swift 5.0.1: ...” .
Aby rozwiązać ten problem. Zmieniłem narzędzie wiersza poleceń xCode na nowe narzędzie wiersza komentarzy xCode 11. Następnie możesz utworzyć nowy projekt xcode za pomocą SwiftUI.
Xcode -> Preferencje -> Lokalizacja -> Narzędzie wiersza poleceń XCode
mam nadzieję, że pomoże to komuś, kto chce przetestować nowy freamework :)
Zainstaluj Xcode Toolchain określonej wersji Xcode, która pracowała dla Ciebie stąd .
Łańcuch narzędzi Xcode zawiera kopię kompilatora, lldb i innych powiązanych narzędzi potrzebnych do zapewnienia spójnego środowiska programistycznego do pracy w określonej wersji Swift.
Otwórz preferencje Xcode, przejdź do Components> Toolchains i wybierz zainstalowany Swift toolchain.
Umożliwi to skompilowanie i uruchomienie aplikacji na razie.
Trafiłem na ten problem z Xcode 10 beta, który dodaje Swift 4.2. Mój problem nie był związany z Kartaginą ani żadnymi zewnętrznymi zależnościami.
Przejdź do YourTarget > Build Settings > Swift Language Version
dla wszystkich swoich celów Xcode.
Moje były ustawione na Swift 4
.
Po dodaniu fazy tworzenia kopiowania plików zacząłem otrzymywać błąd
: 0: błąd: moduł skompilowany ze Swift 4.1.2 nie może zostać zaimportowany przez kompilator Swift 4.2: /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule
Polecenie MergeSwiftModule nie powiodło się z niezerowym kodem zakończenia
I następnie ustawić każdy cel na Swift Language Version
celu Swift 4.2
, który wyeliminował ten błąd.
Nie jestem jednak pewien, dlaczego ten błąd wystąpił w pierwszej kolejności, ponieważ ustawienie wszystkich celów Swift 4
powinno być równie ważne.
Build Settings
W moim przypadku (Xcode 9.2):
Poszedłem do Xcode Preferences > Locations > Derived Data
Następnie usunąłem dane i wykonałem czystą kompilację i wszystko było w porządku.
W moim przypadku użyłem CocoaPods z wtyczką cocoapods-binary
do wstępnego kompilowania bibliotek do plików binarnych. Po uaktualnieniu Xcode z 10 do 11 Xcode wyświetla ten błąd:
Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler
Naprawiam to, usuwając /Pods
katalog i uruchamiając pod install
.
W moim przypadku ponownie skompilowałem framework z dowolną wersją, na którą narzekał.
Aby ponownie skompilować, uruchom pod update
lub zaktualizuj Kartaginę (której kiedykolwiek używasz) i skompiluj projekt.
Następnie wyszukaj strukturę w wyszukiwarce. Skopiuj i wklej theFramework.framework
do swojego projektu i upewnij się, że „Kopiuj elementy w razie potrzeby”. Zbuduj projekt ponownie i powinien działać.