Swift. Impossibile costruire il modulo obiettivo-c "Alamofire"


117

Installazione di un sottomodulo vaniglia fresco di Alamofire, usando XCode6 e seguendo le indicazioni per un T. Qualcosa qui non si adatta bene. L'errore che ricevo è "Impossibile creare il modulo obiettivo-c" alamofire "durante l'importazione di alamofire. Ecco una schermata dell'errore che ricevo:

inserisci qui la descrizione dell'immagine E la mia configurazione:

inserisci qui la descrizione dell'immagine



penso che devi installare alamofire come da istruzioni fornite qui github.com/Alamofire/Alamofire
Saurabh Prajapati

l'hai fatto funzionare? ha funzionato per me e dopo un altro "Build and run" si è fermato e ho ricevuto lo stesso messaggio di errore ... :(
Georg

2
Un collega ha appena ricevuto lo stesso messaggio di errore, ma il motivo si è scoperto che stava ancora usando Xcode 6.1 (è l'era 6.3 in cui ci troviamo mentre scrivo questo). Detto questo solo per la cronaca, se qualcun altro dovesse lottare con la stessa cosa.
villapossu

Risposte:


103

Quando ciò accade, crea prima i framework separatamente. Nel tuo caso:

  • Cambia lo schema in Alamofire
  • Costruisci ( ⌘B )
  • Torna al tuo schema
  • Correre

3
Bella risposta; Ero ignaro di modificare lo schema di compilazione per correggere questo tipo di errori!
tehprofessor

1
Grazie per l'aiuto.
Tidane

5
Se devi costruire lo schema separatamente, probabilmente significa che non hai il framework impostato come dipendenza di destinazione nelle impostazioni di build della tua applicazione correttamente. Fallo e non dovresti doverlo costruire manualmente.
Charles A.

Ho votato a favore, dato che funziona in Xcode. Sfortunatamente non funzionerà se si compila dalla riga di comando o se si compila per Release.
Eneko Alonso

Questo ha risolto un problema che avevo con GoogleApiClient / Drive. La compilazione avrebbe avuto successo, ma non appena fossero state apportate modifiche al file, Xcode si sarebbe lamentato dell'importazione.
Nick Alexander

53

Vai in Developer / Xcode / DerivedData ed elimina la cartella per il tuo framework. (O semplicemente eliminare DerivedData stesso)

Se hai una build della tua app in un simulatore in esecuzione, dovrai eliminare l'app lì.

Quindi Pulisci e costruisci


Questo ha funzionato anche per me, ma poi incontro la produzione di più comandi, questo link aiuterà: stackoverflow.com/questions/50718018/… .
Bhimbim

32

Questo funziona sempre per me:

  1. Esci da Xcode
  2. Elimina ~/Library/Developer/Xcode/DerivedData
  3. Passa allo schema del tuo framework e crea ⌘B
  4. Passa allo schema della tua app e crea ⌘B

22

L'eliminazione della cartella DerivedData e la pulizia e la creazione del progetto hanno risolto questo problema.


15

Prova quanto segue in questo ordine e uno dei passaggi dovrebbe funzionare.

  1. Cmd+ B- Costruisce lo spazio di lavoro e dovrebbe possibilmente costruire l'obiettivo o il modulo che vogliamo.

  2. Cmd+ Ke poi Cmd+ B- Pulisci e poi Compila

  3. Cmd+ Shift+ Option+ Ke Cmd+ B- Pulisci cartella build

  4. Esci da Xcode, elimina i dati derivati, avvia Xcode e Cmd+ Shift+ Option+ Kpoi Cmd+B

Questo sembra essere il modo più pulito possibile per pulire i dati derivati ​​e altre cache da Xcode.


Per coloro che utilizzano iCloud sync (Ad esempio, avere il progetto in cartella Documenti quindi sarebbe facile sincronizzazione a più Mac), assegno di file con nome: XXX 2.swift. Cerca ed elimina tutti, quindi esegui pod install.
John Pang

12

Se ricevi questo errore durante il tentativo di importare un framework dinamico, assicurati che il framework sia incluso nelle Dipendenze di destinazione della destinazione.

Project > "Target" > Build Phases > Target Dependencies


Inoltre, se stai lavorando con un altro framework sviluppato nello stesso spazio di lavoro, assicurati di aggiungere il progetto come libreria collegata invece del file framework, altrimenti il ​​framework non sarà visibile come dipendenza di destinazione.
Dávid Pásztor

11

Build clean ha funzionato per me.

  1. Costruisci pulito per Alamo
  2. Crea pulito per HTTPDemo

6

Commenta l'importazione e tutto il codice che lo utilizza, crea, esegui, quindi rimuovi il commento. Ha funzionato per me ...


1

Ho risolto questo problema in uno dei miei progetti ibridi Objective-C / Swift.

Nel tuo file bridging Objective-C, aggiungi la seguente riga:

#import <Alamofire/Alamofire.h>


0

Qualsiasi pod non riuscito a costruire può causare anche questo errore. (nel mio caso non è stato possibile costruire un vecchio pod che utilizza una sintassi obsoleta).

Puoi provare pod updatead aggiornare i tuoi pod alla versione più recente e vedere come va.


Per coloro che utilizzano iCloud sync (Ad esempio, avere il progetto in cartella Documenti quindi sarebbe facile sincronizzazione a più Mac), assegno di file con nome: XXX 2.swift. Cerca ed elimina tutti, quindi esegui pod install.
John Pang

0

Soluzione pazzesca per questo problema - Solo una soluzione funzionante per me

Crea un nuovo schema e aggiungi il framework che mostra errori. In questo caso "Alamofire". Esegui tutti quegli schemi.

Una volta compilati tutti gli schemi, anche l'obiettivo del progetto funzionerà correttamente.

Può sembrare una soluzione folle ma solo una soluzione funzionante per me.


0

Se le architetture valide del progetto Alamofire non contengono le architetture valide del tuo progetto, si verifica l'errore "Impossibile costruire il modulo obiettivo-c ..".

Aggiungi queste architetture i386 x86_64 arm64 arm64e armv7 armv7s armv6 armv64 alle " Architetture valide " del progetto Alamofire nelle " Impostazioni di costruzione ".

Crea lo stesso dispositivo di destinazione per entrambi i progetti. Ad esempio, inizialmente, crea il progetto Alamofire per iPhone 8 (13.2), quindi crea il tuo progetto per lo stesso simulatore.

Se la compilazione del progetto Alamofire dura molto breve, ciò significa circa 0,5 secondi, significa che il progetto Alamofire si è verificato un errore perché l'architettura del simulatore selezionato non è sulle architetture valide .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.