2014-09-11 24 views
15

Nel mio progetto Xcode, ho 4 schemi diversi (prod, dev, staging, staging2) che modificano l'identificatore del bundle dell'app che viene installata sul telefono. In questo modo posso avere tutte e 4 le versioni installate affiancate, simili a this technique.Ottieni ID bundle da un altro target

Ora sto creando un Today Extension per iOS 8. È un nuovo Target che richiede il proprio identificativo del bundle.

del pacchetto estensione Identifier deve essere preceduto con la controllante App Bundle Identifier, o un avvertimento è gettato:

error: Embedded binary's bundle identifier is not prefixed with the parent app's bundle identifier. 

    Embedded Binary Bundle Identifier: com.company.app.TodayExtension 
    Parent App Bundle Identifier:  com.company.app.staging 

In questo caso, Embedded binario Bundle Identifier deve essere com.company.app.staging.TodayExtension.

Esiste un modo per configurare il mio obiettivo di estensione di oggi per impostare l'identificatore del gruppo esaminando prima l'identificatore del gruppo target della madre? Forse attraverso una Custom Run Script Build Phase?

+1

Puoi spiegare più in dettaglio come hai risolto questo problema? Nella risposta di Jafar in basso, sei riuscito in qualche modo a impostare PARENT_APP_BUNDLE_IDENTIFIER semplicemente cambiando schema e, in caso affermativo, come? O altrimenti cosa hai specificato per gli ID bundle e PARENT_APP_BUNDLE_IDENTIFIER in ogni target (incluso il target dell'estensione)? Grazie! – qix

+3

In Impostazioni progetto | Impostazioni di costruzione | Definito dall'utente, creare una nuova voce denominata PARENT_APP_BUNDLE_ID. Ho 4 configurazioni, aggiungo un valore per ognuna (com.company.app.staging, com.company.app.development, ecc.). Nel file Info.plist del target dell'app principale, imposta l'identificatore del pacchetto su $ (PARENT_APP_BUNDLE_ID). Nel file Info.plist della tua estensione, imposta il codice identificativo del pacchetto su $ (PARENT_APP_BUNDLE_ID) .NameOfYourExtension. – djibouti33

+2

Aha, ha completamente perso il fatto che lo stavi facendo attraverso configurazioni di configurazione personalizzate aggiuntive (Progetto | Info | Configurazioni) e impostando un valore diverso di PARENT_APP_BUNDLE_ID per ogni configurazione a livello di Progetto, invece, pensandoti in qualche modo sostituendo le singole impostazioni di destinazione . Quindi sei ancora in grado di cambiare schema per creare w/id diversi, dato che ogni schema usa un diverso set di configurazioni di build. Fantastico, funziona per me e mi aiuta a ripulire obiettivi duplicati e file plist! – qix

risposta

18

Le impostazioni di costruzione dei target non sono disponibili per gli altri target. Tuttavia sono disponibili le impostazioni di creazione del PROGETTO.

In questo modo è possibile aggiungere un'impostazione di build definita dall'utente nel proprio progetto e chiamarla PARENT_APP_BUNDLE_IDENTIFIER e impostare l'ID bundle corretto per tutti gli schemi.

Poi nella scheda informazioni del target estensione app impostare il fascio id per

$(PARENT_APP_BUNDLE_IDENTIFIER).$(PRODUCT_NAME:rfc1034identifier) 

Ha funzionato perfettamente bene per me.

+0

Meraviglioso! Questo mi fa risparmiare così tanta frustrazione! – djibouti33

+0

sto eseguendo lo stesso problema .. ho seguito sopra osolution ... ma non superato .. ho aggiornato ios 8.0.2 e xcode 6.0.1 (officila uno) previious ho 8.0 in che ha funzionato bene per me .. – Sri