2015-02-12 8 views
6

Ich möchte eine sehr einfache Aufgabe erstellen, die eine Boolean in meiner Gradle Config ändern.Gradle Aufgabe zum Ändern eines boolean in Build-Konfiguration

Ich arbeite an einer Android-Anwendung, die mit mehreren Profilen ausgeführt werden kann, und für jeden Build muss angegeben werden, ob in meinem Code die App das Bluetooth fälschen muss oder nicht.

Mein gradle (Kennziffer):

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" 
} 

Beispiel für die Verwendung in meinem Java-Code:

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

Beispiele für den Einsatz in der Befehlszeile:

./gradlew iDebug noFakeBluetooth 

und

./gradlew iDebug 

Problem: In beiden Fällen ist der Wert von fakeBluetooth immer "wahr" (mit oder ohne "noFakeBluetooth" in cmd Zeile).

Antwort

16

können Sie Projekteigenschaften, um den Wert zu übergeben:

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" 
} 

Und dann können Sie die Eigenschaft Pass mit:

./gradlew iDebug -PfakeBluetooth=true 
+0

Dank ist es, was ich getan – psv

0

Dies funktioniert

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

Es ist auch eine Lösung. Abhängig von der Implementierung ... Danke – psv

+0

In meinem Fall benutze ich es einfach, um Konfigurationsparameter innerhalb von Aufgaben zu setzen –

0

ich glaube, die richtige Ansatz wäre, Ressourcenwert für BuildTypes oder ProductFlavours zu definieren:

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

lesen dann aus es in Ihrem Code heraus wie: getResources().getString(R.string.key);

Verwandte Themen