खोज…


टिप्पणियों

उत्पाद फ्लेवर defaultConfig रूप में एक ही गुण का समर्थन करता है क्योंकि यह DefaultConfig वास्तव में ProductFlavor वर्ग का है। इसका मतलब यह है कि आप defaultConfig {} ब्लॉक में सभी स्वादों के लिए आधार विन्यास प्रदान कर सकते हैं, और प्रत्येक स्वाद इन डिफ़ॉल्ट मूल्यों में से किसी को भी ओवरराइड कर सकता है, जैसे कि pplicationId

बिल्ड.ग्रेड फ़ाइल को कॉन्फ़िगर कैसे करें

android {
    ...
    defaultConfig {...}
    buildTypes {...}
    productFlavors {
        demo {
            applicationId "com.example.myapp.demo"
            versionName "1.0-demo"
        }
        full {
            applicationId "com.example.myapp.full"
            versionName "1.0-full"
        }
    }
}

बिल्ड.ग्रेडल में फ्लेवर कांस्टेंट और संसाधन

आप के लिए Gradle उपयोग कर सकते हैं BuildConfig स्थिरांक और res एक प्रति स्वाद के आधार पर मान। आप जिस स्वाद का समर्थन करना चाहते हैं, उसमें मूल्य जोड़ें।

android {
    defaultConfig {
        resValue "string", "app_name", "Full App"
        buildConfigField "boolean", "isDemo", "false"
    }
    productFlavors {
        demo {
            resValue "String", "app_name", "Demo App"
            buildConfigField "boolean", "isDemo", "true"
        }
        full {
            // use default values
        }
    }
}

ग्रेड आपके लिए सभी मर्जिंग / ओवरराइडिंग करेगा। उत्पन्न कोड आपको यह देखने की भी अनुमति देगा कि मान कहाँ से आते हैं, उदाहरण के लिए

<!-- Values from default config. -->
<string name="app_name" translatable="false">Default Name</string>

तथा

public final class BuildConfig {
    public static final String VERSION_NAME = "1.0";
    // Fields from product flavor: demo
    public static final boolean isDemo = true;
}

स्वाद आयाम का उपयोग करना

जब ऐप एक से अधिक मानदंडों पर आधारित होता है, तो बहुत सारे स्वाद बनाने के बजाय आप स्वाद आयामों को परिभाषित कर सकते हैं।

स्वाद आयाम कार्टेसियन उत्पाद को परिभाषित करते हैं जिसका उपयोग वेरिएंट के उत्पादन के लिए किया जाएगा।

उदाहरण:

flavorDimensions("dimA", "dimB")

productFlavors {

    row1 {
        ...
        dimension = "dimA"
    }
    row2 {
        ...
        dimension = "dimA"
    }
    row3 {
         ...
        dimension = "dimA"
    }

    col1 {
        ...
        dimension = "dimB"
    }
    col2 {
        ...
        dimension = "dimB"
    }
    col3 {
         ...
        dimension = "dimB"
    }
}

यह कॉन्फ़िगरेशन 18 (3 3 2) वेरिएंट का उत्पादन करेगा (यदि आपके पास 2 मानक बिल्ड प्रकार हैं: debug और release )। निम्नलिखित बिल्ड वेरिएंट बनाए जाएंगे:

row1-col1-debug 
row1-col2-debug 
row1-col3-debug 
row1-col1-release
row1-col2-release
row1-col3-release

row2-col1-debug 
row2-col2-debug 
row2-col3-debug 
row2-col1-release
row2-col2-release
row2-col3-release

row3-col1-debug 
row3-col2-debug 
row3-col3-debug 
row3-col1-release
row3-col2-release
row3-col3-release

आयाम का क्रम android.flavorDimensions द्वारा परिभाषित किया गया है और जो फ्लेवर दूसरे को ओवरराइड करता है , जो संसाधनों के लिए महत्वपूर्ण है जब एक स्वाद में एक मूल्य कम प्राथमिकता वाले स्वाद में परिभाषित मूल्य को बदल देता है।

स्वाद आयाम पहले उच्च प्राथमिकता के साथ परिभाषित किया गया है। तो इस मामले में:

dimA > dimB > defaultConfig

एक "स्वाद संयोजन" स्रोत फ़ोल्डर भी उपलब्ध है जब एक से अधिक स्वाद आयाम का उपयोग किया जाता है। उदाहरण के लिए src/flavor1Flavor2/

  • ध्यान दें कि यह सभी आयामों के सभी संयोजनों के लिए है।
  • इसकी प्राथमिकता एकल-स्वाद स्रोतों से अधिक है, लेकिन बिल्ड-प्रकारों की तुलना में कम है।

स्वादों के लिए निर्भरता जोड़ें

आप एक विशिष्ट उत्पाद स्वाद के लिए अलग-अलग निर्भरता जोड़ सकते हैं।

बस <flavorName>Compile 'group:name:xyz' उपयोग <flavorName>Compile 'group:name:xyz' वाक्यविन्यास:

android {
    ...    
    productFlavors {
        flavor1 {
           //.....
        }
        flavor2 {
           //.....
        }
    }
}

...
dependencies {

    compile 'com.android.support:appcompat-v7:24.2.0'
   
    // Add a dependency only for flavor1
    flavor1Compile 'group:name:x.y.z'

    // Add a dependency only for flavor2
    flavor2Compile 'group:name:x.y.z'
} 

प्रोडक्ट फ्लेवर उदाहरण विकसित और उत्पादन

productFlavors {
        // Define separate dev and prod product flavors.
        dev {
            // dev utilizes minSDKVersion = 21 to allow the Android gradle plugin
            // to pre-dex each module and produce an APK that can be tested on
            // Android Lollipop without time consuming dex merging processes.
            minSdkVersion 21
        }
        prod {
            // The actual minSdkVersion for the application.
            minSdkVersion 15
        }
    }


Modified text is an extract of the original Stack Overflow Documentation
के तहत लाइसेंस प्राप्त है CC BY-SA 3.0
से संबद्ध नहीं है Stack Overflow