android एंड्रॉइड स्टूडियो में ग्रैडल क्या है?




android-studio gradle (18)

संक्षिप्त जवाब

ग्रैडल एक बिल्ड सिस्टम है।

लंबा जवाब

एंड्रॉइड स्टूडियो से पहले आप अपने विकास उद्देश्यों के लिए एक्लिप्स का उपयोग कर रहे थे, और संभावना है कि आपको ग्रहण के बिना अपने एंड्रॉइड एपीके को कैसे बनाया जाए।

आप इसे कमांड लाइन पर कर सकते हैं, लेकिन आपको सीखना होगा कि प्रत्येक उपकरण (डीएक्स, एएपीटी) एसडीके में क्या करता है। ग्रहण ने हमें इन निम्न स्तरों से बचाया लेकिन महत्वपूर्ण, मौलिक विवरण हमें अपना स्वयं का निर्माण प्रणाली देकर बचाया।

अब, क्या आपने कभी सोचा है कि res फ़ोल्डर आपके src फ़ोल्डर के समान निर्देशिका में क्यों है?

यह वह जगह है जहां बिल्ड सिस्टम तस्वीर में प्रवेश करता है। बिल्ड सिस्टम स्वचालित रूप से सभी स्रोत फ़ाइलों ( .java या .xml ) लेता है, फिर उचित उपकरण लागू करता है (उदाहरण के लिए java क्लास फाइलें लेती हैं और उन्हें dex फाइलों में परिवर्तित करती हैं), और उन सभी को एक संपीड़ित फ़ाइल, हमारे प्यारे एपीके में समूहित करती है।

यह बिल्ड सिस्टम कुछ सम्मेलनों का उपयोग करता है: एक का उदाहरण स्रोत फ़ाइलों (ग्रहण में यह \src फ़ोल्डर है) या संसाधन फ़ाइलों (ग्रहण में यह \res फ़ोल्डर है) वाली निर्देशिका निर्दिष्ट करना है।

अब, इन सभी कार्यों को स्वचालित करने के लिए, एक स्क्रिप्ट होना चाहिए; आप विंडोज़ में लिनक्स या बैच फाइल सिंटैक्स में शेल स्क्रिप्टिंग का उपयोग करके अपनी खुद की बिल्ड सिस्टम लिख सकते हैं। समझ गया?

ग्रैडल एक और निर्माण प्रणाली है जो अन्य निर्माण प्रणालियों से सर्वोत्तम सुविधाएं लेती है और उन्हें एक साथ जोड़ती है। यह उनकी कमियों के आधार पर सुधार हुआ है। यह एक जेवीएम आधारित बिल्ड सिस्टम है , इसका मतलब यह है कि आप जावा में अपनी स्क्रिप्ट लिख सकते हैं, जो एंड्रॉइड स्टूडियो का उपयोग करता है।

धीरे-धीरे के बारे में एक अच्छी बात यह है कि यह एक प्लगइन आधारित प्रणाली है । इसका अर्थ यह है कि यदि आपके पास अपनी प्रोग्रामिंग भाषा है और आप स्रोतों से कुछ पैकेज (जावा के लिए जेएआर जैसे आउटपुट) बनाने के कार्य को स्वचालित करना चाहते हैं तो आप जावा या ग्रोवी (या कोटलिन, here देखें) में एक पूर्ण प्लगइन लिख सकते हैं, और इसे दुनिया के बाकी हिस्सों में वितरित करें।

Google ने इसका उपयोग क्यों किया?

Google ने बाजार पर सबसे उन्नत बिल्ड सिस्टमों में से एक देखा और महसूस किया कि आप कम से कम सीखने की वक्र के साथ अपनी स्क्रिप्ट लिख सकते हैं, और ग्रोवी या किसी अन्य नई भाषा को सीखने के बिना। तो उन्होंने ग्रैडल के लिए एंड्रॉइड प्लगइन लिखा।

आपने अपनी परियोजना में build.gradle फ़ाइल देखी build.gradle । यही वह जगह है जहां आप अपने कार्यों को स्वचालित करने के लिए स्क्रिप्ट लिख सकते हैं। इन फ़ाइलों में आपने जो कोड देखा वह ग्रोवी कोड है। यदि आप System.out.println("Hello Gradle!"); लिखते हैं System.out.println("Hello Gradle!"); तो यह आपके कंसोल पर प्रिंट करेगा।

बिल्ड स्क्रिप्ट में आप क्या कर सकते हैं?

