2016-03-16 38 views
10

Ogni volta che rilascio la mia app, cambio tutte le mie stringhe di e alcune chiavi dal dal testing alla produzione. Il modo in cui lo faccio è solo commentare le stringhe prima di rilasciare. C'è un modo migliore per gestire le stringhe in base al tipo di build?Valori stringa separati per Android per build di debug e release

+3

http://stackoverflow.com/questions/17197636/is-it-possibile-per-declare-a-variabile-in-grado-usabile-in-java – CommonsWare

+0

cercavo questo .. ottima domanda e risposta .. – DJphy

+0

Non farlo. Le probabilità di avere stringhe errate nel codice di produzione con il tuo approccio sono piuttosto alte. In questo modo: http://developer.android.com/tools/building/configuring-gradle.html –

risposta

11

Supponendo di utilizzare Android Studio, per impostazione predefinita il sistema crea un aroma base release e debug. Quindi se aggiungi una cartella debug e release nella cartella app/src del tuo progetto puoi dichiarare valori separati lì.

Quindi la tua struttura dovrebbe essere come questo:

project 
    -app 
    -src 
     -debug 
     -java 
      ... 
     -res 
      -values 
      -strings.xml 
     -release 
     -java 
      ... 
     -res 
      -values 
      -strings.xml 
     -main 
     -java 
      ... 
     -res 
      -values 
      -strings.xml 

Vorrei anche aggiungere che se si dispone di una stringa che non è definito in una delle cartella debug o release che eseguirà il fallback per il vostro main cartella.

+0

quindi ogni volta che lavoro su qualcosa devo aggiornare tutte e 3 le cartelle? – spaceMonkey

+0

cosa dire di separare le stringhe url specifiche in un "url-strings.xml" separato e quindi avere 'project/app/src/main/res/values ​​/ strings.xml' ' project/app/src/debug/res/valori/url-strings.xml' 'project/app/src/release/res/values ​​/ url-strings.xml' – k3b

+0

no, hai solo la tua app nella cartella predefinita' main'. Qualsiasi risorsa che deve essere differente in 'debug' o' release' crea semplicemente aggiungendo a strings.xml (o come @ k3b menziona un file diverso). Android Studio ricadrà sempre nella cartella 'main' in modo da poter avere 1 stringa url nelle cartelle' debug'/'release' e ​​prenderà solo quelle. –

1

Basta fare due sapori in build.gradle. Quindi due directory, sempre come indicato nel link (developer.android.com/tools/building/configuring-gradle.html). Dal momento che è necessario solo stringhe da alterati, basta copiare i file strings.xml nelle nuove directory (cioè dev e produzione) cancellare i tuoi strings.xml originale

E questo è tutto. :)

Non è necessario spostare i file java o altri file di layout.

In breve, lasciare tutto nella directory "principale" che dovrebbe essere coerente in tutti i sapori di build. Sovrascrive i valori dipendenti da build flavor nella rispettiva directory.

+0

? intendi "tipi di costruzione" o "sapori di prodotto"? – spaceMonkey

+0

scusa. sì sapori del prodotto come test e produzione –