Wygląda na to, że Apple musi ponownie rozważyć 10-letnie powiadomienie o wycofaniu Celu C: ^) To ugryzło mnie teraz w ponad 1 projekcie i w obu są to binarne frameworki trzeciej strony.
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 iOSodbuduj struktury za pomocą Carthage ( ), Cocoapods ( pod updatelub 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 + ki prawdopodobnie folderu kompilacji, cmd + option + shift + kaby 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.
Wyczyściłem również dane pochodne i wyczyściłem projekt, nie wiem, czy to konieczne dla wszystkich, ale wydawało się, że tak jest. Dzięki
Simon
3
Cześć @Zig. Repozytorium, którego używam na github (mattdonnelly / swifter) jest w Swift 4.0, ale oczywiście zostało skompilowane przy użyciu XCode 9.0, więc mam ten problem. Jakie kroki są potrzebne, aby ponownie skompilować czyjś cocoapod na Github dla XCode 9.1 i nowszych?
Mama Josepha Beuysa
1
czy istnieje sposób na dodanie narzędzia wiersza poleceń? Po prostu mam Xcode 9.3 w menu rozwijanym w wierszu poleceń. i ja też mam ten problem
tara tandel
1
Niektóre z moich strąków nie są gotowe na Swift 4.2, dlatego musiałem przypiąć Swift Language Versiondo Swift 4nich. Wtedy zadziałało.
skofgar,
1
Plus 1 za skrót do czyszczenia folderu kompilacji - nie było to coś, co wiedziałem, jak zrobić odręcznie.
Matt
25
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 + kfolderu projektu i kompilacji cmd + option + shift + koraz usunięcie folderu danych pochodnych (po prostu przeniesienie go do kosza również działa) działało dla mnie.
w istocie jest to zasadniczo rozwiązanie. To samo wydarzyło się dzisiaj (18 kwietnia), dzięki najnowszej szybkiej aktualizacji Apple! :)
Fattie
cmd + option + shift + k, co załatwiło sprawę po aktualizacji Kartaginy. Dzięki!
Leonardo Leite
15
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.
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.
Po 2 dniach poszukiwań i próbuje wszelkich możliwych rozwiązanie z aktualizacją Kartaginie, bootstrap, ustawień językowych Swift itp znalazłem właściwą odpowiedź tutaj :)
memresubasi
7
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 Versiondla 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 Versioncelu 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 4powinno być równie ważne.
W moim przypadku użyłem CocoaPods z wtyczką cocoapods-binarydo wstępnego kompilowania bibliotek do plików binarnych. Po uaktualnieniu Xcode z 10 do 11 Xcode wyświetla ten błąd:
Module compiled with Swift5.0.1 cannot be imported by the Swift5.1 compiler
Naprawiam to, usuwając /Podskatalog i uruchamiając pod install.
W moim przypadku ponownie skompilowałem framework z dowolną wersją, na którą narzekał.
Aby ponownie skompilować, uruchom pod updatelub zaktualizuj Kartaginę (której kiedykolwiek używasz) i skompiluj projekt.
Następnie wyszukaj strukturę w wyszukiwarce. Skopiuj i wklej theFramework.frameworkdo swojego projektu i upewnij się, że „Kopiuj elementy w razie potrzeby”. Zbuduj projekt ponownie i powinien działać.
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
lubpod 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:
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.
źródło
Swift Language Version
doSwift 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:
A potem wyczyszczenie
cmd + shift + k
folderu projektu i kompilacjicmd + option + shift + k
oraz usunięcie folderu danych pochodnych (po prostu przeniesienie go do kosza również działa) działało dla mnie.źródło
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 :)
źródło
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.
źródło
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
I następnie ustawić każdy cel na
Swift Language Version
celuSwift 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.źródło
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.
źródło
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ącpod install
.źródło
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ć.źródło