एक साधारण उदाहरण यह है कि वास्तविक निर्माण प्रक्रिया होने से पहले आपको कुछ फ़ाइलों को एक निर्देशिका से दूसरे में कॉपी करना होगा। एक ग्रैडल बिल्ड स्क्रिप्ट यह कर सकती है।

https://code.i-harness.com

ग्रैडल मेरे लिए और नए एंड्रॉइड डेवलपर के लिए भी भ्रमित है। क्या कोई यह बता सकता है कि एंड्रॉइड स्टूडियो में कौन सा ग्रेडल है और इसका उद्देश्य क्या है? एंड्रॉइड स्टूडियो में ग्रैडल क्यों शामिल है?


1 - Gradle पृष्ठभूमि की जानकारी।

2 - Gradle अवधारणाएं।

3 - प्रारंभिक चरण।

4 - प्रारंभिक चरण (Cont।)।

5 - Gradle क्या है?

6 - कॉन्फ़िगरेशन चरण।

यह LINK देखें


ग्रैडल एंड्रॉइड के लिए एक उन्नत बिल्ड टूलकिट है जो निर्भरता का प्रबंधन करता है और आपको कस्टम बिल्ड तर्क को परिभाषित करने की अनुमति देता है। विशेषताएं 1 जैसी हैं। बिल्ड प्रक्रिया को कस्टमाइज़, कॉन्फ़िगर और विस्तारित करें। 2. एक ही प्रोजेक्ट का उपयोग करके विभिन्न सुविधाओं के साथ अपने ऐप के लिए एकाधिक एपीके बनाएं। 3. कोड और संसाधनों का पुन: उपयोग करें। इस लिंक को http://developer.android.com/sdk/installing/studio-build.html देखें


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

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

अन्य भाषाओं के लिए कुछ समान निर्माण प्रणाली हैं ( here पूरी सूची देखें):

  1. अपाचे चींटी और अपाचे मेवेन - जावा
  2. एसबीटी (सरल बिल्ड टूल) - स्कैला के लिए (प्ले फ्रेमवर्क आदि)
  3. आप - पायथन आधारित निर्माण उपकरण
  4. रेक (अपाचे बिल्डर) - रूबी
  5. Leiningen लिए Leiningen

ग्रैडल एक बिल्ड टूल कस्टम है और एपीके बनाने या एप्लिकेशन पैकेज किट के रूप में जाना जाता है।


ग्रैडल एक स्वचालित बिल्ड टूलकिट है जो न केवल एंड्रॉइड प्रोजेक्ट्स के लिए कई अलग-अलग वातावरणों में एकीकृत हो सकता है।

यहां कुछ चीजें हैं जिन्हें आप धीरे-धीरे कर सकते हैं।

  • नई परियोजनाओं के लिए न्यूनतम विन्यास आवश्यक है क्योंकि ग्रैडल ने आपके एंड्रॉइड स्टूडियो प्रोजेक्ट्स के लिए कॉन्फ़िगरेशन को डिफ़ॉल्ट रूप से परिभाषित किया है।

  • निर्भरता घोषणा। आप स्थानीय या दूरस्थ सर्वर में होस्ट की गई निर्भरता जार फ़ाइलों या लाइब्रेरी फ़ाइलों की घोषणा कर सकते हैं।

  • ग्रैडल स्वचालित रूप से एक परीक्षण निर्देशिका और आपके प्रोजेक्ट के स्रोत से एक परीक्षण एपीके उत्पन्न करता है।

  • यदि आप अपनी आवश्यक जानकारी, जैसे कि keyPassword और keyAlias , अपनी keyAlias बिल्ड फ़ाइल में keyAlias , तो आप हस्ताक्षरित keyAlias करने के लिए keyAlias उपयोग कर सकते हैं।

  • ग्रैडल विभिन्न पैकेज के साथ कई एपीके उत्पन्न कर सकता है और एक मॉड्यूल से कॉन्फ़िगरेशन बना सकता है।


ग्रैडल बिल्ड सिस्टम को एंड्रॉइड एप्लिकेशन बनाने में जटिल परिदृश्यों का समर्थन करने के लिए डिज़ाइन किया गया है:

बहु वितरण : एक ही आवेदन कई ग्राहकों या कंपनियों के लिए अनुकूलित किया जाना चाहिए

मल्टी-एपीके: कोड के हिस्सों का पुन: उपयोग करते समय विभिन्न डिवाइस प्रकारों के लिए एकाधिक एपीके के निर्माण का समर्थन करता है


