मैं रनटाइम के दौरान बिल्ड वेरिएंट प्राप्त करना चाहता हूं, क्या यह किसी अतिरिक्त कॉन्फ़िगरेशन या कोड के बिना संभव है?
मैं रनटाइम के दौरान बिल्ड वेरिएंट प्राप्त करना चाहता हूं, क्या यह किसी अतिरिक्त कॉन्फ़िगरेशन या कोड के बिना संभव है?
जवाबों:
उत्पन्न BuildConfigवर्ग को देखो ।
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लगता है की जगह ले ली गई हैAPPLICATION_ID
BuildConfigकि चला गया है। इसे एक कारण के लिए BuildConfig कहा जाता है
एक और विकल्प यह होगा कि प्रत्येक बिल्ड वैरिएंट के लिए एक अलग बिल्ड कॉन्फिगर वैरिएबल बनाएं और इसे अपने कोड में इस तरह से उपयोग करें:
अपनी बिल्ड.ग्रेड फ़ाइल में:
productFlavors {
production {
buildConfigField "String", "BUILD_VARIANT", "\"prod\""
}
dev {
buildConfigField "String", "BUILD_VARIANT", "\"dev\""
}
}
अपने कोड में इसका उपयोग करने के लिए:
if (BuildConfig.BUILD_VARIANT.equals("prod")){ // do something cool }
BuildConfigविभिन्न स्वादों को परिभाषित करने और प्राप्त करने के लिए यहां एक उदाहरण है
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}\""
}
}
का उपयोग करते हुए
BuildConfig.BASE_URL
यदि आप पहले से ही स्वाद ले रहे हैं तो अपने ग्रेड में अतिरिक्त स्ट्रिंग क्षेत्र प्रदान करने की कोई आवश्यकता नहीं है। बिल्ड विवरण प्राप्त करने के लिए सरल चरणों का पालन करें:
बिल्ड वेरिएंट के लिए: BuildConfig.FLAVOR
बिल्ड वर्जन कोड के लिए: BuildConfig.VERSION_CODE
बिल्ड वर्जन के नाम के लिए: BuildConfig.VERSION_NAME
BuildConfig.BUILD_TYPEबिल्ड वैरिएंट के लिए इस्तेमाल किया जाना चाहिए। BuildConfig.FLAVORआपके द्वारा निर्दिष्ट किसी भी स्वाद के लिए उपयोग किया जाना चाहिए।