2015-02-28 13 views
5

Ich entwickle in Eclipse mit ADT für Android.
In meiner Anwendung habe ich einige Konstanten, die mir helfen, meine App leicht zu debuggen.
Als ein Beispiel habe ich: public static final boolean DEBUG_TOAST_LOGS = true;
die mir helfen, einige Protokolle auf dem Bildschirm zu toasten.
Jedes Mal, wenn ich ein Release erstellen will, muss ich meine Konstanten durchgehen und ihre Werte auf das einstellen, was für die Release-Edition angemessen ist, was irgendwie schmerzhaft ist.
Jetzt was ich will, ist eine Möglichkeit, meine App zu erstellen, mit zwei Konfigurationen: eine für Debug-Modus und die andere für Release-Modus. Der Freigabemodus sollte meine Konstanten auf die entsprechenden Werte setzen. Wie kann ich das tun? Was ist dein Vorschlag? Was ist der beste Weg, um meine Bedürfnisse zu erfüllen?

Jede Hilfe wäre willkommen.Ändern Sie konstante Werte beim Erstellen einer Release-Edition

Antwort

9

Ich bin mir nicht sicher, ob Sie Gradle als Ihr Build-System verwenden. Wenn Sie dies tun, können Sie Build-Typ-spezifische Ressourcen, z. Ein boolescher debug Wert ist true für Debug-Build-Typ und false für Release-Build-Typ.

build.gradle

android { 

    defaultConfig { 
     ... 
     resValue "bool", "debug", "true" 
    } 

    buildTypes { 
     release { 
      ... 
      resValue "bool", "debug", "false" 
     } 
    } 

    ... 
} 

Application.java

public class Application extends android.app.Application { 
    @Override 
    public void onCreate() { 
     super.onCreate(); 
     if (getResources().getBoolean(R.bool.debug)) { 
      ... // debug logic here 
     } 
     ... 
    } 
} 
4

@ Lösung des hidro ist in Ordnung, aber erfordert einen unnötigen getResources()... Anruf jedes Mal, wenn Sie den Wert zugreifen mögen.

Es gibt eine andere Möglichkeit:

build.gradle

android { 
    buildTypes { 
    debug { 
     buildConfigField "boolean", "DEBUG_TOAST_LOGS", "true" 
    } 

    release { 
     buildConfigField "boolean", "DEBUG_TOAST_LOGS", "false" 
    } 
} 

}

Dann in Ihrem Code, können Sie schreiben:

if (BuildConfig.DEBUG_TOAST_LOGS) { 
    // ... enjoy your toasts ... 
} 
Verwandte Themen