अपना बिल्ड कॉन्फ़िगर करें

Android का बिल्ड सिस्टम, ऐप्लिकेशन के रिसॉर्स के साथ-साथ सोर्स कोड और पैकेज को इकट्ठा करता है उन्हें APK या Android ऐप्लिकेशन बंडल में बदलकर टेस्ट कर सकते हैं, डिप्लॉय कर सकते हैं, साइन कर सकते हैं और डिस्ट्रिब्यूट करना.

Android Studio, अपने-आप काम करने के लिए, Gradle का इस्तेमाल करता है, जो कि एक बेहतर बिल्ड टूलकिट है. और आपको ज़रूरत के मुताबिक, अपनी पसंद के मुताबिक बनाने की सुविधा देते हुए बिल्ड प्रोसेस को मैनेज करने की सुविधा मिलती है बिल्ड कॉन्फ़िगरेशन. हर बिल्ड कॉन्फ़िगरेशन कोड का अपना सेट तय कर सकता है और संसाधनों को फिर से इस्तेमाल करें. 'Android Gradle प्लग इन', बिल्ड टूलकिट के साथ काम करता है, ताकि ऐसी प्रोसेस और कॉन्फ़िगर की जा सकने वाली सेटिंग जिन्हें खास तौर पर बनाया और टेस्ट किया जाता है Android ऐप्लिकेशन.

Gradle और 'Android Gradle प्लग इन', Android Studio से अलग काम करते हैं. यह इसका मतलब है कि आपको Android Studio में अपने Android ऐप्लिकेशन बनाने होंगे, या उन मशीनों पर जहां Android Studio नहीं है, कमांड लाइन सेट करें. इंस्टॉल किए गए हैं, जैसे कि लगातार इंटिग्रेशन सर्वर.

अगर आप इसका इस्तेमाल नहीं कर रहे हैं, तो Android Studio में जाकर, अपना ऐप्लिकेशन बनाने और उसे चलाने का तरीका जान सकते हैं. इसके लिए, कमांड लाइन लिखें. बिल्ड का आउटपुट एक जैसा ही रहता है, चाहे आप किसी भी स्थिति में हों कमांड लाइन से, रिमोट मशीन पर या किसी अन्य सिस्टम का इस्तेमाल करके प्रोजेक्ट बनाना Android Studio.

ध्यान दें: क्योंकि Gradle और 'Android Gradle प्लग इन' चलते हैं अगर आपको Android Studio स्वतंत्र रूप से काम करना है, तो आपको बिल्ड टूल अपडेट करना होगा. अलग करना होगा. Gredle को अपडेट करने का तरीका जानने के लिए, प्रॉडक्ट की जानकारी पढ़ें और 'Android Gradle प्लग इन' होना चाहिए.

Android बिल्ड सिस्टम की सुविधाओं की मदद से, अपनी पसंद के मुताबिक कॉन्फ़िगरेशन बनाने के लिए किया जा सकता है. यह इस पेज से, आपको यह समझने में मदद मिलती है कि Android का बिल्ड सिस्टम कैसे काम करता है और इससे आपको एक से ज़्यादा बिल्ड कॉन्फ़िगरेशन को अपने-आप ऑप्टिमाइज़ करने में मदद मिल सकती है. अगर आपको अगर आपको अपने ऐप्लिकेशन को डिप्लॉय करने के बारे में ज़्यादा जानना है, तो ऐप्लिकेशन बनाना और चलाना लेख पढ़ें. कस्टम बनाने के लिए कॉन्फ़िगरेशन तुरंत बनाएं Android Studio में जाकर, बिल्ड कॉन्फ़िगर करें वैरिएंट के बारे में ज़्यादा जानें.

बिल्ड प्रोसेस

बिल्ड प्रोसेस में ऐसे कई टूल और प्रोसेस शामिल होती हैं जो आपके प्रोजेक्ट को बदल देती हैं को Android ऐप्लिकेशन पैकेज (APK) या Android ऐप्लिकेशन बंडल (एएबी) में एक्सपोर्ट कर सकते हैं.

'Android Gradle प्लग इन' आपके लिए ज़्यादातर बिल्ड प्रोसेस को पूरा करता है, लेकिन यह बनाने की प्रोसेस के कुछ पहलुओं को समझने में मदद मिलती है. इससे आपको यह समझने में मदद मिलेगी कि आपकी ज़रूरतें पूरी करने के लिए तैयार करें.

