Facebook iOS8 SDK genera l’errore del modulo per FBSDKCoreKit

Sto cercando di aggiungere l’SDK di Facebook alla mia app Objective-C iOS 8 in Xcode. Ho fatto l’installazione secondo le istruzioni di FB-dev. Tuttavia, viene visualizzato un errore “Imansible compilare il modulo” FBSDKCoreKit “ quando aggiungo l’intestazione al mio file AppDelegate.m.

#import "AppDelegate.h" #import  

Basato su ciò che ho letto altrove

  1. Ho già pulito la build e reinstallato Xcode.
  2. Ho anche reinstallato il programma di installazione di Facebook SDK e ho provato ad aggiungerlo a un progetto vuoto (nel caso ci fosse qualcosa di corrotto con la mia app).
  3. Ho controllato due volte gli elenchi FB di plist e framework file nelle istruzioni, ma non mi è mancato nulla.

Sono perplesso.

FBSDKCoreKit non può essere creato a causa dell’errore ” include dell’intestazione non modulare all’interno del modulo framework ” nel file di intestazione FBSDKAppLinkResolver.h: nella riga #import .

La soluzione dell’errore del compilatore Swift: “intestazione non modulare nel modulo quadro” (passaggio CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES) non mi ha aiutato.

La mia soluzione:

  1. Crea in Bolts.framework file module map: Modules / module.modulemap (come in FBSDKCoreKit.framework)
  2. Metti questo codice dentro

     framework module Bolts { umbrella header "Bolts.h" export * module * { export * } explicit module BFAppLinkResolver { header "BFAppLinkResolver.h" link "BFAppLinkResolver" export * }} 

Fatto interessante è che in FBSDKCoreKit tale schema è realizzato da Facebook, perché non lo hanno applicato in Bulloni …

Non sono sicuro se ha effetti collaterali ma l’impostazione di “Consenti moduli non inclusi in moduli Framework” su YES nelle impostazioni di Build ha risolto il problema per me. Spero che funzioni anche per te.

Basta fare quanto segue per creare l’app con successo.

In Impostazioni di costruzione imposta “Consenti inserti non modulari nei moduli del framework” su YES

E non volevo impostare “Enable Modules” (c e Objective-C) su NO

inserisci la descrizione dell'immagine qui

Per Objective-C ho usato la risposta di Paul Lehn da: https://developers.facebook.com/bugs/362995353893156/

  1. Aggiungi il flag -ObjC alle impostazioni di creazione di altri linker del tuo progetto. (se non si desidera aggiungere configurazioni di progetto, per inizializzare le classi di pulsanti)
  2. “Consentire l’inclusione di moduli non modulari nei moduli del framework” su YES nelle impostazioni di Build
  3. Impostare “Abilita moduli” (c e Objective-C) su No

(inoltre non dimenticare di aggiungere framework, per me era: “AdressBook” “QuartzCore” “CoreLocation” “CoreGraphics” e se non è stato ancora aggiunto, anche “UIKit” “Foundation” “CoreData”)

e alla fine ha funzionato per me

tutto questo è stato usato per colbind FBSDK nella cartella personalizzata nella mia cartella di progetto, non da ~ / Documents / FacebookSDK

Rimuovi la directory del modulo da FacebookCoreKit.framwork.

inserisci la descrizione dell'immagine qui

Da Chris Pan (team di Facebook): https://developers.facebook.com/bugs/362995353893156/

La versione 4.0.1 ha aggiunto le mappe dei moduli (che dovrebbero aver ovviato alla necessità di colbind le intestazioni) ma sembra che possa aver causato altri problemi di compatibilità. Stiamo lavorando a una correzione corretta, ma un’altra soluzione è rimuovere manualmente le mappe dei moduli da ciascuno dei bundle di FBSDK * Kit.framework; ad esempio, rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/ (e ripetere per FBSDKLoginKit e FBSDKShareKit)

Per quanto ne so, abbiamo 2 opzioni per affrontare questo problema:

  1. Rimuovi tutte le mappe dei moduli come ha detto Chris.
  2. Aggiungi un file di mappa del modulo mancante (non ufficiale) temporaneo nella cartella Bolts.framework (nella cartella FacebookSDK). Dovresti controllare se questa cartella è mancante o no.

Se hai problemi con “FBSDKCoreKit” puoi provare le seguenti soluzioni:

  1. Vai a Impostazioni creazione e cerca “consenti non modulare” e Imposta

    “Consentire l’inclusione di moduli non modulari nei flag” a SÌ

inserisci la descrizione dell'immagine qui

  1. Vai alla cartella Document / FacebookSDK

    quindi vai a FBSDKCoreKit.framework

    In questa cartella rimuovi cartella Moduli. Quindi aggiungi la libreria FacebookSDK nel tuo progetto.

  2. Impostare il percorso di ricerca Framework su “~ / Documents / FacebookSDK”

    Passi per trovare il percorso di ricerca del framework

    Vai a build le impostazioni del progetto e cerca “percorso di ricerca del framework”.

    Quindi aggiungere “~ / Documents / FacebookSDK”

inserisci la descrizione dell'immagine qui

Modificare:

per favore apri il percorso di ricerca di Framework nell’app Facebook e copia i passaggi sopra indicati nella tua applicazione. Simile al percorso che ho allegato nelle schermate sottostanti

