Ho cercato in lungo e in largo per una risposta a questo perché non mi piace davvero l'idea di creare bersagli extra né set di configurazioni extra. Entrambe queste opzioni creano un enorme problema di sincronizzazione della configurazione.
Così, dopo l'hacking Xcode per un paio d'ore, questo è ciò che mi si avvicinò con:
Fase 1: Aggiungere la chiave "SchemeName" al tuo Info.plist con tipo stringa.
Fase 2: Modifica il tuo schema predefinito e Build -> Pre-Azioni Aggiungi un nuovo Esegui script con il seguente:
/usr/libexec/PlistBuddy -c "Set :SchemeName \"$SCHEME_NAME\"" "$PROJECT_DIR/$INFOPLIST_FILE"
Assicurati di selezionare un target da sotto "Fornire impostazioni di generazione da ".
Fase 3: Ora duplicate tale regime tutte le volte che ti piace (Gestisci schemi ... -> Seleziona schema esistente -> Fare clic sull'icona dell'ingranaggio -> Duplica) Ad esempio, è possibile creare sviluppo, Messa in scena , Produzione, App Store, ecc. Non dimenticarti di cliccare su "condiviso" se vuoi che questi schemi vengano portati avanti nel controllo della versione.
Fase 4: Nel codice, è possibile recuperare il valore in questo modo:
NSString *schemeName = [[[NSBundle mainBundle] infoDictionary] valueForKey:@"SchemeName"];
Ora, il codice può configurarsi in modo corretto in fase di esecuzione. Non ci sono macroscopiche macro di preprocessore da gestire e nessun fragile problema di configurazione da mantenere.
fonte
2014-10-17 21:22:32
ah, non lo sapevo, grazie per la risposta super veloce :) – user390687
Sì, fare questo usando la ** Configurazione build ** è probabilmente meglio che dedurlo tramite lo schema, poiché la configurazione della build influisce anche su molti altri costruire le impostazioni. –