android Gradle के साथ संयोजन करते समय एंड्रॉइड ऐप पैकेज नाम कैसे बदलें?




android-build android-gradle (4)

क्या ग्रैडल का उपयोग करके एंड्रॉइड एप्लिकेशन के पैकेज नाम को बदलना संभव है?

मुझे एक ही ऐप की दो प्रतियां संकलित करने की आवश्यकता है, जिसमें एक अद्वितीय पैकेज नाम है (इसलिए मैं बाजार में दो बार प्रकाशित कर सकता हूं)।


1.0.0+ के ग्रेडल प्लगइन संस्करण के साथ आपको माइग्रेशन गाइड में बताए गए एप्लिकेशन आईडी का उपयोग करना होगा

ProductFlavors में नामांकित गुण

packageName => applicationId

इस प्रकार आपके build.gradle में अब आप इसका उपयोग करेंगे:

productFlavors {
   flavor1 {
      applicationId "com.example.flavor1"
   }

   flavor2 {
      applicationId "com.example.flavor2"
   } 
}

आप ऐसा कुछ कर सकते हैं

android {
    ...

    defaultConfig {
        minSdkVersion 8
        versionCode 10
    }

    flavorDimensions "flavor1", "flavor2"

    productFlavors {
        flavor1 {
            applicationId "com.example.flavor1"
            versionCode 20
        }

        flavor2 {
            applicationId "com.example.flavor2"
            minSdkVersion 14
        }
    }
}

यदि आप वन-ऑफ बिल्ड करना चाहते हैं तो आप फ़ील्ड android.defaultConfig.applicationId भी बदल सकते हैं।

से लिया गया: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration उत्पाद- स्वाद - http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Product-Flavor-Configuration


एथन के उत्तर के रूप में उत्पाद स्वादों का उपयोग करने के लिए एक आसान विकल्प के रूप में , आप निर्माण प्रकारों को भी अनुकूलित कर सकते हैं।

दृष्टिकोण के बीच कैसे चयन करें:

  • यदि आपको डिवाइस पर स्थापित डीबग और रिलीज एपीक्स दोनों सक्षम करने के लिए अलग-अलग पैकेज नामों की आवश्यकता है, तो नीचे ग्राउंड प्लगइन दस्तावेज़ सहमत होने के साथ, नीचे बिल्ड प्रकार का उपयोग करें। इस मामले में स्वाद एक ओवरकिल हैं। (मुझे लगता है कि सभी परियोजनाओं को डिफ़ॉल्ट रूप से ऐसा करना चाहिए, क्योंकि यह स्टोर को प्रकाशित करने के बाद विशेष रूप से जीवन को आसान बना देगा और नई सुविधाओं का विकास कर रहा है।)
  • उत्पाद स्वाद के लिए वैध उपयोग हैं , सामान्य उदाहरण मुफ्त और भुगतान किए गए संस्करणों वाला एक ऐप है। ऐसे मामले में, एथन के उत्तर की जांच करें और दस्तावेज़ीकरण भी पढ़ें: ग्राडल बिल्ड और ग्रैडल प्लगइन उपयोगकर्ता मार्गदर्शिका को कॉन्फ़िगर करना

(मुझे लगता है कि आप दो दृष्टिकोणों को भी जोड़ सकते हैं, जिसके परिणामस्वरूप प्रत्येक बिल्ड संस्करण में अलग-अलग पैकेज नाम होंगे, लेकिन मैंने इसका परीक्षण नहीं किया है।)

प्रकार कॉन्फ़िगरेशन बनाएं

डिबग बिल्ड प्रकार, और अन्य सभी गैर- रिलीज़ प्रकारों के लिए, applicationIdSuffix IdSuffix को परिभाषित करें जो डिफ़ॉल्ट पैकेज नाम में जोड़ा जाएगा। ( एंड्रॉइड ग्रैडल प्लगइन संस्करण 0.11 से पहले इस सेटिंग को packageNameSuffix नाम के रूप में जाना जाता था।)

android {
    buildTypes {
        debug {
            applicationIdSuffix '.debug'
            versionNameSuffix '-DEBUG'
        }

        beta {
            applicationIdSuffix '.beta'
            versionNameSuffix '-BETA'

            // NB: If you want to use the default debug key for a (non-debug) 
            // build type, you need to specify it:
            signingConfig signingConfigs.debug 
        }

        release {
            // signingConfig signingConfigs.release
            // runProguard true
            // ...
        }

    }
}

उपरोक्त, debug और release डिफ़ॉल्ट बिल्ड प्रकार हैं जिनके कुछ पहलुओं को कॉन्फ़िगर किया गया है, जबकि beta एक पूरी तरह से कस्टम बिल्ड प्रकार है। विभिन्न प्रकारों का निर्माण करने के लिए, सामान्य रूप से assembleBeta करें assembleDebug , assembleBeta आदि का उपयोग करें।

इसी प्रकार, आप AndroidManifest से डिफ़ॉल्ट संस्करण नाम को ओवरराइड करने के लिए versionNameSuffix का उपयोग कर सकते हैं (जो मुझे बहुत उपयोगी लगता है!)। जैसा कि ऊपर कॉन्फ़िगर किया गया है "0.8" → "0.8-बीटा"।

संसाधन:

मैं स्वयं इस सटीक उद्देश्य के लिए अब तक productFlavors का उपयोग कर रहा हूं, लेकिन ऐसा लगता है कि बिल्ड प्रकार अनुकूलन मेरी आवश्यकताओं के करीब हो सकता है, साथ ही यह बिल्ड कॉन्फ़िगर को सरल बना देता है।

अपडेट (2016) : मैंने तब से अपनी सभी परियोजनाओं में इस दृष्टिकोण का उपयोग किया है, और मुझे लगता है कि यह निश्चित रूप से जाने का तरीका है। मुझे फ़्यूचरिस द्वारा एंड्रॉइड बेस्ट प्रैक्टिस गाइड में भी शामिल किया गया।


एथन के जवाब से, स्वाद समूह और पैकेज दोनों नाम अब उपलब्ध नहीं हैं। मार्च 2015 तक काम करता है।

android {
...

defaultConfig {
    minSdkVersion 8
    versionCode 10
}

flavorDimensions "flavor"

productFlavors {
    flavor1 {
        flavorDimension "flavor"
        applicationId "com.example.flavor1"
        versionCode 20
    }

    flavor2 {
        flavorDimension "flavor"
        applicationId "com.example.flavor2"
        minSdkVersion 14
    }
}
}




android-gradle