अलग-अलग प्रोजेक्ट के बिल्ड लक्ष्य अलग-अलग हो सकते हैं. उदाहरण के लिए, तीसरे पक्ष की लाइब्रेरी, Android Archive (AAR) या Java संग्रह (JAR) बनाती है लाइब्रेरी. हालांकि, सबसे सामान्य तरह का प्रोजेक्ट ऐप्लिकेशन होता है और ऐप्लिकेशन का बिल्ड प्रोजेक्ट, आपके ऐप्लिकेशन का डीबग या रिलीज़ APK या एएबी बनाता है, जिसे डिप्लॉय किया जा सकता है, टेस्ट करें या बाहरी उपयोगकर्ताओं के लिए रिलीज़ करें.

यह पेज ऐप्लिकेशन डेवलपमेंट पर फ़ोकस करता है, लेकिन बिल्ड के कई तरीके और कॉन्सेप्ट, ज़्यादातर बिल्ड टाइप में आम हैं.

Android बिल्ड शब्दावली

Gradle और 'Android Gradle प्लग इन', नीचे दिए गए पहलुओं को कॉन्फ़िगर करने में आपकी मदद करते हैं बिल्ड का साइज़:

बिल्ड के टाइप

बिल्ड टाइप ऐसी कुछ प्रॉपर्टी तय करता है जिनका इस्तेमाल Gradle, इमारत बनाते समय करता है और अपने ऐप्लिकेशन को पैकेजिंग के लिए तैयार करना. बिल्ड टाइप आम तौर पर, अलग-अलग आपके डेवलपमेंट के लाइफ़साइकल के अलग-अलग स्टेज होते हैं.

उदाहरण के लिए, डीबग बिल्ड टाइप डीबग विकल्पों को चालू करता है और ऐप्लिकेशन को डीबग कुंजी से साइन करता है, जबकि रिलीज़ का बिल्ड टाइप छोटा हो सकता है, उसे उलझा सकता है, और रिलीज़ के साथ आपके ऐप्लिकेशन पर साइन किया जा सकता है वितरण के लिए कुंजी.

आपको कम से कम एक बिल्ड टाइप तय करना होगा अपना ऐप्लिकेशन बनाना. Android Studio, डीबग और रिलीज़ बिल्ड टाइप बनाता है डिफ़ॉल्ट रूप से. अपने ऐप्लिकेशन के लिए पैकेजिंग की सेटिंग को पसंद के मुताबिक बनाना शुरू करने के लिए, इसका तरीका जानें बिल को कॉन्फ़िगर करने के लिए टाइप.

