Con qualsiasi modifica del codice (sebbene il file non sia in .pch), ogni volta completa la compilazione del progetto.
Con qualsiasi modifica del codice (sebbene il file non sia in .pch), ogni volta completa la compilazione del progetto.
Risposte:
Aggiornamento 2017/1/2
Questo problema non è stato risolto in Xcode 8.2.1 (per il mio progetto)
Come sopravvivere?
Code IDE: Xcode/Atom
Build: xcrun
Debug: Xcode (Control + Command + R)
Aggiornamento 2016/12/17
Questo problema non è stato risolto su Xcode 8.2.
Aggiornamento del 12/12/2016
Atom su codice e riga di comando per compilare ed eseguire il debug è la mia scelta ora. Spero che Apple risolva presto questo bug legittimo.
Aggiornamento 2016/12/04
Questo problema sembra risolto con Xcode 8.2 (beta 2) .
Ma per me non può essere risolto, devo affrontare questo problema anche quando uso Xcode 8.2. Puoi provarlo (scarica Xcode8.2 beta2 qui )
Sistema di compilazione • Xcode non ricostruirà un intero target quando si sono verificate solo piccole modifiche. (28892475)
Vecchia risposta: questa è una soluzione:
Scheda "Build Build" -> "C Language Dialect" -> Modificalo in "Compiler Default".
"Dialetto in linguaggio C" è stato impostato su "GNU99" anziché "Predefinito del compilatore". In precedenza lo standard era GNU99 ma ora non lo è. A un certo punto Xcode non ha migrato correttamente le impostazioni del progetto della libreria e quindi è stato impostato su GNU99. Una volta cambiato in GNU99, ha smesso di ricompilare tutto il mio codice ogni volta!
Vai a Prodotto -> Schema -> Modifica schema. Seleziona Crea nella colonna di sinistra e deseleziona " Trova dipendenze implicite "
Ma questo flag dovrebbe rimanere controllato quando si crea il progetto per la prima volta.
La correzione per me consisteva nel chiudere lo storyboard, avevo aperto il file sorgente con l'editor assistito e anche il file dello storyboard (chiudendo lo storyboard --- poiché non avevo apportato alcuna modifica ad esso) rimosso tutta la compilazione non necessaria
AGGIORNATO
Il singolo più grande miglioramento che sono riuscito a fare è stato la modularizzazione del mio progetto. Specificamente modularizzare il livello ORM che viene utilizzato in quasi tutte le altre classi. Spostando quel codice in una destinazione separata all'interno del mio progetto e importandolo come modulo sono stato in grado di migliorare notevolmente i tempi di compilazione. Xcode non decide più di ricompilare i file non necessari quando eseguo una build.
Ora uso il metodo di compilazione a file singolo per build di debug incrementali veloci.
Ci sono altri buoni suggerimenti in questo link tra cui refactoring del codice, https://medium.com/rocket-fuel/optimizing-build-times-in-swift-4-dc493b1cc5f5
VECCHIO
Per me è stato ancora un problema costante con Xcode 9. Come molti di voi, sto lavorando a un grande progetto rapido 4 / cocoapods con molti file sorgente e ricompilando ogni file ogni volta che è esasperante.
Finora sto ottenendo i migliori risultati con le seguenti impostazioni. Ti suggerisco di provare e vedere come funziona per te.
Aggiunte impostazioni personalizzate personalizzate definite dall'utente,
Nota: non ho l'impostazione personalizzata definita dall'utente per l'ottimizzazione dell'intero modulo.
Ho modificato alcune cose con il mio codice per quanto riguarda l'intestazione del prefisso che sembra aver risolto questo problema. Non so quale sia stato effettivamente il trucco, ma li condividerò tutti nella speranza che aiuti qualcun altro là fuori. Se non hai un prefisso impostato, allora suppongo che questo non sia il problema (o il problema è sfaccettato).
@import MyModule
). (Per me, questo e il passaggio 1 erano la stessa cosa.)Se il problema persiste, puoi provare a rimuovere altre importazioni dall'intestazione del prefisso. Potrebbe esserci qualcosa che lo fa inciampare ...
Sembra che ci stiano lavorando attivamente secondo https://forums.developer.apple.com/thread/62737 ma una soluzione alternativa è aggiungere
HEADERMAP_USES_VFS = YES
nelle impostazioni di creazione del tuo target (Progetto -> Target -> Impostazioni di costruzione -> Definito dall'utente).
Questa soluzione ha funzionato ogni volta per me oggi, dopo che nessun'altra soluzione ha funzionato in modo coerente nell'ultimo mese.
EDIT: A volte ancora ricompilare tutto, anche se sembra farlo molto meno frequentemente con questa impostazione definita.
Controlla tutto il tuo codice sulle @IBDesignable
direttive nel mio caso particolare Xcode build project tutto il tempo perché avevo alcune viste sul mio storyboard che conteneva questi @IBDesignable
attributi in esso. La seconda cosa è che ho anche il mio storyboard aperto in una finestra separata (non una scheda), ovvero il mio Xcode crea build per tutti i simulatori per sempre.
@IBDesignable
direttive ... c'è qualcosa in particolare che dovremmo cercare?
Madhuri Mane ha perfettamente ragione a riguardo. Per aggiungere un po 'più di chiarezza, alcuni punti importanti da notare:
Ciò è applicabile SOLO se si hanno dipendenze implicite su librerie / framework su cui si basa il proprio target.
Se "Trova dipendenze implicite" è disabilitato:
Risultato: la libreria non verrà creata prima della creazione della destinazione dell'applicazione. Impossibile creare la destinazione dell'applicazione.
Correzione: per garantire che il secondo scenario non si verifichi, è necessario aggiungere i target necessari all'elenco target e ordinarli correttamente.
Fonte e ulteriori letture sull'argomento: https://pewpewthespells.com/blog/managing_xcode.html#scheme-action
Ora, se l'intero progetto è ospitato all'interno di un obiettivo e richiede 4 minuti per la compilazione, non c'è molto che tu possa fare al riguardo, tranne dividerlo in framework per sfruttare quanto sopra o capire dove la compilazione è in ritardo. Se stai usando qualcosa come PaintCode o hai grossi pezzi di codice UIKit in breve tempo cambiarlo in Objective-c si compila molto più velocemente
Apple ha rilasciato la nuova versione beta di Xcode ieri (14 nov)
Xcode 8.2 beta 2
E questo problema è stato contrassegnato come risolto nella nota di rilascio.
Build System
• Xcode non ricostruirà un intero target quando si sono verificati solo piccoli cambiamenti. (28892475)
Funziona per me. La velocità di costruzione è tornata come al solito. Chiunque affronti questo problema, dovrebbe provarlo!
Vai all'impostazione di compilazione del progetto e modifica il "dialetto in lingua C".
"Dialetto in linguaggio C" è impostato su "GNU99" anziché "Predefinito del compilatore" quando si aggiorna la versione di xcode. A un certo punto Xcode non ha migrato correttamente le impostazioni del progetto della libreria e quindi è stato impostato su GNU99. Questo risolverà il problema
Se hai apportato modifiche al file Swift, inizia a creare l'app, vai all'ultima scheda e fai clic sul registro di compilazione, durante la fase "Verifica dipendenze" interrompi la compilazione ed eseguila nuovamente. Alla seconda esecuzione dovrebbe solo creare i file modificati. Se fatto correttamente ho scoperto che funziona ogni volta. Non è necessario apportare modifiche alle impostazioni del progetto.
Questo sembra essere un bug in Xcode.
Se vedi che l'app sta eseguendo una build completa, interrompi la build e riprova questo trucco.
Se non hai apportato modifiche al codice, utilizza CMD + CTRL + R per eseguire senza creare l'app che allega il debugger. Non costruirà app ma può aiutarti a risparmiare tempo non necessario.
Il problema da parte mia è stato risolto applicando la casella di controllo "Trova dipendenze implicite".
MA ricorda se stai usando i cocoapodi, per applicare queste impostazioni anche al tuo progetto pod selezionandolo da
Prodotto -> Schema -> Pods- "yourProjectName"
applicare anche in:
Prodotto -> Schema -> "yourProjectName"
Mi aiuta, quindi spero che questo suggerimento aiuti qualcun altro.
Grazie
Provare a: 1. Passare al Progetto 2. Fare clic su Crea impostazioni 3. Verificare che OptimizationLevel sia impostato su Nessuno per il debug. 4. Fare clic su Aggiungi impostazione definita dall'utente. 5. Impostare SWIFT_WHOLE_MODULE_OPTIMIZATION su YES.
per soddisfare il tempo di compilazione di xcode, è possibile utilizzare IRAMDISK (disco di memoria virtuale). Mezzi molto utili ed efficaci per ridurre i tempi di compilazione.
Inoltre può usare per velocizzare le applicazioni usate di frequente.
fare riferimento al seguente link per scaricare e utilizzare: http://iramdisk.findmysoft.com/mac/