Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Change constant values when building a release edition

I'm developing in eclipse using ADT for android.
In my application I have some constants which help me to to debug my app easily.
As an example I have:
public static final boolean DEBUG_TOAST_LOGS = true;
which help me to toast some logs on the screen.
Each time I intend to build a release, I have to go through my constants and set their values to what is appropriate for the release edition, which is somehow painful.
Now what I want is a way to build my app, using two configurations: one for debug mode and the other for release mode. The release mode should set my constants to the appropriate values. How cant I do that? What's your suggestion? What's the best way to accomplish my need?

Any help would be appreciated.

like image 895
shokri Avatar asked Feb 28 '15 09:02

shokri


2 Answers

I'm not sure if you are using Gradle as your build system. If you do, you can set build-type specific resources, e.g. a boolean debug value will be true for debug build type, and false for release build type.

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
        }
        ...
    }
}
like image 109
hidro Avatar answered Oct 19 '22 12:10

hidro


@hidro's solution is fine, but requires an unnecessary getResources()... call each time you want to access the value.

There's another possibility :

build.gradle

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

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

}

Then,in your code, you can write :

if (BuildConfig.DEBUG_TOAST_LOGS) {
  // ... enjoy your toasts ...
}
like image 40
Orabîg Avatar answered Oct 19 '22 14:10

Orabîg