ग्रैडली जीवीवी भाषा है जो जावा के लिए चींटी है। असल में, यह ग्रोवी का निर्माण उपकरण है। चींटी के विपरीत, यह पूर्ण ग्रोवी भाषा पर आधारित है। उदाहरण के लिए, आप एक विशिष्ट डोमेन भाषा पर निर्भर होने के बजाय कुछ करने के लिए ग्रैडल स्क्रिप्ट में ग्रोवी स्क्रिप्ट कोड लिख सकते हैं।

मुझे इंटेलिजे के विशिष्ट एकीकरण को नहीं पता, लेकिन कल्पना करें कि आप ग्रोवी को "विस्तारित" कर सकते हैं जैसे कि आप विशिष्ट "बिल्ड" भाषा प्राइमेटिव लिख सकते हैं और वे सिर्फ ग्रोवी भाषा का हिस्सा बन गए हैं। (ग्रोवी का मेटाप्रोग्रामिंग स्वयं के लिए एक संपूर्ण चर्चा है।) इंटेलिजे / Google एक बहुत ही उच्च स्तरीय बिल्ड भाषा बनाने के लिए ग्रैडल का उपयोग कर सकता है, फिर भी, यह एक विस्तार योग्य, खुले मानक पर एक भाषा है।


यह नया निर्माण टूल है जिसे Google एंड्रॉइड के लिए उपयोग करना चाहता है। इसका उपयोग अधिक एक्स्टेंसिबल होने और चींटी से उपयोगी होने के कारण किया जा रहा है। यह डेवलपर अनुभव को बढ़ाने के लिए है।

आप यहां Google I / O पर एंड्रॉइड डेवलपर टीम से जेवियर डक्रोहेट द्वारा एक वार्ता देख सकते हैं।

Google I / O के दौरान , जेवियर और टोर नॉरबी द्वारा एंड्रॉइड स्टूडियो पर एक और बात भी है


यहां आपको ग्रैडल के बारे में जानने के लिए आवश्यक सब कुछ मिल सकता है: ग्रैडल प्लगइन उपयोगकर्ता मार्गदर्शिका

नई बिल्ड सिस्टम के लक्ष्य

नए निर्माण प्रणाली के लक्ष्य हैं:

  • कोड और संसाधनों का पुन: उपयोग करना आसान बनाएं
  • मल्टी-एपीके वितरण या किसी एप्लिकेशन के विभिन्न स्वादों के लिए, एप्लिकेशन के कई रूपों को बनाना आसान बनाएं
  • निर्माण प्रक्रिया को कॉन्फ़िगर, विस्तार और अनुकूलित करना आसान बनाएं
  • अच्छा आईडीई एकीकरण

क्यों झुकाव?

ग्रैडल एक उन्नत बिल्ड सिस्टम के साथ-साथ एक उन्नत बिल्ड टूलकिट है जो प्लगइन के माध्यम से कस्टम बिल्ड लॉजिक बनाने की इजाजत देता है।

यहां कुछ ऐसी विशेषताएं दी गई हैं जो हमें ग्रैडल चुनती हैं:

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

Gradle एक उन्नत बिल्ड सिस्टम के साथ-साथ एक उन्नत बिल्ड टूलकिट है जो प्लगइन के माध्यम से कस्टम बिल्ड लॉजिक बनाने की इजाजत देता है!

लाभ:

  • डीएसएल - ग्रोवी के आधार पर डोमेन विशिष्ट भाषा
  • डीएजी - निर्देशित विश्वकोश ग्राफ
  • वृद्धिशील बनाता है
  • एक्सटेंसिबल डोमेन मॉडल
  • ग्रैडल हमेशा अद्यतित है
  • कार्य को निष्पादित करने से पहले, ग्रैडल अपने कार्य के इनपुट और आउटपुट का एक स्नैपशॉट लेता है।
  • यदि स्नैपशॉट बदल गया है या यह अस्तित्व में नहीं है, तो Gralde इस कार्य को फिर से निष्पादित करेगा।

प्रकट प्रविष्टियां

डीएसएल के माध्यम से निम्नलिखित मैनिफेस्ट प्रविष्टियों को कॉन्फ़िगर करना संभव है:

संस्करण बनाएँ

डिफ़ॉल्ट रूप से, एंड्रॉइड प्लगइन स्वचालित रूप से एक डीबग और एप्लिकेशन के रिलीज़ संस्करण दोनों को बनाने के लिए प्रोजेक्ट सेट करता है।

