Il progetto di archiviazione in Xcode crea erroneamente un pacchetto multi-applicazione


170

L'archiviazione del mio progetto in Xcode sta creando un bundle multi-applicazione, invece di raggruppare il mio obiettivo principale per il rilascio, che è quello che voglio. In particolare, quando convalido il mio archivio in Organizer, mi dà il messaggio:

"[nome progetto] non contiene un'applicazione a pacchetto singolo o contiene più prodotti. Seleziona un altro archivio o modifica il tuo schema per creare un'applicazione a pacchetto singolo."

Sembra che ci sia qualche impostazione nello schema che deve essere regolata, ma non riesco a capire cosa sta causando l'inclusione di altri obiettivi.

In ogni caso sto usando Xcode 4.0.


Risposte:


251

OK, rispondendo alla mia domanda. Si scopre che si tratta di un problema con i progetti dipendenti in XCode 4. Se questo accade a te, passa attraverso le Impostazioni di costruzione per tutti i tuoi progetti dipendenti (ad es. Librerie statiche) e assicurati che l'opzione "Ignora installazione" in "Distribuzione" sia impostata a SÌ.

Maggiori dettagli qui: http://flakasoft.com/developer-tips/xcode-4-bug-solution-for-archiving-build-with-static-library/


1
Signore, sei il mio eroe! Non lo avrei trovato facilmente: P
Andrew Natoli,

6
Modificato in "SÌ" ... non riesce ancora. :(
Joe D'Andrea,

8
Ignora installazione deve essere impostato su Sì solo sulla libreria statica, non sul progetto o sulla destinazione. Questo post sul blog sulla distribuzione ad hoc si applica anche alle build di app store e ha una sezione su Skip Skip: musicalgeometry.com/?p=1237
jj0b

8
Alcune librerie (come CorePlot) richiedono anche di modificare la sezione Copia intestazioni della loro fase di creazione. Quindi assicurati di guardare anche la risposta di Ryan.
Tim Swast,

2
Devo anche spostare tutti i file di intestazione (della libreria statica) in "Crea fasi" di destinazione, in "Copia intestazioni" li ho spostati da "Pubblico" a "Progetto".
Hlung

151

Due cose da risolvere nei sottoprogetti per risolvere questo problema:

  1. Come ha scoperto Jared, in Impostazioni di costruzione, imposta "Ignora installazione" su "Sì"
  2. Sotto Fasi di compilazione, esamina la sezione Copia intestazioni. Se sono presenti file di intestazione elencati come Privati ​​o Pubblici, trascinali verso il basso nella sezione Progetto.

7
Ti amo davvero amico! : D
arielcamus

5
Ho corretto tutte le impostazioni "Ignora installazione" ma quello che mi mancava era la sezione Copia intestazione, grazie!
Thomas Einwaller,

2
Sto usando tre20. Questo progetto ha i file di intestazione elencati come Privati ​​o Pubblici ma se li sposto nella sezione del progetto non vengono compilati. Qualche suggerimento?
Breezeight,

19
Smetti di usare Three20, anche se superi questo problema con Xcode. Sono completamente serio!
Adam Eberbach,

2
Se hai numerosi progetti di libreria come noi e hai difficoltà a capire quale installazione Skip della libreria è impostata su No o quali file di intestazione causano il problema, prova questo: Seleziona l'archivio e fai clic sul pulsante Distribuisci. Seleziona l'opzione "Salva prodotti costruiti". Premi Avanti e Salva. Sfoglia la directory creata nel Finder. La sottodirectory "librerie" identificherà le librerie necessarie per impostare Ignora installazione su Sì. Usr / local / include identificherà i file di intestazione colpevole necessari per passare da pubblico a progetto.
Sunil Gowda,

10

Ho fatto quanto segue per farlo funzionare per me:

  1. per la libreria statica three20, ho usato cocoapods per includere i file all'interno del progetto principale .. mi sono appena sbarazzato di tutti i problemi che tre20 mi stava dando (e sono molti ...) tra cui ho provato a sostituire tre20 con Nimbus .. ma Nimbus mancava alcune delle funzionalità che il mio progetto utilizzava tre20 per ... quindi Nimbus non è stato utile.
  2. imposta skip install su yes in build build per tutti gli altri sottoprogetti / librerie statiche e passa le intestazioni della copia da pubblico a project in fase di build
  3. ancora più importante: sotto le librerie secondarie .. durante le fasi di costruzione mi sono assicurato che la destinazione dei file di copia fosse cambiata da Absolute patha products directory.

e questo è tutto!

suggerimento: per avere un'idea dei file offensivi che causano al tuo archivio di creare un file di archivio anziché un ipa, procedi nel seguente modo:

  1. Seleziona l'archivio e fai clic sul pulsante Distribuisci.
  2. Seleziona l'opzione "Salva prodotti costruiti".
  3. Premi Avanti e Salva.
  4. Sfoglia la directory creata nel Finder.
  5. La sottodirectory "librerie" identificherà le librerie necessarie per impostare Ignora installazione su Sì.
  6. in alcuni casi usr/local/includeidentificherà i file di intestazione colpevole che è necessario passare da Pubblico a Progetto o i file che è necessario modificare dal percorso assoluto alla directory dei prodotti. ma quella directory (cioè usr / local / include) varia a seconda della struttura della directory del tuo sublibrary

Ti darei 10 stelle, il numero di soluzioni che ho letto fino a trovare quella che mi ha aiutato. Ho appena fatto clic sui file che ho trovato al passaggio 6 e li ho contrassegnati nell'area di appartenenza di destinazione da pubblico a progetto, senza bisogno di nulla.
Cristi Băluță,

felice di poterti aiutare! il motivo per cui l'ho scritto è che ho passato quello che hai fatto .. ho letto forse 20 risposte prima di iniziare a capire cosa stava succedendo .. :)
circa

Qualcuno può spiegare il passaggio 6? Non capisco cosa significhi "usr / local / include identificherà i file di intestazione colpevole" e dove / come dovrei controllare quei file
Andrei F

@ CristiBăluță Come hai trovato esattamente i file e dove nelle impostazioni / menu? Ho lo stesso problema con XCode 11.2.1 e non ho molta esperienza con xcode. Grazie.
Andrei F

Quello che ho scoperto è che / usr / local / include è una cartella all'interno dell'archivio (insieme alla cartella delle librerie), ma il mio archivio generico non ha nessuno di questi
Andrei F


0

ho avuto anche lo stesso problema "[nome progetto] non contiene un'applicazione a pacchetto singolo o contiene più prodotti. Seleziona un altro archivio o modifica lo schema per creare un'applicazione a pacchetto singolo". dopo l'aggiornamento a xcode5.

il problema era che un sacco di campi nelle mie impostazioni di compilazione per "release" erano vuoti. Immagino che xcode4 sia passato automaticamente all'impostazione di debug.

anwyays - la mia soluzione era trovare tutte quelle impostazioni di "rilascio" che erano vuote e impostarle sull'impostazione di debug. In particolare era l'impostazione del file Info.plist.

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.