Después de actualizar a Xcode 9, traté de construir uno de mis proyectos.

Yo uso el FacebookLogin pod.
Tengo un error del compilador en FacebookLogin/LoginButton.swift

@testable import FacebookCoreModule compiled with Swift 3.1 cannot be imported in Swift 4.0

En mi objetivo es construir la configuración, el Swift versión de idioma se establece en Swift 3.2.

Xcode 9 : Módulo compilado con Swift 3.1, no puede ser importado en Swift 4.0

Supongo que tengo que esperar a Facebook para actualizar su vaina ? O cualquier otra sugerencia ?

Gracias !

InformationsquelleAutor Arnaud | 2017-06-06

14 Comentarios

  1. 72

    Actualización:

    Solución también ha sido probado y de trabajo en Swift de Xcode 5 y 11.

    Original:

    Me gustaría añadir que si usted está utilizando Cartago para compilar un módulo en Swift 3.2 usted debe ir a una terminal y ejecutar:

    sudo xcode-select --switch /Applications/Xcode-beta.app/Contents/Developer

    Utilizar el Xcode 9 herramientas de línea de comandos, a continuación, puede ejecutar:

    carthage update NameOfTheLibrary --platform iOS --no-use-binaries

    Se va a compilar la biblioteca con sus actuales herramientas de línea de comandos, puede ser un poco lento, pero ahora el proyecto debe generar.

    Nota

    A revertir y utilizar su estable Xcode herramientas de línea de comandos ejecute:

    sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer
    • Tuve el mismo error con Algolia marco, y construir con cartago y Xcode 9 de comandos de la herramienta funcionaba bien ! Gracias
    • Trabajó para mí el uso de SwiftyJson. Gracias!
    • Trabajó para mí el uso de Alamofire
    • Hola @xaviPedrals, necesito de su ayuda… estoy tratando de ejecutar ese proyecto «github.com/swiftingio/SingTest«, pero conseguir que el error «error en el Módulo compilado con Swift 3.1 no puede ser importado por el Swift 4.2.1 compilador: /Users/aliapple/Desktop/SingTestByAhtazaz/Pods/AudioKit/iOS/AudioKit.framework/Modules/AudioKit.swiftmodule/arm64.swiftmodule». Me pueden ayudar en esto?
    • Hola @Sr. Ahtazaz que es un proyecto de hace 2 años, así que probablemente fue hecho y compilado en Swift 3, en primer lugar el proyecto deberá ser actualizado para Swift 4 o 5, a continuación, intente ejecutar la cartago comando carthage update NameOfTheLibrary --platform iOS --no-use-binaries a la actualización de las bibliotecas y usted debería estar bien
    • Gracias por la rápida respuesta de @xaviPedrals. He actualizado este proyecto en swift 4.2. Todas las cosas son Perfectas, pero llegar a esto «»Módulo compilado con Swift 3.1 no puede ser importado por el Swift 4.2.1 compilador: /Users/aliapple/Desktop/SingTestByAhtazaz/Pods/AudioKit/iOS/AudioKit.framework/Modules/AudioKit.swiftmodule/arm64.swiftmodule»» ERROR en el POD AudioKit.
    • Tengo sus instrucciones, pero no saben cómo utilizar cartago.. yo solo familiarizado con las Vainas no se cartago… ¿me Pueden ayudar con eso. Estaré muy Agradecido a usted Señor.
    • después de ejecutar el comando en la Terminal, tienes «-bash: cartago: comando no encontrado»
    • tengo la actualización de th eproject en la última Swift 4.2, pero ahora sólo es cuestión de AudioKit… Entonces, ¿cómo puedo actualizar AUDIOKIT Vaina en la última versión?
    • En realidad el problema es que, en la actualidad hay 3 VAINAS Instalado en este proyecto. pod ‘TuningFork’ pod ‘UICircularProgressRing’ pod ‘ResearchKit’ TuningFork depende de AudioKit & Chronos-Swift. Así que cuando he instalado TuningFork, que se instala automáticamente AudioKit & Chronos-Swift (pero con la vieja versión de Idioma). Así que, ¿cómo puedo actualizar sólo AUDIOKIT & CHRONOS-SWIFT POD con TuningFork?

  2. 26

    Xcode 9 viene con un Swift 4 compilador que entiende tanto de Swift 3.2 y swift 4, que incluso le permite mezclar y combinar entre las 2 versiones. Por desgracia, las otras versiones no son compatibles.

    Incluso si tu lenguaje Swift 3.2, se utiliza el Swift 4 compilador.

    Si usted está usando cocoapods, usted puede agregar esto al final de su vaina de archivos para forzar a que las vainas del uso de Swift 3.2 4.0 o:

    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, usted puede poner los archivos de la vaina directamente en el proyecto temporalmente, hasta que FacebookLogin se actualiza a Swift 3.2 o 4.

    Nota: Edición basada en la de Matt comentarios

    • FYI – Esto es un poco demasiado agresivo obligando a todas las vainas a Swift 4.0. Si la vaina es de Swift 3 compatible, usted puede de manera segura golpe a Swift 3.2. Golpes a 4.0 será más que probable causa del compilador de problemas para muchas vainas.
  3. 19

    Tal vez usted puede limpiar el destino antes de construirla.
    Funciona muy bien para mí.

    • No trabajo para mí, todavía en busca de otra solución.
  4. 11

    Me encontré con el mismo problema en Xcode 9 Beta 3, que apunta a ‘Alamofire’ y trató de un par de diferentes soluciones, la más sencilla que he encontrado es

    1. CMD+SHIFT+K to clean the build
    2. Restart Xcode 9 <-- make sure you do this step, that's critical. `
    • Es de 2017 y todavía tenemos que reiniciar Xcode para resolver errores. Gracias, de Apple. Gracias.
  5. 10

    Hacer una «limpia carpeta de compilación» y reiniciar Xcode 9 limpiado el error para mí. También el error de no dejar que se ejecute la aplicación en mi dispositivo o el simulador.

    • «limpiar la carpeta de compilación»: Para acceder a la opción de abrir el menú de Productos y el uso de la tecla de Opción para mostrar la generación Limpia la opción Carpeta.
  6. 8

    goto xcode DerivedData directorio, a continuación, quite todos los archivos dentro de ella y volver a compilar el proyecto . es el trabajo para mí .

    y predeterminado DerivedData directorio es :~/Library/Developer/Xcode/DerivedData.

  7. 8

    Si el uso de Cartago , Abrir terminal y;

    carthage update --platform iOS --no-use-binaries

    Si el uso de Pod , Abrir terminal y;

    pod update

    (También si no trabajo en el pod, puede cambiar SWIFT_VERSION en podfile Ex:

    config.build_settings['SWIFT_VERSION'] = '3.2'

    )

    Después;

    Abrir Xcode y el uso;

    Command+Option+Shift+K

    Xcode 9 : Módulo compilado con Swift 3.1, no puede ser importado en Swift 4.0

    • Por favor, no publicar las respuestas idénticas a las múltiples preguntas. Post una buena respuesta, y luego votar/bandera para cerrar las otras preguntas como duplicados. Si la pregunta no es un duplicado, adaptar sus respuestas a la pregunta. Consulte meta.stackexchange.com/q/104227/311792
    • Lo explico todo en mi respuesta y obras
    • Estoy usando cartago y esta es la solución que funcionó para mí. cartago actualizar «Mi Marco» no se corte. Tuve que actualizar todo el catálogo de cartago. Se llevó para siempre, pero hizo el truco.
    • Esta solución también trabajó para mí. Para ser el doble de seguro asegúrese de cerrar y volver a iniciar xcode después de la limpieza de la carpeta de compilación con Comando+Opción+Mayús+K.
    • ¿De dónde viene el config.build_settings porción ir?
  8. 4

    Funciona para mí.

    1.Limpia tu proyecto en Xcode 8

    2.Construir o ejecutar el proyecto en Xcode 9

  9. 3

    He limpiado el proyecto en Xcode 9 y, a continuación, ejecutar la aplicación, funciona.

  10. 2

    Tuve el mismo problema con Xcode 9 GM y esta solucionado mi problema:
    Elimina del proyecto y arrastre de nuevo en «Incrustado Binarios».

    • Tuve el problema con Alamofire 4.5.1 y probado de todo en esta página a través de pod update pero sin resultado. Al final he añadido el marco directamente a mi proyecto y añadido a mi Incrustado Binarios que trabajó
  11. 1

    He

    pod 'FBSDKCoreKit'
    pod 'FBSDKLoginKit'
    pod 'FBSDKShareKit'

    en mi proyecto y import FBSDKLoginKit, después de la limpieza del destino yo no tenía ningún problema

    Desde el pod está utilizando es en swift y es una beta pod, es probable que usted tiene algunos problemas con el swift 4 compilador, usted debe utilizar el objetivo-c versión de la vaina por el momento

  12. 0

    Si el uso del Pod:

    1. En Podfile comentario FacebookLogin pod
    2. pod instalar

    3. En Podfile elimine FacebookLogin pod
    4. pod instalar

    5. Ejecutar de nuevo el proyecto
  13. 0

    Para mi caso – el real de la vaina de referencia estático de un zip con los binarios precompilados de orientación swift 3.1.
    Así que la única solución es reconstruir el marco con la fuente de xcode 9.

    https://github.com/AudioKit/AudioKit/issues/980

    • Tengo un problema similar con AudioKit que se hace referencia en el interior de las vainas. Sin embargo, su solución se refiere a un build_frameworks.sh se encuentra en el ‘Marco’ por Favor, añadir más detalles. No puedo encontrar un archivo.
    • trate de apuntar el podfile a una versión más reciente. una versión que ha sido construido con la última versión de xcode 9 – / no script de generación de los cambios necesarios. github.com/AudioKit/AudioKit/releases
    • Gracias por la sugerencia. Tuve que actualizar el AudioKit versión en cocoapods para el último, que tuvo la build_frameworks.sh. El build_frameworks.sh era necesario para «validar» AudioKit, para dejar de Apple rechazar la aplicación.

Dejar respuesta

Please enter your comment!
Please enter your name here