निर्भरता

  1. स्थानीय निर्भरता:

यदि आपके स्थानीय फाइल सिस्टम में बाइनरी अभिलेखागार हैं जो एक मॉड्यूल पर निर्भर करता है, जैसे कि जेएआर फाइलें, तो आप उस मॉड्यूल के लिए बिल्ड फ़ाइल में इन निर्भरताओं को घोषित कर सकते हैं।

  1. रिमोट निर्भरता:

सबसे पहले भंडार सूची में जोड़ा जाना चाहिए, और फिर निर्भरता को इस तरह घोषित किया जाना चाहिए कि मैवेन या आइवी अपनी कलाकृतियों की घोषणा करे।


Gradle क्या है और एंड्रॉइड स्टूडियो में इसका उपयोग कैसे करें इसके बारे में एक विस्तृत स्पष्टीकरण यहां दिया गया है।

ग्रैडल फाइलों की खोज

  1. जब भी आप एंड्रॉइड स्टूडियो में कोई प्रोजेक्ट बनाते हैं, तो बिल्ड सिस्टम स्वचालित रूप से सभी आवश्यक ग्रैडल बिल्ड फाइलें उत्पन्न करता है।

ग्रैडल बिल्ड फाइलें

  1. ग्रैडल बिल्ड फाइलें कस्टम बिल्ड लॉजिक को परिभाषित करने और ग्रैडल के लिए एंड्रॉइड प्लगइन के एंड्रॉइड-विशिष्ट तत्वों के साथ बातचीत करने के लिए Domain Specific Language or DSL का उपयोग करती हैं।

  2. एंड्रॉइड स्टूडियो परियोजनाओं में 1 या अधिक मॉड्यूल होते हैं, जो वे घटक होते हैं जिन्हें आप स्वतंत्र रूप से बना सकते हैं, परीक्षण कर सकते हैं और डीबग कर सकते हैं। प्रत्येक मॉड्यूल की अपनी बिल्ड फ़ाइल होती है, इसलिए प्रत्येक एंड्रॉइड स्टूडियो प्रोजेक्ट में 2 प्रकार की ग्रैडल बिल्ड फाइलें होती हैं।

  3. शीर्ष-स्तरीय बिल्ड फ़ाइल: यह वह जगह है जहां आपको कॉन्फ़िगरेशन विकल्प मिलेंगे जो आपके प्रोजेक्ट को बनाने वाले सभी मॉड्यूल के लिए आम हैं।

  4. मॉड्यूल-स्तरीय बिल्ड फ़ाइल: प्रत्येक मॉड्यूल में अपनी खुद की ग्रैडल बिल्ड फ़ाइल होती है जिसमें मॉड्यूल-विशिष्ट बिल्ड सेटिंग्स होती हैं। आप अपने प्रोजेक्ट की शीर्ष-स्तरीय बिल्ड फ़ाइल की बजाय अपने अधिकांश समय संपादन मॉड्यूल-स्तरीय बिल्ड फ़ाइल (ओं) को संपादित करेंगे।

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

शीर्ष-स्तर ग्रैडल बिल्ड फ़ाइल

प्रत्येक एंड्रॉइड स्टूडियो प्रोजेक्ट में एक सिंगल, टॉप-स्तरीय ग्रैडल बिल्ड फ़ाइल होती है। यह build.gradle फ़ाइल पहली आइटम है जो build.gradle स्क्रिप्ट फ़ोल्डर में दिखाई देती है और स्पष्ट रूप से परियोजना को चिह्नित किया जाता है।

अधिकांश समय, आपको इस फ़ाइल में कोई भी बदलाव करने की आवश्यकता नहीं होगी, लेकिन यह अभी भी आपकी सामग्री और आपकी परियोजना के भीतर जो भूमिका निभाता है उसे समझने में उपयोगी है।

मॉड्यूल-स्तर ग्रैडल बिल्ड फ़ाइलें

प्रोजेक्ट-स्तरीय ग्रैडल बिल्ड फ़ाइल के अतिरिक्त, प्रत्येक मॉड्यूल में स्वयं की एक ग्रैडल बिल्ड फ़ाइल होती है। नीचे एक मूल, मॉड्यूल-स्तर ग्रैडल बिल्ड फ़ाइल का एक एनोटेटेड संस्करण है।

अन्य ग्रैडल फ़ाइलें

