2015-04-27 18 views
7

Patrząc na klasę BuildConfig generowanego przez Android Studio i Gradle plugin widać, że pole BuildConfig.DEBUG jest inicjowany za pomocą Boolean.parseBoolean(String) połączenia zamiast przy użyciu jednego z logicznych literałów true lub false.Dlaczego klasa BuildConfig używa wartości Boolean.parseBoolean() zamiast wartości literalnych?

kiedy dodać zwyczaj budowania właściwości za pomocą Gradle Chciałbym po prostu zrobić to tak:

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

Ale patrząc na wygenerowanym BuildConfig mówi mi, że Google podjęło innego podejścia z DEBUG flag

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

Jaka jest korzyść z używania Boolean.parseBoolean(String) zamiast literałów?

+2

Zadajesz pytanie i odpowiadasz w tej samej sekundzie? Osiągnięcie odblokowane. Odbierz swoją nadludzką odznakę. – Rajesh

+0

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

+0

Jest to pole wyboru, gdy zadaje pytanie. Chciałem tylko podzielić się swoimi doświadczeniami ze społecznością ;-) –

Odpowiedz

15

Literały typu Boolean wewnątrz klasy BuildConfig będą generować ostrzeżenia IDE podczas korzystania z nich w kodzie (przynajmniej w Android Studio). Na przykład, używając go w wyrażeniu boolowskim, Android Studio (omyłkowo) zaleci uprościć wyrażenie boolowskie, ponieważ stała wartość jest zawsze taka sama (dla aktualnego wariantu kompilacji).

Android Studio producing code warning because of missing build configuration knowledge

To ostrzeżenie jest tylko dlatego, że Android Studio nie wie, że ostateczna wartość wewnątrz BuildConfig.SOME_SETTING mogą być różne dla innych wariantów kompilacji.

Aby zachować kod czyste i wolne od ostrzeżeń można powiedzieć Android Studio ignorować tego konkretnego ostrzeżenia dodając komentarz IDE tak:

Add code comments to ignore IDE warnings

ale znowu to doda trochę hałasu z kodem i zmniejszyć czytelność. Używając metody Boolean.parseBoolean(String) do zainicjowania stałego pola, faktycznie oszukujesz Android Studio, które nie będzie już w stanie całkowicie analizować twoich wyrażeń boolowskich, a tym samym nie będzie generować ostrzeżeń.

Use parseBoolean(String) to prevent IDE warnings

Takie podejście jest bardzo przydatna, ponieważ zachowuje swój kod czyste i czytelne, bez wyłączania ważną analizę kodu oraz generowanie ostrzeżeń.

+1

Być może brakuje mi czegoś, ale co dokładnie dodaje jeden do build.gradle, aby zadeklarować wartość BuildConfig za pomocą parseBoolean? – Tunga

+2

@Tunga spróbuj użyć 'buildConfigField 'boolean', 'SOME_FLAG', 'Boolean.parseBoolean (" false ")'' wewnątrz twojego 'defaultConfig' lub dowolnego konfiguratora typu smaku lub typu kompilacji. –

+0

Ah, prawdopodobnie brakowało mi zewnętrznych cytatów, dzięki. Skończyło się na tym, że rozwiązałem mój problem, używając zamiast tego zastępstw manifestów. – Tunga

Powiązane problemy