ios - fbsdkloginkit - Xcode 9: el módulo compilado con Swift 3.1 no se puede importar en Swift 4.0
login button facebook swift (14)
Después de actualizar a Xcode 9, intenté construir uno de mis proyectos.
Yo uso el pod de FacebookLogin . Tengo un error del compilador en FacebookLogin / LoginButton.swift
@testable import FacebookCore
❌ Module compiled with Swift 3.1 cannot be imported in Swift 4.0
En la configuración de compilación de mi objetivo, la versión del idioma Swift está configurada en Swift 3.2 .
¿Supongo que tengo que esperar a que Facebook actualice su pod? ¿O alguna otra sugerencia?
Gracias !
Carpeta de compilación limpia
Cmd + option + shift + K
Esto funciona para mi.
1.limpia tu proyecto en Xcode 8
2.Construye o ejecuta tu proyecto en Xcode 9
Hacer una "carpeta de compilación limpia" y reiniciar Xcode 9 me limpió el error. Además, el error no impidió que la aplicación se ejecutara en mi dispositivo o en el simulador.
Limpié el proyecto en Xcode 9, y luego ejecuté la aplicación, funciona.
Me encontré con el mismo problema en Xcode 9 Beta 3, que apunta a ''Alamofire'' e intenté algunas soluciones diferentes, la más fácil que encontré es
1. CMD+SHIFT+K to clean the build
2. Restart Xcode 9 <-- make sure you do this step, that''s critical. `
Para mi caso, el pod real hace referencia a un zip estático con binarios precompilados que apuntan a Swift 3.1. Entonces, la única solución es reconstruir el marco con la fuente de xcode 9.
Si usa Cartago , abra la terminal y;
carthage update --platform iOS --no-use-binaries
Si usa Pod , abra la terminal y;
pod update
(Además, si no funciona en el pod, puede cambiar SWIFT_VERSION en el podfile Ej:
config.build_settings[''SWIFT_VERSION''] = ''3.2''
)
Después;
Abra Xcode y use;
Command+Option+Shift+K
Si usa desde Pod:
-
En
Podfile
comentar Facebook Pod dePodfile
-
instalación de pod
-
En
Podfile
descomenta el pod de Facebook -
instalación de pod
- Ejecute nuevamente su proyecto
Tal vez puedas limpiar el objetivo antes de construirlo. Funciona bien para mí.
Tuve el mismo problema con Xcode 9 GM y esto resolvió mi problema: eliminarlo del proyecto y arrastrarlo nuevamente a "Binarios incrustados".
Xcode 9 viene con un compilador Swift 4 que comprende Swift 3.2 y Swift 4, incluso te permite mezclar y combinar entre las 2 versiones. Lamentablemente, otras versiones no son compatibles.
Incluso si configura su idioma en Swift 3.2, utiliza el compilador Swift 4.
Si usa cocoapods, puede agregar esto al final de su archivo de pod para forzar a los pods a usar Swift 3.2 o 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
Alternativamente, puede colocar los archivos del pod directamente en su proyecto temporalmente, hasta que FacebookLogin se actualice a Swift 3.2 o 4.
Nota: Editado en base a los comentarios de Matt
goto xcode DerivedData, luego elimine todos los archivos y recompile su proyecto. funciona para mi
y el directorio predeterminado de DerivedData es: ~ / Library / Developer / Xcode / DerivedData.
yo tengo
pod ''FBSDKCoreKit''
pod ''FBSDKLoginKit''
pod ''FBSDKShareKit''
en mi proyecto e
import FBSDKLoginKit
, después de limpiar el objetivo no tuve ningún problema
Debido a que el pod que está utilizando es rápido y es un pod beta, es probable que tenga algunos problemas con el compilador swift 4, por el momento debe usar la versión del objetivo c.
Actualizar:
La solución también se probó y funcionó en Swift 4.2 y Xcode 10.
Original:
Me gustaría agregar que si está utilizando Carthage para compilar un módulo en Swift 3.2, debe ir a un terminal y ejecutar:
sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer
Para usar las herramientas de línea de comandos de Xcode 9, puede ejecutar:
carthage update NameOfTheLibrary --platform iOS --no-use-binaries
Esto compilará la biblioteca con sus herramientas de línea de comando actuales, puede ser un poco lento pero ahora el proyecto debería compilarse.
Nota
Para revertir y usar sus herramientas de línea de comandos Xcode estables, simplemente ejecute:
sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer