2015-04-27 10 views
7

Wenn an der BuildConfig Klasse, die von Android Studio und dem Gradle suchen Plugin ein, dass das BuildConfig.DEBUG Feld eines der boolean Literale mit true oder false den Boolean.parseBoolean(String) Aufruf anstelle der Verwendung initialisiert wird sehen können.Warum verwendet die BuildConfig-Klasse Boolean.parseBoolean() anstelle von Literalwerten?

Wenn ich benutzerdefinierte Eigenschaften bauen add Gradle verwenden würde ich tun, es ist einfach so:

android { 
    buildTypes.debug.buildConfigField 'boolean', 'SOME_SETTING', 'true' 
} 

Aber ein Blick auf die erzeugte BuildConfig sagt mir, dass Google einen anderen Ansatz mit der DEBUG Flagge genommen hat:

public final class BuildConfig { 
    public static final boolean DEBUG = Boolean.parseBoolean("true"); 

    // more fields here 

    // Fields from build type: debug 
    public static final boolean SOME_SETTING = true; 
} 

Was ist der Vorteil der Verwendung von Boolean.parseBoolean(String) anstelle von Literalen?

+2

Sie haben die Frage gestellt und die gleiche Sekunde beantwortet? Errungenschaft freigeschaltet. Fordere dein übermenschliches Abzeichen. – Rajesh

+0

http://blog.stackoverflow.com/2011/07/its-ok-to-ask-and-answer-your-own-questions/ –

+0

Es gibt ein Kontrollkästchen für das, wenn Sie eine Frage stellen. Ich wollte nur meine Erkenntnisse mit der Community teilen ;-) –

Antwort

15

Boolesche Literale in der Klasse BuildConfig werden IDE-Warnungen erzeugen, wenn sie in Ihrem Code verwendet werden (zumindest in Android Studio). Zum Beispiel empfiehlt Android Studio bei der Verwendung in einem booleschen Ausdruck (fälschlicherweise), den booleschen Ausdruck zu vereinfachen, da der konstante Wert immer derselbe ist (für die aktuelle Build-Variante).

Android Studio producing code warning because of missing build configuration knowledge

Diese Warnung ist nur, weil Android Studio weiß nicht, dass der Endwert innerhalb BuildConfig.SOME_SETTING kann für andere Build-Varianten unterschiedlich sein.

Um den Code sauber und frei von Warnungen halten Sie Android Studio sagen kann durch Hinzufügen eines IDE Kommentar wie diese diese spezifische Warnung ignorieren:

Add code comments to ignore IDE warnings

Aber auch hier wird dies etwas Rauschen auf den Code hinzufügen und die Lesbarkeit reduzieren. Mit der Methode Boolean.parseBoolean(String) zum Initialisieren Ihres Konstantenfeldes täuschen Sie Android Studio, das Ihre booleschen Ausdrücke nicht mehr vollständig analysieren kann und somit keine Warnungen mehr generiert.

Use parseBoolean(String) to prevent IDE warnings

Dieser Ansatz ist sehr nützlich, da es Ihr Code sauber und gut lesbar hält, ohne dass wichtige Code-Analyse und Generierung von Warnungen ausschalten.

+1

Vielleicht vermisse ich etwas, aber was, genau, fügt man zu build.gradle hinzu, um einen BuildConfig-Wert mit parseBoolean zu deklarieren? – Tunga

+2

@Tunga versuchen, folgen 'buildConfigField 'boolean', 'SOME_FLAG', 'Boolean.parseBoolean (" false ")'' innerhalb Ihrer 'defaultConfig' oder eine beliebige Geschmack oder Build-Typ Config. –

+0

Ah, ich habe wahrscheinlich die äußeren Zitate vermisst, danke. Am Ende habe ich mein Problem gelöst, indem ich stattdessen Manifest-Ersetzungen verwendete. – Tunga

Verwandte Themen