Me gustaría obtener la variante de compilación durante el tiempo de ejecución, ¿es esto posible sin ninguna configuración o código adicional?
Me gustaría obtener la variante de compilación durante el tiempo de ejecución, ¿es esto posible sin ninguna configuración o código adicional?
Respuestas:
Mira la BuildConfig
clase generada .
public final class BuildConfig {
public static final boolean DEBUG = Boolean.parseBoolean("true");
public static final String APPLICATION_ID = "com.example.app";
public static final String BUILD_TYPE = "debug";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 1;
public static final String VERSION_NAME = "";
}
PACKAGE_NAME
parece haber sido reemplazado porAPPLICATION_ID
BuildConfig
se ha ido. Se llama BuildConfig por una razón
Otra opción sería crear una variable de configuración de compilación separada para cada variante de compilación y usarla en su código de esta manera:
En su archivo build.gradle:
productFlavors {
production {
buildConfigField "String", "BUILD_VARIANT", "\"prod\""
}
dev {
buildConfigField "String", "BUILD_VARIANT", "\"dev\""
}
}
Para usarlo en su código:
if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }
Aquí hay un ejemplo para definir y obtener BuildConfig
un sabor diferente.
android {
defaultConfig {
...
buildTypes {
...
}
flavorDimensions "default"
productFlavors {
develop {
applicationIdSuffix ".dev"
versionNameSuffix "-dev"
}
staging {
applicationIdSuffix ".stg"
versionNameSuffix "-stg"
}
production {
applicationIdSuffix ""
versionNameSuffix ""
}
}
applicationVariants.all { variant ->
def BASE_URL = ""
if (variant.getName().contains("develop")) {
BASE_URL = "https://localhost:8080.com/"
} else if (variant.getName().contains("staging")) {
BASE_URL = "https://stagingdomain.com/"
} else if (variant.getName().contains("production")) {
BASE_URL = "https://productdomain.com/"
}
variant.buildConfigField "String", "BASE_URL", "\"${BASE_URL}\""
}
}
Utilizando
BuildConfig.BASE_URL
Si ya está aromatizando, no es necesario que proporcione un campo de cadena adicional en su gradle. Simplemente siga unos sencillos pasos para obtener los detalles de la compilación:
Para la variante de compilación: BuildConfig.FLAVOR
Para el código de la versión de compilación: BuildConfig.VERSION_CODE
Para el nombre de la versión de compilación: BuildConfig.VERSION_NAME
BuildConfig.BUILD_TYPE
debe usarse para la variante de compilación. BuildConfig.FLAVOR
debe usarse para cualquier sabor que haya especificado.