inserisci la descrizione dell'immagine qui

Questo risolverà il tuo problema

Hai anche questo problema, è necessario impostare

 Enable Modules (C and Objective-C) 

a NO .

Ho affrontato lo stesso problema. Il problema era che la mia directory di progetto conteneva spazio nel nome “Demo dell’applicazione”. Questo è il motivo per cui ogni volta che trascino i framework di Facebook, aggiunge spazio nei Percorsi di ricerca di Framework nelle impostazioni. Rimuovere questo spazio ha risolto il problema.

TL; DR Rimuovi il riferimento Bolts.framework nel progetto.

Nessuna di queste o nessuna delle altre risposte ha funzionato per me (nel mio caso). Per il mio progetto stavamo passando da un vecchio sdk di Facebook e avevamo un progetto di Bolts.

Leggendo la documentazione

L’SDK carica automaticamente il suo framework e le sue dipendenze.

In quanto tale, penso che ci sia una collisione in corso. C’erano i cartamodelli che avevo prima e poi quello nuovo che veniva quando ho scaricato il nuovo bundle FacebookSDK (4.7 in questo caso).

Rimozione di my Bolts.framework risolve il problema (assicurati di pulire prima di ribuild).

Probabilmente stai importando la cartella “Samples” che viene fornita con l’SDK di Facebook nel tuo progetto. Rimuovi i riferimenti a quei file dal tuo progetto e dovrebbe funzionare. Non c’è bisogno di cambiare i flag sulle impostazioni di compilazione.

Dovrei indirizzarti a questo attuale problema aperto assegnato a Facebook: https://developers.facebook.com/bugs/362995353893156/ . Nessuna delle risposte qui mi ha aiutato, quindi presumo che ci sediamo solo le anatre:

Come al momento della scrittura, un messaggio da Facebook Chris Pan :

“La versione 4.0.1 ha aggiunto le mappe dei moduli (che dovrebbero aver ovviato alla necessità di colbind le intestazioni) ma sembra che questo abbia causato altri problemi di compatibilità. Stiamo lavorando a una correzione corretta ma un’altra soluzione è rimuovere le mappe dei moduli manualmente da ciascuno dei bundle di FBSDK * Kit.framework, ad esempio rm -r ~/Documents/FacebookSDK/FBSDKCoreKit.framework/Modules/ (e ripetere per FBSDKLoginKit e FBSDKShareKit) ”

Kosala Ubayasekara ha funzionato, ma dal momento che questo è un problema aperto, potresti semplicemente aspettare fino a quando una correzione ufficiale non sarà chiara:

  1. In Impostazioni di compilazione sotto i moduli Apple LLVM:

    1. Imposta Consenti inclusioni non modulari nei moduli Framework “impostando su NO
    2. Abilita moduli (C e Objective C) a NO.
  2. Crea un’intestazione di bridging per includere le intestazioni di Facebook SDK

  3. Collega l’intestazione del bridging in Impostazioni di compilazione: Swift Compiler – Generazione del codice.
  4. Importa FBSDKCoreKit nel tuo file Delega app e implementa i requisiti SDK Facebook principali come da documentazione FB

Lo stesso problema era con me. … Non della soluzione di cui sopra funziona per me .. Ho impostato. moduli, bandiere e anche altre cose … ma niente aiuta.

Ma per me questo problema è risolto da

MUOVERE la cartella del framework DOPO o ENTRO la cartella in cui si trova il file .pch.

Quando la mia cartella framework @ myapp/{frameworkFolder}/fbframeworks.
Stava mostrando problemi.

Lo sposto in myapp/myapp/modal/{fbframework}/. Quindi questo problema è stato risolto. (il mio file .pch si trova in myapp / myapp.)

Può essere lo stesso può aiutare a chiunque abbia lo stesso problema.

Ho avuto lo stesso problema, stavo usando il nuovo SDK di Facebook (FacebookSDKs-iOS-20160316) su Xcode 6.4, mi dà costantemente questo errore ogni volta che inserisco il seguente codice nel mio file AppDelegate.m : #import

Quando sono passato a Xcode 7.2, problema risolto, l’errore è sparito. Indovina questo forse il problema della versione compatibile

Se stai affrontando lo stesso problema con me, puoi provare a utilizzare Xcode 7.2 per crearlo. Il problema è che Xcod 6.4 potrebbe non essere mai in grado di utilizzarlo a patto che mantieni il sdk di Facebook nel tuo progetto.

Spero che questo ti aiuti!

Per quelli che sono venuti qui e hanno fatto lo stesso errore da principiante come ho fatto io. Forse posso risparmiarti un po ‘di tempo. Lavoro su un vecchio progetto che è in gran parte costituito dal codice Objective-C. Cerchiamo di implementare nuove funzionalità in Swift.

Questo è quello che ho provato nel mio codice Swift

 import FBSDKCoreKit class SomeClass { func doSomething { FBSDKAppEvents.logEvent("Some Event") } } 

Ma il compilatore si è lamentato del fatto che non poteva compilare il modulo, ecc.

Come l’ho risolto

  • Rimuovi l’ import FBSDKCoreKit dal mio codice Swift.
  • Modificato il nostro Bridging-Header.h e importato FBSDKCoreKit lì: #import

Assicurati di aver anche importato il framework Bolts, questo ha funzionato per me.