How to check debuggable or debug build type in android library?
There is a workaround with reflection in order to get the project's(not library's) BuildConfig value like this:
/**
* Gets a field from the project's BuildConfig. This is useful when, for example, flavors
* are used at the project level to set custom fields.
* @param context Used to find the correct file
* @param fieldName The name of the field-to-access
* @return The value of the field, or {@code null} if the field is not found.
*/
public static Object getBuildConfigValue(Context context, String fieldName) {
try {
Class<?> clazz = Class.forName(context.getPackageName() + ".BuildConfig");
Field field = clazz.getField(fieldName);
return field.get(null);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
To get the DEBUG
field, for example, just call this from library Activity
:
boolean debug = (Boolean) getBuildConfigValue(this, "DEBUG");
I have not tried this yet and cannot guarantee it will work all the time but you can go ahead!!!
Check debuggable
tag on AndroidManifest file is the better way:
public static boolean isDebuggable(Context context) {
return ((context.getApplicationInfo().flags
& ApplicationInfo.FLAG_DEBUGGABLE) != 0);
}