Po aktualizacji do Xcode 9 próbowałem zbudować jeden z moich projektów.
Używam modułu FacebookLogin . Mam błąd kompilatora w FacebookLogin / LoginButton.swift
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
W ustawieniach kompilacji mojego celu wersja językowa Swift jest ustawiona na Swift 3.2 .
Chyba muszę poczekać, aż Facebook zaktualizuje ich pod? Albo jakaś inna sugestia?
Dzięki !
Odpowiedzi:
Aktualizacja:
Rozwiązanie przetestowane również i działające w Swift 5 i Xcode 11.
Oryginalny:
Chciałbym dodać, że jeśli używasz Carthage do kompilacji modułu w Swift 3.2, powinieneś przejść do terminala i uruchomić:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Aby użyć narzędzi wiersza poleceń Xcode 9, możesz uruchomić:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
Spowoduje to skompilowanie biblioteki przy użyciu aktualnych narzędzi wiersza poleceń, może to być nieco powolne, ale teraz projekt powinien zostać zbudowany.
Uwaga
Aby przywrócić i używać stabilnych narzędzi wiersza poleceń Xcode, po prostu uruchom:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
źródło
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
aby zaktualizować biblioteki i powinno być dobrzeXcode 9 jest dostarczany z kompilatorem Swift 4, który rozumie zarówno Swift 3.2, jak i Swift 4, umożliwia nawet mieszanie i dopasowywanie między 2 wersjami. Niestety inne wersje nie są obsługiwane.
Nawet jeśli ustawisz język na Swift 3.2, użyje on kompilatora Swift 4.
Jeśli używasz cocoapods, możesz dodać to na końcu pliku pod, aby zmusić strąki do używania Swift 3.2 lub 4.0:
post_install do |installer| installer.pods_project.targets.each do |target| target.build_configurations.each do |config| config.build_settings['SWIFT_VERSION'] = '3.2' end end end
Alternatywnie, możesz tymczasowo umieścić pliki z kapsuły bezpośrednio w swoim projekcie, dopóki FacebookLogin nie zostanie zaktualizowany do Swift 3.2 lub 4.
Uwaga: zmieniono na podstawie opinii Matta
źródło
Może uda ci się wyczyścić cel, zanim go zbudujesz. U mnie działa dobrze.
źródło
Napotkałem ten sam problem na Xcode 9 Beta 3, który wskazywał na `` Alamofire '' i wypróbowałem kilka różnych rozwiązań, najłatwiejsze, które znalazłem, to
1. CMD+SHIFT+K to clean the build 2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
źródło
Wykonanie „czystego folderu kompilacji” i ponowne uruchomienie Xcode 9 usunęło błąd. Błąd nie zatrzymał również uruchomienia aplikacji na moim urządzeniu lub symulatorze.
źródło
goto xcode DerivedData, a następnie usuń cały plik z niego i ponownie skompiluj projekt. to działa dla mnie.
a domyślny katalog DerivedData to: ~ / Library / Developer / Xcode / DerivedData.
źródło
Jeśli używasz Kartaginy , otwórz terminal i;
Jeśli używasz Pod , otwórz terminal i;
(Również jeśli nie działa w pod, możesz zmienić SWIFT_VERSION w podfile Ex:
config.build_settings['SWIFT_VERSION'] = '3.2'
)
Po;
Otwórz Xcode i użyj;
Command+Option+Shift+K
źródło
config.build_settings
część?Mi to pasuje.
1. Wyczyść swój projekt w Xcode 8
2. Zbuduj lub uruchom projekt w Xcode 9
źródło
Wyczyściłem projekt w Xcode 9, a następnie uruchomiłem aplikację, działa.
źródło
Miałem ten sam problem z Xcode 9 GM i to rozwiązało mój problem: Usuń go z projektu i przeciągnij ponownie do „Osadzonych plików binarnych”.
źródło
pod update
ale bez rezultatu. W końcu dodałem framework bezpośrednio do mojego projektu i dodałem go do moich wbudowanych plików binarnych, które działałyCzysty folder kompilacji
Cmd + option + shift + K
źródło
mam
pod 'FBSDKCoreKit' pod 'FBSDKLoginKit' pod 'FBSDKShareKit'
w moim projekcie i
import FBSDKLoginKit
po wyczyszczeniu celu nie miałem żadnego problemuPonieważ kapsuła, z której korzystasz, działa szybko i jest kapsułą beta, jest prawdopodobne, że wystąpiłyby problemy z kompilatorem Swift 4, więc na razie powinieneś używać wersji z celem
źródło
Jeśli używasz z Pod:
Podfile
komentarzu FacebookLogin podPodfile
odkomentowaniu FacebookLogin podźródło
W moim przypadku - rzeczywisty pod odwoływał się do statycznego zipa z gotowymi plikami binarnymi ukierunkowanymi na Swift 3.1. Więc jedynym rozwiązaniem jest przebudowa frameworka za pomocą kodu źródłowego z xcode 9.
https://github.com/AudioKit/AudioKit/issues/980
źródło