2011-01-01 6 views
5

Sto sviluppando un'applicazione per iPad e di recente ho aggiunto alcune impostazioni (come un interruttore della modalità di debug e un commutatore FPS) alla pagina dell'app in Settings.app per semplificare la vita dei tester dell'app. Ovviamente non voglio mantenere queste impostazioni lì nella versione finale. C'è un modo per nascondere alcune impostazioni in Settings.bundle nella versione rilasciata ma mostrarle nella versione di debug? Oppure, in alternativa, esiste un modo per utilizzare in modo condizionale un diverso Settings.bundle nel mio target dell'app a seconda che io stia utilizzando la versione o la configurazione di debug per compilare l'app?Diverse impostazioni dell'applicazione iOS nella configurazione di debug/release?

risposta

3

È possibile, nelle impostazioni di generazione del progetto, definire una macro di preprocessore C specifica per ciascuna configurazione. Ad esempio, ho -DDEBUG nella configurazione di debug, che definisce la macro DEBUG. Quindi, il codice può essere condizionato compilato con #ifdef DEBUG ... #endif.

Inoltre, il file Info.plist può essere preelaborato.

+0

Alla fine, ho deciso di aggiungere una fase di compilazione Run Script alla destinazione che pre-processa il file Info.plist. Posso ottenere il nome della configurazione dalle variabili di ambiente e usarlo per decidere quali parti del file Info.plist devono essere incluse/escluse. Pubblicherò una soluzione completa qui una volta che l'ho risolto correttamente. –

+1

La preelaborazione di Info.plist fa parte delle funzionalità ufficiali di XCode (vedere http://www.leegillen.com/Public/Blog/Entries/2008/6/26_How_to_have_a_target_or_build_configuration_specific_Info.plist.html) –

6

So che questo ritardo, ma questo può aiutare altre persone

Questo è come ho risolto lo stesso problema

  • Creare file di 2 Root.plist uno per debug e uno per il rilascio.
  • Aggiungi questo script Esegui nel processo di creazione.
 

if [ "$CONFIGURATION" == "Debug" ];then 
    rm -f "$SRCROOT/Settings.bundle/Root.plist" 
    cp "$SRCROOT/Debug/Root.plist" "$SRCROOT/Settings.bundle" 
else 
    rm -f "$SRCROOT/Settings.bundle/Root.plist" 
    cp "$SRCROOT/Release/Root.plist" "$SRCROOT/Settings.bundle" 
 
-3

Sono appena tornato dal sito MS. MS non supporta il file multi-config. Quindi, se la stringa di connessione si trova in app.config, È necessario eseguire un'attività cliente o bat per passare a due app.config.

+0

Ho difficoltà a capire come questo risponde domanda. – laalto