2012-06-25 18 views
25

Attualmente sto lavorando a un'app e stiamo cercando di eseguire alcuni test sull'ambiente di staging e sull'ambiente di produzione. Naturalmente, ho creato configurazioni di stage "Stage" e "Prod" per passare da uno all'altro, ma il mio cliente vorrebbe avere i due installati fianco a fianco in modo da poter passare facilmente tra i due ambienti. Finora l'ho fatto mantenendo un ramo del mio codice con un identificatore di bundle e un nome di visualizzazione bundle diversi, in modo che possano essere installati e testati fianco a fianco. Sto cominciando a chiedermi se ci possa essere un modo più semplice per farlo, però. C'è un modo per definire un'impostazione di build personalizzata, dargli un valore basato sulla configurazione di build e quindi aggiungerla alla fine dell'identificatore del bundle?Identificatore di bundle diverso per configurazioni di build diverse

Qualcosa di simile ...

BUNDLE_SUFFIX 
    TEST 
    STAGE 
    PROD ".PROD" 

... e quindi impostare il mio Bundle Identifier a com.blah.blah$(BUNDLE_SUFFIX). Quindi tutte le build con la configurazione di PROD otterranno automaticamente il nuovo ID bundle e non sarà necessario sincronizzare i rami tutto il tempo. È possibile anche questo tipo di cose?

+0

Una cosa che potreste fare è controllare il fascio ID nel codice e modifica il comportamento delle tue app in base all'ID bundle. Ho tre versioni di un'app; versione di sviluppo, versione di prova e versione live: ognuna usa diverse apis web. Quindi controllo l'identificatore del bundle in fase di esecuzione per determinare quali URL utilizzare. – ader

+0

Uso anche bersagli diversi con profili diversi, identificatori e nomi di bundle, quindi non devo rovinare alcuna ramificazione per questo. – ader

+0

È solo l'URL che sta cambiando nel tuo stage e nella produzione? –

risposta

18
+0

Bello! Non sto più lavorando a quel progetto, ma sembra esattamente la cosa di cui avevo bisogno allora. –

+0

Questo articolo ha funzionato bene per me. L'unica cosa che dovevo cambiare era che se stai usando un appiconset per l'icona della tua app, puoi configurarlo in 'Build Settings' ->' Asset Catalog App Icon Set Name' invece di sostituire ogni file di icona nel 'plist ' –

+0

Quel tutorial è utile, ma come faccio a specificare quale build costruire per costruire senza fare uno schema separato (che non voglio fare dal momento che aggiunge più overhead manuale all'intero progetto)? Idealmente avrei 3 configs: dev, staging, production - tutti dovrebbero avere diversi URL e pacchetti ID – powerj1984

33

In Xcode 7:

questo può essere fatto facilmente utilizzando la configurazione di confezionamento in configurazione Regolazione

enter image description here

+0

Questo è vero. Ma, c'è un altro segnaposto identificatore di bundle nella scheda generale delle impostazioni di destinazione. Quindi, se si mantiene un identificatore di bundle diverso per ciascuna configurazione, come si riflette nel riquadro generale? –

+3

Modifica lo schema e modifica la 'Build' di' Run' su 'Release' o qualcos'altro, il cui valore predefinito è' Debug'. Quindi la tua pagina 'general' mostrerà le configurazioni di' Release'. @RashmiRanjanmallick –

+1

Oltre a questo, ho dovuto anche impostare 'Product Bundle Identifier' in Build Settings per ogni configurazione. In caso contrario, le impostazioni del profilo di provisioning nella scheda Generale si ripeteranno (Xcode 8). – Simo

Problemi correlati