fbsdkloginkit ios cocoapods facebook-login xcode9-beta swift4

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. `



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:

  1. En Podfile comentar Facebook Pod de Podfile
  2. instalación de pod

  3. En Podfile descomenta el pod de Facebook
  4. instalación de pod

  5. 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