Domanda

Nella mia app, ho attualmente ho tutto il mio codice separato in una libreria statica, per rendere più facile per impostare gli obiettivi di progetto Xcode per l'applicazione reale e per i test unitari per il mio codice. Il problema di questo è che voglio mettere la maggior parte dei miei file XI ter nella libreria statica pure, ma sembra che quando ho eseguito la mia app e cerco di fare riferimento al XI ter non può trovare a meno che non è incluso nel reale l'obiettivo di app al posto del bersaglio libreria statica. E 'possibile avere i file XI ter e altre risorse inclusi in librerie statiche che possono essere referenziate dal codice in quella stessa biblioteca e se sì, come?

È stato utile?

Soluzione

No, non è possibile, perché una libreria statica non è la stessa come un "fascio".

Un bundle è una directory che può contenere tutti i tipi di file, inclusi i file di risorse (XI ter), i file eseguibili e le librerie statiche. Esiste sul filesystem come un gruppo di singoli file.

Una libreria statica è un singolo file che contiene le classi, il codice e le variabili che sono stati collegati tra loro dal creatore biblioteca. Non "contiene" altri file, è essenzialmente un database di codice compilato.

Anche se sarebbe possibile mettere i dati per le xibs in là, Xcode non avrebbe modo di sapere che era lì, come sembra per loro come singoli file sul filesystem.

In Mac OS, è possibile creare un "quadro", che è essenzialmente un insieme di codice, le risorse, le impostazioni, ecc, che possono essere riutilizzati per più progetti. Tuttavia, Apple non sembra supportare la creazione quadro personalizzato per iPhone OS.

Bundle https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/BundleTypes/BundleTypes.html#//apple_ref/doc/uid/10000123i-CH101-SW1

librerie statiche http://en.wikipedia.org/wiki/Static_library

Altri suggerimenti

Rispondi al commento (non più adatte alla casella di commento)

Nessun problema, ho cercato di fare più o meno la stessa cosa di te per l'ultima settimana - mi piacerebbe spedire un "quadro" di xibs, includono i file e le librerie .a ad un cliente senza dare loro tutto il codice sorgente. Non riuscivo a trovare un buon modo per fare questo con fasci sia.

Per qualsiasi motivo, Apple stanno particolarmente ottusi su questo -. Non vedo un motivo per loro di essere così nel caso di librerie statiche (librerie dinamiche abbastanza giusto)

La mia soluzione per ora è quella di creare manualmente una cartella del pacchetto "pippo" che contiene le seguenti sottocartelle:

  1. "include" -> mettere .h file qui
  2. "res" -> inserire i file .xib qui
  3. "lib" -> "contiene iPhoneOS" e sottocartelle "iphonesimulator" ciascuno con libfoo.a

Quindi comprimere questo e inviare al client. Il cliente quindi:

  1. Unzips il pacchetto dove mai a loro piace.
  2. Aggiunge la cartella "res" sotto il gruppo di risorse.
  3. Modifica le impostazioni seguenti destinatari:
    Altre Bandiere Linker = -Objc -lfoo
    Header percorsi di ricerca = / include
    Biblioteca dei percorsi di ricerca = / lib / $ (PLATFORM_NAME)

Probabilmente posso automatizzare la creazione pacchetto con alcune istruzioni di generazione alla mia fine, ma il cliente è bloccato con quattro passaggi un po 'fiddly per avere istituito.

Ho trovato una soluzione perfetta per questo che fa tutto quanto sopra automaticamente e tanto altro https://github.com/kstenerud/iOS-Universal-Framework Il suo un plugin xCode

Ha funzionato per me come un fascino, Funziona solo per XCode 4 e superiori

Sì, è possibile. aggiungere un file XI ter nella libreria, come si farebbe per qualsiasi progetto normale. Poi, nel target del progetto libreria di aggiungere il file XI ter in copia sezione File con .a file. Nel progetto principale in cui si utilizza la libreria, trascinare e rilasciare il file XI ter in cui si trova il file .a per la libreria.

Quando si distribuiscono si potrebbe anche creare uno SDK. JSON.framework ha fatto questo nella loro SVN, e ho replicato con successo questo. Si può vedere come questo è stato fatto nel http://hltypes.svn.sf.net/ il hltypes-ios.xcodeproj e la cartella iOS nel progetto.

In primo luogo è necessario "install" nella cartella di compilazione, e quindi è necessario copiare lo SDKSettings.plist appositamente formattato. Quindi aggiungere il percorso per l'SDK nella lista "SDK aggiuntive" nel progetto di applicazione. Downside di SDK compositi sono la necessità di riavviare Xcode 3.x ogni volta che questo mini-SDK viene aggiornato, e l'insistenza di Xcode sulla costruzione di uno SDK composito creato dal SDK di base di Apple e il vostro mini-SDK (che significa che è necessario aspettare un bel po ') .

progetto di applicazione deve ancora avere .xib e altre risorse aggiunti manualmente.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top