प्रॉडक्ट के फ़्लेवर
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है प्रॉडक्ट के फ़्लेवर आपके ऐप्लिकेशन के अलग-अलग वर्शन दिखाते हैं, जिन्हें उपयोगकर्ताओं के लिए उपलब्ध कराया जाता है, जैसे कि मुफ़्त और पैसे चुकाकर खरीदे जाने वाले वर्शन. आप शेयर करते समय, अलग-अलग कोड और संसाधनों का इस्तेमाल करने के लिए, प्रॉडक्ट के फ़्लेवर को पसंद के मुताबिक बनाएं और उन हिस्सों का फिर से इस्तेमाल करना जो आपके ऐप्लिकेशन के सभी वर्शन में आम हैं. प्रॉडक्ट फ़्लेवर की वैल्यू देना ज़रूरी नहीं है और आपको उन्हें मैन्युअल तरीके से बनाना होगा. वीडियो बनाने के लिए आपके ऐप्लिकेशन के अलग-अलग वर्शन, दोनों को कॉन्फ़िगर करने का तरीका जानें प्रॉडक्ट के फ़्लेवर के बारे में ज़्यादा जानें.
वैरिएंट बनाना
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड वैरिएंट, बिल्ड टाइप और प्रॉडक्ट फ़्लेवर का एक क्रॉस-प्रॉडक्ट होता है और वह कॉन्फ़िगरेशन है जिसका इस्तेमाल Gradle आपका ऐप्लिकेशन बनाने के लिए करता है. बिल्ड के वैरिएंट का इस्तेमाल करके, तो आपके पास डेवलपमेंट के दौरान अपने प्रॉडक्ट फ़्लेवर का डीबग वर्शन बनाने का विकल्प होता है और डिस्ट्रिब्यूशन के लिए, अपने प्रॉडक्ट के फ़्लेवर के साइन किए गए वर्शन वर्शन इस्तेमाल करें. बिल्ड वैरिएंट सीधे तौर पर कॉन्फ़िगर नहीं किए जाते, लेकिन आपने अलग-अलग तरह के और प्रॉडक्ट फ़्लेवर बनाने की सुविधा मिलती है. अतिरिक्त बिल्ड बनाया जा रहा है टाइप या प्रॉडक्ट के फ़्लेवर की मदद से, अन्य बिल्ड वैरिएंट भी बनाए जाते हैं. सीखने में बिल्ड के वैरिएंट बनाने और उन्हें मैनेज करने का तरीका जानने के लिए, बिल्ड वैरिएंट कॉन्फ़िगर करना लेख पढ़ें समीक्षा करें.
मेनिफ़ेस्ट में जोड़ी गई एंट्री
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड में मेनिफ़ेस्ट फ़ाइल की कुछ प्रॉपर्टी के लिए वैल्यू तय की जा सकती है वैरिएंट कॉन्फ़िगरेशन. ये बिल्ड वैल्यू, मेनिफ़ेस्ट फ़ाइल में सेव किया जाएगा. अगर आपको एक से ज़्यादा वैरिएंट जनरेट करने हैं, तो यह तरीका मददगार होता है अपने ऐप्लिकेशन को किसी दूसरे नाम, SDK टूल के कम से कम वर्शन या टारगेट SDK टूल का वर्शन. एक से ज़्यादा मेनिफ़ेस्ट मौजूद होने पर, मर्जर टूल मेनिफ़ेस्ट सेटिंग को मर्ज करती है.
डिपेंडेंसी
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड सिस्टम, आपके लोकल फ़ाइल सिस्टम से प्रोजेक्ट डिपेंडेंसी मैनेज करता है डेटा स्टोर करने की सुविधा देता है. इसका मतलब है कि आपको मैन्युअल तरीक़े से अपनी डिपेंडेंसी के बाइनरी पैकेज खोजें, डाउनलोड करें, और कॉपी करें प्रोजेक्ट डायरेक्ट्री में मौजूद डेटा. ज़्यादा जानकारी के लिए, बिल्ड जोड़ना वाला सेक्शन देखें डिपेंडेंसी.
साइन इन करना
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड सिस्टम आपको बिल्ड में साइनिंग सेटिंग तय करने देता है कॉन्फ़िगरेशन और बिल्ड के दौरान यह आपके ऐप्लिकेशन को अपने-आप साइन कर सकता है प्रोसेस. बिल्ड सिस्टम, डीबग वर्शन को डिफ़ॉल्ट पासकोड से साइन करता है और बिल्ड पर पासवर्ड के प्रॉम्प्ट से बचने के लिए, जाने-पहचाने क्रेडेंशियल का इस्तेमाल करने वाला सर्टिफ़िकेट समय. बिल्ड सिस्टम तब तक रिलीज़ वर्शन पर हस्ताक्षर नहीं करता, जब तक आप इस बिल्ड के लिए साइनिंग कॉन्फ़िगरेशन को साफ़ तौर पर तय करें. अगर आपको अगर आपके पास रिलीज़ पासकोड है, तो अपने ऐप्लिकेशन पर हस्ताक्षर करें सेक्शन में बताए गए तरीके से इसे जनरेट किया जा सकता है. हस्ताक्षर की हुई रिलीज़ के बिल्ड ज़्यादातर ऐप स्टोर से ऐप्लिकेशन उपलब्ध कराने के लिए ज़रूरी है.
कोड और संसाधन का दायरा कम करना
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड सिस्टम आपको इसके लिए एक अलग ProGuard नियमों वाली फ़ाइल तय करने देता है बिल्ड के हर वैरिएंट के लिए तैयार हो. आपका ऐप्लिकेशन बनाते समय, बिल्ड सिस्टम कम करने के लिए नियमों का सही सेट अपने कोड और संसाधन के लिए, पहले से मौजूद टूल, जैसे कि R8. अपने कोड और संसाधनों को छोटा करने से, APK या एएबी का साइज़ कम करने में मदद मिल सकती है.
एक से ज़्यादा APK काम करते हैं
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है बिल्ड सिस्टम से आपको अपने-आप ऐसे अलग-अलग APKs बनाने की सुविधा मिलती है जो हर रिपोर्ट में, सिर्फ़ ज़रूरी कोड और संसाधन मौजूद होते हैं का इस्तेमाल किया जा सकता है. और जानकारी के लिए देखें कई APK बनाएं. हालांकि, एक एएबी रिलीज़ करना इसका इस्तेमाल करने का सुझाव दिया जाता है, क्योंकि इसमें अलग-अलग भाषाओं के साथ-साथ साथ ही, स्क्रीन की सघनता और एबीआई के साथ-साथ, कोई भी अपलोड करने की ज़रूरत नहीं पड़ती कई आर्टफ़ैक्ट को Google Play से जोड़ना है. अगस्त 2021 के बाद सबमिट किए गए सभी नए ऐप्लिकेशन एएबी का इस्तेमाल करना ज़रूरी है.

