2015-02-12 4 views
6

Vorrei creare un compito molto semplice che modifichi un valore booleano nella configurazione gradle.Attività gradle per modificare un valore booleano nella configurazione di build

Lavoro su un'applicazione Android che può essere eseguita con più profili e per ogni build è necessario specificare se nel mio codice l'app deve simulare il bluetooth o meno.

mio Gradle (codice rilevante):

def fakeBluetooth = "true" 

buildTypes { 
    debug { 
     minifyEnabled false 
     signingConfig android.signingConfigs.debug 
     buildConfigField "boolean", "fakeBluetooth", fakeBluetooth 
    } 
    release { 
     minifyEnabled true 
     signingConfig android.signingConfigs.release 
     buildConfigField "boolean", "fakeBluetooth", fakeBluetooth 
    } 
} 

task noFakeBluetooth { 
    fakeBluetooth = "false" 
} 

Esempio di utilizzo nel mio codice Java:

if (BuildConfig.fakeBluetooth) { 
    processFictiveBluetoothService(); 
} else { 
    // other case 
} 

Esempi di utilizzo in linea di comando:

./gradlew iDebug noFakeBluetooth 

e

./gradlew iDebug 

Problema: in entrambi i casi il valore di fakeBluetooth è sempre "true" (con o senza "noFakeBluetooth" nella linea cmd).

risposta

16

È possibile utilizzare le proprietà del progetto per passare il valore:

buildTypes { 
    debug { 
     minifyEnabled false 
     signingConfig android.signingConfigs.debug 
     buildConfigField "boolean", "fakeBluetooth", fakeBluetooth() 
    } 
    release { 
     minifyEnabled true 
     signingConfig android.signingConfigs.release 
     buildConfigField "boolean", "fakeBluetooth", fakeBluetooth() 
    } 
} 

def fakeBluetooth() { 
    def value = project.getProperties().get("fakeBluetooth") 
    return value != null ? value : "true" 
} 

E poi si può passare la proprietà con:

./gradlew iDebug -PfakeBluetooth=true 
+0

Grazie è quello che ho fatto – psv

0

questo funziona

android.defaultConfig.buildConfigField "String", "value", "1" 
+0

E 'anche una soluzione. Dipende dall'implementazione ... Grazie – psv

+0

Nel mio caso lo sto semplicemente usando per impostare i parametri di configurazione all'interno delle attività –

0

Penso che la corretta approccio sarebbe quello di definire il valore della risorsa per buildTypes o productFlavours:

resValue "string", "key", "value"

quindi lettura da esso all'interno del vostro codice come: getResources().getString(R.string.key);

Problemi correlati