我的项目有几种可能的配置,每个配置都在“生产”期间运行它自己的任务。相。如何确定选择了哪个配置?或者,确定运行哪个任务将为jsut提供相同的服务。
答案 0 :(得分:0)
是的,可以通过检查生成的BuildConfig.java文件来实现。 BuildConfig.java自动生成,并放入gen文件夹。
假设在你的app模块的build.gradle文件中,你有这个buildType配置:
buildTypes {
release {
shrinkResources true
minifyEnabled true
debuggable false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
zipAlignEnabled true
}
preRelease {
// Pre release code over here.
}
debugConfiguration {
// Debug configuration code over here
}
}
并且,如果您选择buildVariant作为发行版,则会生成此BuildConfig.Java文件...
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "com.yourapp.packagename";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "1.0";
}
因此,如果您希望基于构建变体执行某些操作,您可以尝试这样的事情......
final String buildType = BuildConfig.BUILD_TYPE;
switch(buildType) {
case "release" :
// code for release build
break;
case "preRelease" :
// code for preRelease build
break;
case "debugConfiguration" :
// code for debugConfiguration build
break;
}
注意:我不确定这是否是推荐或最佳方式来处理此问题。此方法存在已知问题请检查此链接http://www.digipom.com/be-careful-with-buildconfig-debug/
我建议您可以手动设置构建类型标志以解决此问题。例如,您可以使用此功能并根据此标志执行操作... 推荐
public class BuildTypeFlag {
// set this to release, debug, or prerelease manually for your requirements...
public static final BuildTypeEnum BUILD_TYPE_ENUM = RELEASE;
public enum BuildTypeEnum {
RELEASE, DEBUG, PRERELEASE, DUMMY_CONFIG
}
}