Android बिल्ड में Java वर्शन

चाहे आपका सोर्स कोड Java, Kotlin या दोनों में लिखा हो, ऐसी कई जगहें हैं जहां आपको JDK या Java भाषा चुननी होगी वर्शन बनाने की ज़रूरत नहीं है. Android बिल्ड में Java वर्शन देखें देखें.

बिल्ड कॉन्फ़िगरेशन फ़ाइलें

कस्टम बिल्ड कॉन्फ़िगरेशन बनाने के लिए, आपको इनमें से किसी एक में बदलाव करना होगा या और बिल्ड कॉन्फ़िगरेशन फ़ाइलें शामिल करें. ये सामान्य टेक्स्ट वाली फ़ाइलों में, जानकारी देने के लिए डोमेन स्पेसिफ़िक लैंग्वेज (DSL) का इस्तेमाल किया जाता है. इसका इस्तेमाल करके बिल्ड लॉजिक में बदलाव करें Kotlin स्क्रिप्ट, यह Kotlin लैंग्वेज की स्टाइल है. Google आपके यूआरएल पैरामीटर को कैसे इस्तेमाल करेगा, यह तय करने के लिए ग्रूवी, जो कि डाइनैमिक भाषा का इस्तेमाल करें.

अपने विज्ञापनों को कॉन्फ़िगर करना शुरू करने के लिए, आपको Kotlin स्क्रिप्ट या Groovy की ज़रूरत नहीं है बनाना आसान है, क्योंकि 'Android Gradle प्लग इन', ज़्यादातर DSL एलीमेंट . 'Android Gradle प्लग इन DSL' के बारे में ज़्यादा जानने के लिए, डीएसएल के लिए रेफ़रंस दस्तावेज़. Kotlin स्क्रिप्ट भी अंदरूनी Gradle Kotlin DSL.

नया प्रोजेक्ट शुरू करने पर, Android Studio अपने-आप इनमें से कुछ प्रोजेक्ट बना देता है आपके लिए इन फ़ाइलों को सेव कर देता है और सही डिफ़ॉल्ट सेटिंग के हिसाब से उन्हें भरता है. प्रोजेक्ट फ़ाइल का लेआउट इस तरह का है:

└── MyApp/  # Project
    ├── gradle/
    │   └── wrapper/
    │       └── gradle-wrapper.properties
    ├── build.gradle(.kts)
    ├── settings.gradle(.kts)
    └── app/  # Module
    │   ├── build.gradle(.kts)
    │   ├── build/
    │   ├── libs/
    │   └── src/
    │        └── main/  # Source set
    │            ├── java/
    │            │   └── com.example.myapp
    │            ├── res/
    │            │   ├── drawable/
    │            │   ├── values/
    │            │   └── ...
    │            └── AndroidManifest.xml

ऐसी कुछ Gradle बिल्ड कॉन्फ़िगरेशन फ़ाइलें हैं जो Android ऐप्लिकेशन के लिए स्टैंडर्ड प्रोजेक्ट स्ट्रक्चर. शुरू करने से पहले तो अपने बिल्ड को कॉन्फ़िगर करते समय, इसके दायरे और मकसद को समझना ज़रूरी है को शामिल किया गया है.

Gradle Wrapper फ़ाइल

Gradle रैपर (gradlew) एक छोटा ऐप्लिकेशन है जो आपके ऐसा सोर्स कोड जो Gradle को डाउनलोड और लॉन्च करता है. इससे, बिल्ड को एक्ज़ीक्यूट करने की प्रोसेस एक जैसी हो जाती है. डेवलपर ऐप्लिकेशन स्रोत और gradlew चलाएं. यह ज़रूरी Gradle डाउनलोड करता है उपलब्ध कराता है और आपका ऐप्लिकेशन बनाने के लिए Gradle लॉन्च करता है.

gradle/wrapper/gradle-wrapper.properties फ़ाइल इसमें distributionUrl प्रॉपर्टी मौजूद होती है, जो बताती है कि Gradle का इस्तेमाल आपके बिल्ड को चलाने के लिए किया जाता है.

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.0-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists

Gradle सेटिंग फ़ाइल

