2015-07-17 16 views
7

Fin da quando i binari incorporati sono stati introdotti in iOS 8, ho voluto portare molto del mio codice comune in framework. Ho deciso di aspettare un anno prima di farlo e quest'anno, con Xcode 7 Beta e iOS 9, sto iniziando a farlo proprio così.Creazione di un framework Swift con Xcode 7 (Beta 3) da utilizzare come file binario incorporato

Ho avviato un progetto framework Cocoa Touch in Xcode 7 e voglio compilarlo in un framework utilizzabile. Posso farcela per compilare il mio progetto in un .framework, ma ci sono alcuni problemi; vale a dire, il quadro non sembra essere importabile in nuovi progetti (descriverò i passi che ho fatto a breve). Per questo motivo, non sono sicuro che il mio framework abbia simboli visibili.

Questo è ciò che ho fatto per creare il quadro:

  1. creato il mio quadro come tocco framework Cocoa.
  2. Sono andato alle fasi di generazione del mio target, sono andato alle intestazioni e ho aggiunto tutti i miei file Swift alla sezione "Pubblico", nella speranza che esportasse tutti i miei simboli senza doverli contrassegnare come public.
  3. Ho cercato di archiviare il mio progetto come framework. Attualmente, sembra che Xcode 7 Beta 3 abbia un bug (che verrà segnalato in un secondo momento) in cui genera file di archivio danneggiati. Per questo motivo non ho potuto ottenere il mio framework dalla finestra Organizer. Per ovviare a ciò, ho modificato lo schema dell'azione Esegui in Xcode da Debug a Release, lo ho creato e ho afferrato il suo codice generato .framework dalla directory build/iphoneos-release del mio progetto. Questo è stato un test rapido, quindi non avevo bisogno dei framework generati per gli emulatori.

E questo è quello che ho fatto per cercare di aggiungere il quadro ad un nuovo progetto:

  1. Creato un gruppo di "quadri" (per motivi organizzativi) e trascinato il quadro lì, selezionando "sì" quando mi ha chiesto se volevo copiare il file nella directory del mio progetto.
  2. È andato alle impostazioni del mio target, rimosso il mio framework da "Librerie collegate" (è stato aggiunto automaticamente lì), invece è stato aggiunto a Binari incorporati. Ciò ha aggiunto di nuovo il framework alle librerie collegate, quindi ho dovuto rimuoverlo da lì due volte. Lasciare il framework in Librerie collegate causa un errore del linker (non riesco a trovare il framework - non ho idea del perché, ma penso che sia irrilevante per il mio problema e qualcosa che dovrei segnalare ad Apple), ma una volta rimosso da lì sembra compila bene quando lo aggiungi ai binari incorporati.
  3. Provato a importare il mio framework in un file. Xcode lamenta che non c'è "nessun modulo".

Sfortunatamente, nonostante i framework incorporati esistano da circa un anno, non riesco a trovare molti scritti sull'argomento.

Quindi la mia domanda è: sto creando il framework correttamente, rendendo possibile che il mio framework/qualsiasi altra cosa stia fallendo a causa di un bug di Xcode 7 Beta? O esiste una procedura diversa per creare un framework che voglio usare come Embedded Binary? Probabilmente dovrei menzionare che voglio rendere questa libreria open source, e penso che la distribuzione di un semplice file .framework alle persone che vogliono usarlo sarebbe ordinata.

risposta

3

Ho avuto lo stesso problema su Xcode 7. Ho risolto il problema modificando le impostazioni di creazione del progetto (quella che include il framework).

Impostando il quadro Percorsi di ricerca campo per $ (project_dir) o per il percorso della directory che contiene il file .framework dovrebbe aiutare Xcode trovare il modulo.

+0

OK, questo in qualche modo lo rende compilativo. Ma per qualche ragione, facendo ancora 'import myFramework' continua a dire che il modulo non esiste. –