我需要构建两个版本的Android应用程序 - 一个用于测试人员(开发人员模式),另一个用于用户(开发人员模式关闭)。怎么做 ?现在我在清单中有元数据值,我在代码中使用它,但必须在make build之前手动更改此值。可以通过gradle改变这个吗?
清单
<meta-data android:name="developer.mode" android:value="true" />
码
public class App extends Application {
public static boolean DEVELOPER_MODE = false;
...
private void loadMetaData() {
try {
ApplicationInfo ai = ctx.getPackageManager().getApplicationInfo(ctx.getPackageName(), PackageManager.GET_META_DATA);
DEVELOPER_MODE = ai.metaData.getBoolean("developer.mode");
} catch (PackageManager.NameNotFoundException e) {
}
}
}
...
if(App.DEVELOPER_MODE) { ... }
答案 0 :(得分:2)
这种切换是常见的情况。您可以使用元标记和清单合并来实现,但我认为大多数开发人员都在使用BuildConfig
来实现此目的。您可以使用自己的值扩展它:
buildTypes {
debug {
buildConfigField "boolean", "DEV_MODE", "true"
}
release {
buildConfigField "boolean", "DEV_MODE", "false"
}
}
或者检查android gradle插件已经提供的默认值。
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.stackoverflow.question.debug";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "flavor1";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "v1.0.1";
// Fields from build type: debug
public static final boolean DEV_MODE = true;
}
然后,您可以从应用程序java代码
中引用此值if (BuildConfig.DEV_MODE) {
// do developer things
}
BuildConfig
是自动生成的文件,将在每个构建变量汇编任务上重新创建。