settings.gradle.kts फ़ाइल (Kotlin DSL के लिए) या settings.gradle फ़ाइल (ग्रूवी डीएसएल के लिए) रूट में मौजूद है प्रोजेक्ट डायरेक्ट्री में मौजूद डेटा. यह सेटिंग फ़ाइल, प्रोजेक्ट-लेवल रिपॉज़िटरी के बारे में बताती है सेटिंग और Gradle को सूचित करता है कि अपने है. मल्टी-मॉड्यूल प्रोजेक्ट को हर उस मॉड्यूल को तय करना होगा जिसे का हिस्सा हैं.

ज़्यादातर प्रोजेक्ट के लिए, फ़ाइल डिफ़ॉल्ट रूप से कुछ इस तरह दिखती है:

Kotlin

pluginManagement {

    /**
      * The pluginManagement.repositories block configures the
      * repositories Gradle uses to search or download the Gradle plugins and
      * their transitive dependencies. Gradle pre-configures support for remote
      * repositories such as JCenter, Maven Central, and Ivy. You can also use
      * local repositories or define your own remote repositories. The code below
      * defines the Gradle Plugin Portal, Google's Maven repository,
      * and the Maven Central Repository as the repositories Gradle should use to look for its
      * dependencies.
      */

    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {

    /**
      * The dependencyResolutionManagement.repositories
      * block is where you configure the repositories and dependencies used by
      * all modules in your project, such as libraries that you are using to
      * create your application. However, you should configure module-specific
      * dependencies in each module-level build.gradle file. For new projects,
      * Android Studio includes Google's Maven repository and the Maven Central
      * Repository by default, but it does not configure any dependencies (unless
      * you select a template that requires some).
      */

  repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  repositories {
      google()
      mavenCentral()
  }
}
rootProject.name = "My Application"
include(":app")

ग्रूवी

pluginManagement {

    /**
      * The pluginManagement.repositories block configures the
      * repositories Gradle uses to search or download the Gradle plugins and
      * their transitive dependencies. Gradle pre-configures support for remote
      * repositories such as JCenter, Maven Central, and Ivy. You can also use
      * local repositories or define your own remote repositories. The code below
      * defines the Gradle Plugin Portal, Google's Maven repository,
      * and the Maven Central Repository as the repositories Gradle should use to look for its
      * dependencies.
      */

    repositories {
        gradlePluginPortal()
        google()
        mavenCentral()
    }
}
dependencyResolutionManagement {

    /**
      * The dependencyResolutionManagement.repositories
      * block is where you configure the repositories and dependencies used by
      * all modules in your project, such as libraries that you are using to
      * create your application. However, you should configure module-specific
      * dependencies in each module-level build.gradle file. For new projects,
      * Android Studio includes Google's Maven repository and the Maven Central
      * Repository by default, but it does not configure any dependencies (unless
      * you select a template that requires some).
      */

    repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
    repositories {
        google()
        mavenCentral()
    }
}
rootProject.name = "My Application"
include ':app'

टॉप लेवल की बिल्ड फ़ाइल

टॉप-लेवल build.gradle.kts फ़ाइल (Kotlin DSL के लिए) या build.gradle फ़ाइल (ग्रूवी डीएसएल के लिए) रूट में मौजूद है प्रोजेक्ट डायरेक्ट्री में मौजूद डेटा. यह आम तौर पर, इस्तेमाल किए जाने वाले प्लगिन के सामान्य वर्शन के बारे में बताता है मॉड्यूल के हिसाब से तय करें.

नीचे दिया गया कोड सैंपल, इसमें डिफ़ॉल्ट सेटिंग और DSL एलिमेंट के बारे में बताता है नया प्रोजेक्ट बनाने के बाद टॉप लेवल बिल्ड स्क्रिप्ट:

Kotlin

plugins {

    /**
     * Use `apply false` in the top-level build.gradle file to add a Gradle
     * plugin as a build dependency but not apply it to the current (root)
     * project. Don't use `apply false` in sub-projects. For more information,
     * see Applying external plugins with same version to subprojects.
     */

    id("com.android.application") version "8.6.0" apply false
    id("com.android.library") version "8.6.0" apply false
    id("org.jetbrains.kotlin.android") version "1.9.23" apply false
}

ग्रूवी

plugins {

    /**
     * Use `apply false` in the top-level build.gradle file to add a Gradle
     * plugin as a build dependency but not apply it to the current (root)
     * project. Don't use `apply false` in sub-projects. For more information,
     * see Applying external plugins with same version to subprojects.
     */

    id 'com.android.application' version '8.6.0' apply false
    id 'com.android.library' version '8.6.0' apply false
    id 'org.jetbrains.kotlin.android' version '1.9.23' apply false
}