Errore di compilazione dell'app per iPhone con librerie statiche durante la generazione della distribuzione

StackOverflow https://stackoverflow.com/questions/1446772

Domanda

Attualmente sto cercando di creare il prodotto di distribuzione della mia (prima) app per iPhone in modo che possa essere caricata sull'App Store. Ho esaminato tutto il processo del profilo dell'ID app e del provisioning della distribuzione e finalmente l'organizer e la configurazione di build del target lo hanno riconosciuto.

Il problema è che quando si imposta " Configurazione attiva " su " Distribuzione " (duplicato della configurazione "Rilascio" secondo le indicazioni del Centro Dev iPhone) Non riesco a compilare il codice. Il progetto contiene un riferimento a una libreria statica che contiene diverse classi utilizzate come classi base in molte delle classi del progetto. Quindi, quando si basa sulla configurazione di distribuzione, il compilatore genera errori dicendo che non riesce a trovare le classi di base dalla libreria statica e la compilazione non riesce.

Se cambio la configurazione attiva. a " Debug " (come utilizzato per lo sviluppo) non vi è alcun problema e l'app viene compilata correttamente come previsto.

Non riesco a trovare quale potrebbe essere il problema. Ho trovato qui un'altra domanda simile, ma sembra essere un caso diverso:

Distribuzione librerie statiche iPhone e rilasciare errori di compilazione (ma non per il debug)

Anche Google non sembra avere molti risultati utili. Ho anche controllato le informazioni del bersaglio nella sezione Build e sono passati da " Debug " e "distribuzione" configurazioni per verificare eventuali differenze rilevanti, ma finora non è stato trovato nessuno. In realtà non ho trovato alcuna informazione rilevante sulla lib statica. Solo nella scheda Generale della finestra informativa, ma la libreria statica viene visualizzata correttamente nelle Dipendenze dirette.

Quindi, a questo punto sono all'oscuro. Ho provato a seguire le istruzioni nel modo più preciso possibile, ma suppongo che non fosse abbastanza e ora sto riscontrando problemi. Suppongo che la correzione dovrebbe essere in qualche modo semplice (forse solo impostare qualche parametro, da qualche parte) ma non sono stato in grado di scoprirlo.

Potresti per favore (PER FAVORE :)) fornire un aiuto su questo. Qualsiasi aiuto o suggerimento è molto apprezzato.

Grazie in anticipo!

È stato utile?

Soluzione

Controlla le opzioni di compilazione per la configurazione di Debug; ad esempio, i percorsi di ricerca dell'intestazione per la configurazione di debug potrebbero essere diversi rispetto alla configurazione di distribuzione. Seleziona i menu Project > Modifica le impostazioni del progetto e digita: Percorsi di ricerca intestazione per controllare quelle impostazioni per il Configurazione elencato. Se qualcosa è diverso tra le configurazioni, rendile uguale per entrambi.

Altri suggerimenti

Eccolo:

Per creare la distribuzione, (per le indicazioni del Dev Center di iPhone) devi fare una copia di " Release " configurazione e denominarlo come " Distribution " ;, quindi creare il progetto con questa configurazione attiva. Verifica " Percorsi di ricerca intestazione " nella finestra informativa del target per le configurazioni di debug e distribuzione, ho notato una differenza nel valore, impostato come (per entrambe le configurazioni):

$ {} BUILD_STYLE - $ {} PLATFORM_NAME / usr / local / include

quindi ciò ha comportato la sostituzione di $ {BUILD_STYLE} - $ {PLATFORM_NAME} con " Debug-iphoneos " e "quotation-iphoneos" per ogni configurazione. Tutte le classi di base dalla libreria statica sono state memorizzate in " include " cartella, tuttavia non c'era un " Distribution-iphoneos " cartella.

Questo perché non ho aggiunto una "Distribuzione" configurazione nel progetto lib statico, come ho fatto nel progetto dell'app principale (non sapevo di doverlo fare). Quindi, per risolvere il problema, ho aggiunto solo la stessa configurazione. nel progetto lib statico e creato.

Quindi, in sintesi, se aggiungi una nuova configurazione in un progetto che utilizza le classi da una lib statica referenziata, aggiungi anche la stessa configurazione nel progetto lib statico ed esegui una compilazione. In questo modo il progetto principale sarà in grado di trovare le classi di base.

Forse in realtà è roba di base, mi spiace sto solo imparando la lingua (e XCode) :).

Spero che questo aiuti, grazie ancora ad Alex.

Saluti

Ho sentito parlare di problemi di linker con l'SDK per iPhone OS 3.0; Alcune delle soluzioni alternative includono l'aggiunta di -all_load ai flag del linker durante la creazione del progetto (sebbene ciò possa avere effetti collaterali indesiderati). Un'altra opzione è l'aggiornamento all'SDK 3.1, dove credo che questi problemi siano stati risolti. Certo, questo potrebbe non essere affatto il tuo problema ...

Altri luoghi di aiuto:

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