Build.gradle फ़ाइलों के अतिरिक्त, आपके ग्रैडल स्क्रिप्ट फ़ोल्डर में कुछ अन्य ग्रैडल फ़ाइलें शामिल हैं। अधिकांश समय आपको इन फ़ाइलों को मैन्युअल रूप से संपादित नहीं करना होगा क्योंकि जब आप अपनी परियोजना में कोई प्रासंगिक परिवर्तन करते हैं तो वे स्वचालित रूप से अपडेट हो जाएंगे। हालांकि, यह प्रोजेक्ट के भीतर इन फ़ाइलों को चलाने की भूमिका को समझना एक अच्छा विचार है।

gradle-wrapper.properties (ग्रैडल संस्करण)

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

settings.gradle

यह फ़ाइल आपके प्रोजेक्ट को बनाने वाले सभी मॉड्यूल का संदर्भ देती है।

gradle.properties (परियोजना गुण)

इस फ़ाइल में आपकी पूरी परियोजना के लिए कॉन्फ़िगरेशन जानकारी है। यह डिफ़ॉल्ट रूप से खाली है, लेकिन आप इस फ़ाइल में उन्हें जोड़कर अपनी परियोजना में गुणों की विस्तृत श्रृंखला लागू कर सकते हैं।

local.properties (एसडीके स्थान)

यह फ़ाइल एंड्रॉइड ग्रैडल प्लगइन बताती है जहां यह आपके एंड्रॉइड एसडीके इंस्टॉलेशन को पा सकता है।

नोट: local.properties में ऐसी जानकारी होती है जो एंड्रॉइड एसडीके की स्थानीय स्थापना के लिए विशिष्ट है। इसका मतलब है कि आपको इस फ़ाइल को स्रोत नियंत्रण में नहीं रखना चाहिए।

सुझाए गए पढ़ने - ट्यूटप्लस ट्यूटोरियल

मुझे इससे धीरे-धीरे समझने की समझ मिली।


@ ब्रायन गार्डनर द्वारा :

ग्रैडल प्रोग्रामिंग परियोजनाओं के लिए एक व्यापक निर्माण उपकरण और निर्भरता प्रबंधक है। ग्रोवी के आधार पर इसकी एक डोमेन विशिष्ट भाषा है। ग्रैडल जावा, एंड्रॉइड और स्कैला समेत कई प्रकार की परियोजनाओं के लिए बिल्ड-बाय-कन्वेंशन समर्थन भी प्रदान करता है।

ग्रैडल की सुविधा:

  1. निर्भरता प्रबंधन
  2. ग्रैडल से चींटी का उपयोग करना
  3. ग्रैडल प्लगइन्स
  4. जावा प्लगइन
  5. एंड्रॉइड प्लगइन
  6. बहु परियोजना बनाता है

ग्रैडल एंड्रॉइड स्टूडियो पर चल रही एक बिल्ड सिस्टम है।

उदाहरण के लिए अन्य भाषाओं में:

  • जावा की Ant और Maven
  • रुबी का Rake
  • सी के A-A-P
  • .NET का NAnt
  • लिनक्स में Make

Gradle = Groovy + Cradle Hans Dockter forum comment

The confusion is a bit unnecessary when it could have just been called "Build" or something in Android Studio.

We like to make things difficult for ourselves in the Development community.


Gradle is an automated build toolkit that allows the way in which projects are built to be configured and managed through a set of build configuration files. This includes defining how a project is to be built, what dependencies need to be fulfilled for the project to build successfully and what the end result (or results) of the build process should be. The strength of Gradle lies in the flexibility that it provides to the developer. The Gradle system is a self-contained, command-line based environment that can be integrated into other environments through the use of plug-ins. In the case of Android Studio, Gradle integration is provided through the appropriately named Android Studio Plug-in.


In plain terms, Gradle is a tool provided by Android Studio in order to implement two important processes:

  1. Build our projects
  2. Package AndroidManifest.xml,res folder,and binary code into a specially formatted zip file called APK

The Android build system compiles app resources and source code, and packages them into APKs that you can test, deploy, sign, and distribute. Android Studio uses Gradle , an advanced build toolkit, to automate and manage the build process, while allowing you to define flexible custom build configurations. Each build configuration can define its own set of code and resources, while reusing the parts common to all versions of your app. The Android plugin for Gradle works with the build toolkit to provide processes and configurable settings that are specific to building and testing Android applications.





build-automation