package cm.android.util;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import android.support.v4.util.ArrayMap;
import java.lang.reflect.Field;
import java.util.Map;
import cm.java.util.MapUtil;
public final class BuildConfigUtil {
private static final Logger logger = LoggerFactory.getLogger("BuildConfigs");
public static final Map<String, Object> pool = new ArrayMap<>();
private static final String TAG = "null";
/**
* 需要保证buildConfig未被混淆
*/
public static final void config(String tag, Class buildConfig) {
if (!buildConfig.getSimpleName().contains("BuildConfig")) {
throw new RuntimeException("buildConfig = " + buildConfig.getName());
}
Field[] fields = buildConfig.getDeclaredFields();
for (Field field : fields) {
try {
String key = field.getName();
field.setAccessible(true);
put(tag, key, field.get(key));
} catch (IllegalAccessException e) {
logger.error("field = " + field, e);
}
}
}
private static final String getKey(String tag, String key) {
return tag + key;
}
public static final void put(String tag, String key, Object value) {
pool.put(getKey(tag, key), value);
}
public static final boolean get(String tag, String key, boolean defValue) {
return MapUtil.getBoolean(pool, getKey(tag, key), defValue);
}
public static final int get(String tag, String key, int defValue) {
return MapUtil.getInt(pool, getKey(tag, key), defValue);
}
public static final String get(String tag, String key, String defValue) {
return MapUtil.getString(pool, getKey(tag, key), defValue);
}
public static final void config(Class buildConfig) {
config(TAG, buildConfig);
}
public static final void put(String key, Object value) {
put(TAG, key, value);
}
public static final boolean get(String key, boolean defValue) {
return get(TAG, key, defValue);
}
public static final int get(String key, int defValue) {
return get(TAG, key, defValue);
}
public static final String get(String key, String defValue) {
return get(TAG, key, defValue);
}
}