ग्रेडल मेरे लिए थोड़ा भ्रमित करने वाला है, और किसी नए एंड्रॉइड डेवलपर के लिए भी। क्या कोई समझा सकता है कि एंड्रॉइड स्टूडियो में ग्रैडल क्या है और इसका उद्देश्य क्या है? इसे एंड्रॉइड स्टूडियो में क्यों शामिल किया गया है?
ग्रेडल मेरे लिए थोड़ा भ्रमित करने वाला है, और किसी नए एंड्रॉइड डेवलपर के लिए भी। क्या कोई समझा सकता है कि एंड्रॉइड स्टूडियो में ग्रैडल क्या है और इसका उद्देश्य क्या है? इसे एंड्रॉइड स्टूडियो में क्यों शामिल किया गया है?
जवाबों:
ग्रैडल एक बिल्ड सिस्टम है।
एंड्रॉइड स्टूडियो से पहले आप अपने विकास के उद्देश्यों के लिए ग्रहण का उपयोग कर रहे थे, और, संभावना है, आप नहीं जानते थे कि ग्रहण के बिना अपने एंड्रॉइड एपीके का निर्माण कैसे करें।
आप इसे कमांड लाइन पर कर सकते हैं, लेकिन आपको यह सीखना होगा कि एसडीके में प्रत्येक टूल (dx, aapt) क्या करता है। ग्रहण ने हम सभी को निम्न स्तर के लेकिन महत्वपूर्ण, मौलिक विवरणों से बचा लिया, जो हमें अपनी स्वयं की निर्माण प्रणाली प्रदान करते हैं।
अब, क्या आपने कभी सोचा है कि res
फ़ोल्डर आपके समान निर्देशिका में क्यों हैsrc
फ़ोल्डर ?
यह वह जगह है जहां निर्माण प्रणाली तस्वीर में प्रवेश करती है। बिल्ड सिस्टम स्वचालित रूप से सभी स्रोत फ़ाइलों ( .java
या) लेता है.xml
) , फिर उपयुक्त टूल को लागू करती है (उदाहरण के लिए java
क्लास फाइलें लेती है और उन्हें रूपांतरित करती हैdex
फ़ाइलों में ), और उन सभी को एक संपीड़ित फ़ाइल, हमारी प्यारी एपीके में समूहित करती है।
यह बिल्ड सिस्टम कुछ सम्मेलनों का उपयोग करता है: एक का एक उदाहरण स्रोत फ़ाइलों (निर्देशिका में यह \src
फ़ोल्डर है) या संसाधन फ़ाइलों (यह ग्रहण में है) युक्त निर्देशिका को निर्दिष्ट करना है\res
फ़ोल्डर है) ।
अब, इन सभी कार्यों को स्वचालित करने के लिए, एक स्क्रिप्ट होना चाहिए; आप खिड़कियों में शेल स्क्रिप्टिंग या बैच फ़ाइलों के सिंटैक्स का उपयोग करके अपना स्वयं का बिल्ड सिस्टम लिख सकते हैं। समझ गया?
ग्रैडल एक अन्य बिल्ड सिस्टम है जो अन्य बिल्ड सिस्टम से सर्वश्रेष्ठ विशेषताओं को लेता है और उन्हें एक में जोड़ता है। यह उनकी कमियों के आधार पर सुधार किया जाता है। यह एक JVM आधारित बिल्ड सिस्टम है , इसका मतलब यह है कि आप अपनी स्क्रिप्ट को जावा में लिख सकते हैं, जिसे Android Studio उपयोग करता है।
ग्रेडेल के बारे में एक अच्छी बात यह है कि यह एक प्लगइन आधारित प्रणाली है । इसका मतलब यह है कि अगर आपकी अपनी प्रोग्रामिंग भाषा है और आप कुछ पैकेज बनाने का काम करना चाहते हैं (स्रोतों से जावा के लिए JAR जैसा आउटपुट) तो आप जावा या ग्रूवी (या कोटलिन, यहां देखें ) में एक पूरा प्लगइन लिख सकते हैं , और इसे दुनिया के बाकी हिस्सों में वितरित करें।
Google ने बाजार पर सबसे उन्नत बिल्ड सिस्टमों में से एक को देखा और महसूस किया कि आप अपनी खुद की स्क्रिप्ट को बिना किसी सीख के वक्र के साथ लिख सकते हैं, और बिना ग्रूवी या किसी अन्य नई भाषा को सीखे। इसलिए उन्होंने ग्रैडल के लिए एंड्रॉइड प्लगइन लिखा।
आपने build.gradle
अपने प्रोजेक्ट में फ़ाइल देखी होगी । यही वह जगह है जहाँ आप अपने कार्यों को स्वचालित करने के लिए स्क्रिप्ट लिख सकते हैं। इन फ़ाइलों में आपने जो कोड देखा है, वह ग्रूवी कोड है। अगर आप लिखेंगेSystem.out.println("Hello Gradle!");
तो यह आपके कंसोल पर प्रिंट होगा।
एक सरल उदाहरण यह है कि वास्तविक निर्माण प्रक्रिया होने से पहले आपको कुछ फ़ाइलों को एक निर्देशिका से दूसरी में कॉपी करना होगा। एक ग्रैड बिल्ड स्क्रिप्ट ऐसा कर सकती है।
यह नया बिल्ड टूल है जिसे Google Android के लिए उपयोग करना चाहता है। इसका उपयोग चींटी की तुलना में अधिक एक्स्टेंसिबल, और उपयोगी होने के कारण किया जा रहा है। यह डेवलपर अनुभव को बढ़ाने के लिए है।
आप Google I / O पर Android डेवलपर टीम से जेवियर डुक्रोट की बातचीत यहां देख सकते हैं।
ज़ेवियर और टोर नॉर्बी द्वारा एंड्रॉइड स्टूडियो पर एक और बात भी है, यहां Google I / O के दौरान भी ।
ग्रैडल एक निर्माण प्रणाली है जो एंड्रॉइड स्टूडियो पर चल रही है ।
उदाहरण के लिए अन्य भाषाओं में:
Gradle
यह समान है make
, तो मुझे इसकी अवधारणा मिली
यहाँ क्या है के बारे में एक विस्तृत विवरण दिया गया है Gradle
एंड्रॉइड स्टूडियो में इसका उपयोग कैसे करें और कैसे करें, इसके दिया गया है।
ग्रेडिंग फाइल्स की खोज
ग्रेड बनाएँ फ़ाइलें
ग्रेड बिल्ड फ़ाइलों का उपयोग Domain Specific Language or DSL
कस्टम बिल्ड लॉजिक को परिभाषित करने और ग्रैडल के लिए एंड्रॉइड प्लगइन के एंड्रॉइड-विशिष्ट तत्वों के साथ बातचीत करने के लिए किया जाता है।
एंड्रॉइड स्टूडियो प्रोजेक्ट में 1 या अधिक मॉड्यूल होते हैं, जो ऐसे घटक हैं जो आप स्वतंत्र रूप से बना सकते हैं, परीक्षण कर सकते हैं और डिबग कर सकते हैं। प्रत्येक मॉड्यूल की अपनी बिल्ड फ़ाइल होती है, इसलिए प्रत्येक Android स्टूडियो प्रोजेक्ट में 2 प्रकार के ग्रेडल बिल्ड फ़ाइल होते हैं।
टॉप-लेवल बिल्ड फ़ाइल: यह वह जगह है जहाँ आपको कॉन्फ़िगरेशन विकल्प मिलेंगे जो आपके प्रोजेक्ट को बनाने वाले सभी मॉड्यूल के लिए सामान्य हैं।
मॉड्यूल-स्तरीय बिल्ड फ़ाइल: प्रत्येक मॉड्यूल की अपनी ग्रेडल बिल्ड फ़ाइल होती है जिसमें मॉड्यूल-विशिष्ट बिल्ड सेटिंग्स होती हैं। आप अपने प्रोजेक्ट के टॉप-लेवल बिल्ड फ़ाइल के बजाय अपना अधिकांश समय मॉड्यूल-स्तरीय बिल्ड फ़ाइल (ओं) को संपादित करने में व्यतीत करेंगे।
इन पर एक नज़र डालने के लिए build.gradle
फ़ाइलों , एंड्रॉइड स्टूडियो का प्रोजेक्ट पैनल खोलें (प्रोजेक्ट टैब का चयन करके) और ग्रेड स्क्रिप्स फ़ोल्डर का विस्तार करें। ग्रैडल स्क्रिप्स फ़ोल्डर में पहले दो आइटम प्रोजेक्ट-लेवल और मॉड्यूल-लेवल ग्रैड बिल्ड फाइल हैं
शीर्ष स्तर ग्रेड फ़ाइल बनाएँ
हर एंड्रॉइड स्टूडियो प्रोजेक्ट में सिंगल, टॉप-लेवल ग्रेडल बिल्ड फाइल होती है। यह build.gradle
फ़ाइल पहला आइटम है जो ग्रैडल स्क्रिप्स फ़ोल्डर में दिखाई देता है और यह स्पष्ट रूप से प्रोजेक्ट चिह्नित है।
अधिकांश समय, आपको इस फ़ाइल में कोई भी बदलाव करने की आवश्यकता नहीं होगी, लेकिन इसकी सामग्री और आपके प्रोजेक्ट में यह भूमिका निभाने के लिए अभी भी उपयोगी है।
मॉड्यूल स्तर ग्रेड फ़ाइल बनाएँ
प्रोजेक्ट-लेवल ग्रैड बिल्ड फाइल के अलावा, प्रत्येक मॉड्यूल में ग्रैड बिल्ड फाइल होती है। नीचे एक बुनियादी, मॉड्यूल-स्तरीय ग्रेडल बिल्ड फ़ाइल का एनोटेट संस्करण है।
अन्य ग्रेड फ़ाइल
बिल्ड.ग्रेडल फ़ाइलों के अलावा, आपके ग्रेडल स्क्रिप्स फ़ोल्डर में कुछ अन्य ग्रेडल फाइलें होती हैं। जब आप अपनी परियोजना में कोई प्रासंगिक परिवर्तन करते हैं तो अधिकांश समय आपको इन फ़ाइलों को मैन्युअल रूप से संपादित नहीं करना पड़ेगा। हालाँकि, यह एक अच्छा विचार है कि इन फ़ाइलों को आपकी परियोजना के भीतर निभाने वाली भूमिका को समझने के लिए।
gradle-wrapper.properties (ग्रेड संस्करण)
यह फ़ाइल अन्य लोगों को आपका कोड बनाने की अनुमति देती है, भले ही उनके पास ग्रैडल उनके मशीन पर स्थापित न हो। यह फ़ाइल जाँचती है कि क्या ग्रेडल का सही संस्करण स्थापित है और यदि आवश्यक हो तो आवश्यक संस्करण डाउनलोड करता है।
settings.gradle
यह फ़ाइल उन सभी मॉड्यूलों का संदर्भ देती है जो आपकी परियोजना को बनाते हैं।
gradle.properties (परियोजना गुण)
इस फ़ाइल में आपके संपूर्ण प्रोजेक्ट के लिए कॉन्फ़िगरेशन जानकारी है। यह डिफ़ॉल्ट रूप से रिक्त है, लेकिन आप इस फ़ाइल में उन्हें जोड़कर अपनी परियोजना में कई प्रकार की संपत्तियाँ लागू कर सकते हैं।
स्थानीय.परिवहन (एसडीके स्थान)
यह फ़ाइल एंड्रॉइड ग्रैडल प्लगइन को बताती है जहां यह आपके एंड्रॉइड एसडीके इंस्टॉलेशन को पा सकता है।
नोट: local.properties
ऐसी जानकारी है जो Android SDK की स्थानीय स्थापना के लिए विशिष्ट है। इसका मतलब है कि आपको इस फ़ाइल को स्रोत नियंत्रण में नहीं रखना चाहिए।
सुझाव पढ़ने - Tutsplus ट्यूटोरियल
मुझे इससे स्पष्ट होने की स्पष्ट समझ है।
ग्रैडल एक प्रकार का बिल्ड टूल है जो प्रोग्राम के सोर्स कोड का है। तो यह एंड्रॉइड स्टूडियो का एक महत्वपूर्ण हिस्सा है, और अपने एप्लिकेशन को विकसित करने से पहले स्थापित करने की आवश्यकता है।
हमें इसे अलग से स्थापित करने की आवश्यकता नहीं है, क्योंकि एंड्रॉइड स्टूडियो हमारे लिए ऐसा करता है, जब हम अपना पहला प्रोजेक्ट बनाते हैं।
परिभाषा :: Gradle एक संरचित निर्माण तंत्र जहां यह एक डेवलपर उपकरण और बनाने के लिए एक परियोजना के संसाधनों का प्रबंधन करने के लिए लचीलापन बनाता है कि कर रहे हैं प्रदान करता है वर्णित किया जा सकता smaller in size
, targeting specific requirements
कुछ विन्यास की कुछ डिवाइस के लिए
बुनियादी विन्यास
minimumSdk
maximumSdk
targettedSdk
versionCode
versionName
पुस्तकालय :: हम आसानी से आवश्यकताओं के अनुसार एंड्रॉइड लाइब्रेरी या किसी अन्य तीसरे पक्ष के पुस्तकालयों को जोड़ सकते हैं जो पहले एक कठिन कार्य था। यदि लाइब्रेरी मौजूदा प्रोजेक्ट के लिए फिट नहीं है, तो डेवलपर को एक लॉग दिखाया जाता है जहां व्यक्ति प्रोजेक्ट में बदलाव करने के लिए एक उचित समाधान पा सकता है ताकि लाइब्रेरी को जोड़ा जा सके। यह निर्भरता की सिर्फ एक पंक्ति है
निर्माण के जनरेटिंग क्षेत्र
बिल्ड वेरिएंट की वैराइटी पाने के लिए बिल्ड फ्लेवर्स के साथ बिल्ड टाइप्स को मिलाएं
==================== ====================
| BuildTypes | | ProductFlavours |
-------------------- ====================== --------------------
| Debug,Production | || || | Paid,Free,Demo,Mock|
==================== || || ====================
|| ||
VV VV
=================================================================
| DebugPaid, DebugFree, DebugDemo, DebugMock |
| ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
=================================================================
आकार कम करना
ग्रैड, अप्रयुक्त संसाधनों को हटाकर एकीकृत पुस्तकालयों से अप्रयुक्त चीजों को हटाकर उत्पन्न बिल्ड के आकार को कम करने में मदद करता है
प्रबंधन के कार्य
हम आवश्यकताओं के आधार पर कुछ परिदृश्यों में कुछ अनुमतियों को जोड़कर कुछ बिल्ड के लिए कुछ अनुमतियों को निर्दिष्ट कर सकते हैं
CERTAIN उपकरणों के लिए निर्माण
हम कुछ उपकरणों के लिए निर्माण का प्रबंधन कर सकते हैं जिसमें कुछ घनत्व और कुछ एपी स्तर शामिल हैं। यह कई प्रकार के उपकरणों में आवश्यकताओं के अनुसार ऐप स्टोर में उत्पाद की तैनाती में मदद करता है
अच्छा संदर्भ
आप ग्रेड के बारे में जानने के लिए आवश्यक सब कुछ पा सकते हैं: ग्रैडल प्लगिन उपयोगकर्ता गाइड
नए बिल्ड सिस्टम के लक्ष्य
नई निर्माण प्रणाली के लक्ष्य हैं:
- कोड और संसाधनों का पुन: उपयोग करना आसान बनाएं
- बहु-एपीके वितरण के लिए या किसी एप्लिकेशन के विभिन्न स्वादों के लिए, एप्लिकेशन के कई वेरिएंट बनाना आसान बनाते हैं
- बिल्ड प्रक्रिया को कॉन्फ़िगर करना, विस्तारित करना और कस्टमाइज़ करना आसान बनाते हैं
- अच्छा आईडीई एकीकरण
ग्रैडल क्यों?
ग्रैडल एक उन्नत बिल्ड सिस्टम के साथ-साथ उन्नत बिल्ड टूलकिट है जो प्लगइन्स के माध्यम से कस्टम बिल्ड लॉजिक बनाने की अनुमति देता है।
यहाँ इसकी कुछ विशेषताएं दी गई हैं, जिससे हमें ग्रेड का चयन करना पड़ा:
- डोमेन लॉजिक (डीएसएल) बिल्ड लॉजिक का वर्णन और हेरफेर करने के लिए
- बिल्ड फाइलें ग्रूवी आधारित हैं और डीएसएल के माध्यम से घोषणात्मक तत्वों के मिश्रण की अनुमति देती हैं और कस्टम तर्क प्रदान करने के लिए डीएसएल तत्वों में हेरफेर करने के लिए कोड का उपयोग करती हैं।
- मावेन और / या आइवी के माध्यम से अंतर्निहित निर्भरता प्रबंधन।
- बहुत लचीला। सर्वोत्तम प्रथाओं का उपयोग करने की अनुमति देता है लेकिन चीजों को करने का अपना तरीका मजबूर नहीं करता है।
- प्लगइन्स उपयोग करने के लिए फ़ाइलों के निर्माण के लिए अपने स्वयं के डीएसएल और अपने स्वयं के एपीआई को उजागर कर सकते हैं।
- आईडीई एकीकरण की अनुमति देता अच्छा टूलिंग एपीआई
मैं उत्तर एक , दो लिखने के लिए दो ट्यूटोरियल का उल्लेख करता हूं
ग्रैडल एक सामान्य उद्देश्य, घोषणात्मक निर्माण उपकरण है। यह सामान्य उद्देश्य है क्योंकि इसका उपयोग बिल्ड स्क्रिप्ट में लागू करने के लिए आपकी देखभाल के लिए बहुत कुछ बनाने के लिए किया जा सकता है। यह घोषणा योग्य है क्योंकि आप बिल्ड फ़ाइल में बहुत सारे कोड नहीं देखना चाहते हैं, जो पठनीय और कम रखरखाव योग्य नहीं है। इसलिए, जबकि ग्रैडल सम्मेलनों और एक सरल और घोषणात्मक निर्माण का विचार प्रदान करता है, यह उपकरण को अनुकूल बनाने और डेवलपर्स को विस्तारित करने की क्षमता भी बनाता है। यह किसी भी तृतीय-पक्ष सुविधाओं को जोड़ने के लिए डिफ़ॉल्ट व्यवहार और विभिन्न हुक को अनुकूलित करने का एक आसान तरीका भी प्रदान करता है।
ग्रैड दोनों उपकरणों के अच्छे हिस्सों को जोड़ती है और अतिरिक्त सुविधाएँ प्रदान करती है और ग्रोवी को एक डोमेन विशिष्ट भाषा (डीएसएल) के रूप में उपयोग करती है। इसमें मावेन सुविधाओं के साथ चींटी उपकरण की शक्ति और लचीलापन है जैसे जीवन चक्र का निर्माण और उपयोग में आसानी।
ग्रैडल क्यों? अब क्यों?
बिल्ड टूल की प्रतिक्रिया गैर-मानक एक्सटेंशन तंत्र के माध्यम से स्क्रिप्टिंग कार्यक्षमता को जोड़ना है। आप अंत में XML के साथ स्क्रिप्टिंग कोड को मिक्स कर रहे हैं या अपने बिल्ड लॉजिक से बाहरी स्क्रिप्ट को आमंत्रित कर रहे हैं। यह कल्पना करना आसान है कि आपको समय के साथ अधिक से अधिक कस्टम कोड जोड़ना होगा। नतीजतन, आप अनिवार्य रूप से आकस्मिक जटिलता का परिचय देते हैं, और स्थिरता खिड़की से बाहर निकल जाती है।
मान लें कि आप किसी फ़ाइल को किसी विशिष्ट स्थान पर कॉपी करना चाहते हैं जब आप अपनी परियोजना के रिलीज़ संस्करण का निर्माण कर रहे हों। संस्करण की पहचान करने के लिए, आप अपने प्रोजेक्ट का वर्णन करते हुए मेटाडेटा में एक स्ट्रिंग की जांच करते हैं। यदि यह एक विशिष्ट नंबरिंग योजना (उदाहरण के लिए, 1.0-RELEASE) से मेल खाता है, तो आप फ़ाइल को बिंदु A से बिंदु B पर कॉपी करते हैं। बाहरी दृष्टिकोण से, यह एक तुच्छ कार्य की तरह लग सकता है। यदि आपको XML पर भरोसा करना है, तो कई पारंपरिक उपकरणों की निर्मित भाषा, इस सरल तर्क को व्यक्त करना काफी मुश्किल हो जाता है।
जावा बिल्ड टूल्स का विकास
एक्सएम बिल्ड लॉजिक को एक्सएमएल में वर्णित किया जाना है। XML पदानुक्रमित डेटा का वर्णन करने के लिए बहुत अच्छा है, लेकिन कार्यक्रम के प्रवाह और सशर्त तर्क को व्यक्त करने में कम पड़ता है। जैसे ही एक बिल्ड स्क्रिप्ट जटिलता में बढ़ती है, बिल्डिंग कोड को बनाए रखना दुःस्वप्न बन जाता है।
चींटी में , आप JAR लक्ष्य को संकलन लक्ष्य पर निर्भर करते हैं। चींटी अपने प्रोजेक्ट को कैसे तैयार करें, इस बारे में कोई मार्गदर्शन नहीं देती है। यद्यपि यह अधिकतम लचीलेपन की अनुमति देता है, चींटी प्रत्येक बिल्ड स्क्रिप्ट को अद्वितीय और समझने में कठिन बनाती है। आपकी परियोजना के लिए आवश्यक बाहरी पुस्तकालयों को आमतौर पर संस्करण नियंत्रण में जांचा जाता है क्योंकि उन्हें केंद्रीय स्थान से खींचने के लिए कोई स्वचालित तंत्र नहीं है।
जुलाई 2004 में रिलीज़ मावेन 1 ने उस प्रक्रिया को आसान बनाने की कोशिश की। यह एक मानकीकृत परियोजना और निर्देशिका संरचना, साथ ही निर्भरता प्रबंधन प्रदान करता है। दुर्भाग्य से, कस्टम तर्क को लागू करना कठिन है
ग्रैड बिल्ड बिल्ड की उस पीढ़ी में सही बैठता है और आधुनिक बिल्ड टूल्स (चित्र 1) की कई आवश्यकताओं को संतुष्ट करता है। यह एक अभिव्यंजक डीएसएल, विन्यास दृष्टिकोण पर एक सम्मेलन और शक्तिशाली निर्भरता प्रबंधन प्रदान करता है। यह XML को छोड़ने और अपने बिल्ड लॉजिक को परिभाषित करने के लिए गतिशील भाषा Groovy को पेश करने के लिए सही कदम बनाता है। सम्मोहक लगता है, है ना?
ग्रैड अन्य बिल्ड टूल की सर्वोत्तम विशेषताओं को जोड़ती है।
ग्रैडल का सम्मोहक फ़ीचर सेट
क्यों चींटी या मावेन की तुलना में ग्रेडर के बजाय अपने जावा प्रोजेक्ट्स का निर्माण करें?
एंड्रॉइड के लिए डिफ़ॉल्ट बिल्ड टूल (और JVM पर नए टूल का निर्माण) जटिल, मल्टी-लैंग्वेज बिल्ड की स्क्रिप्टिंग को आसान बनाने के लिए डिज़ाइन किया गया है। यदि आप चींटी या मावेन का उपयोग कर रहे हैं, तो क्या आपको इसे बदलना चाहिए?
अपनी बिल्ड स्क्रिप्ट के भीतर ग्रैडल के पावर फीचर्स को अनलॉक करने की कुंजी इसके डोमेन मॉडल को खोजने और लागू करने में निहित है, जैसा कि नीचे दी गई छवि में दिखाया गया है।
ग्रैडल आपके उद्यम निर्माण के लिए विशिष्ट सभी आवश्यकताओं को नहीं जान सकता है। जीवनचक्र चरणों में हुक को उजागर करने से, ग्रैड बिल्ड स्क्रिप्ट के निष्पादन व्यवहार की निगरानी और कॉन्फ़िगर करने की अनुमति देता है।
ग्रैलो ग्रूवी में लागू एक डीएसएल को उजागर करके अपने मॉडल के लिए एक शब्दावली स्थापित करता है। एक जटिल समस्या डोमेन के साथ काम करते समय, इस मामले में, सॉफ़्टवेयर बनाने का कार्य, अपने तर्क को व्यक्त करने के लिए एक सामान्य भाषा का उपयोग करने में सक्षम होना एक शक्तिशाली उपकरण हो सकता है।
एक अन्य उदाहरण यह है कि आप बाहरी पुस्तकालयों पर निर्भरता व्यक्त कर सकते हैं, बिल्ड टूल्स द्वारा हल की गई एक बहुत ही आम समस्या है। आउट-ऑफ-द-बॉक्स ग्रैड आपको अपनी बिल्ड स्क्रिप्ट के लिए दो कॉन्फ़िगरेशन ब्लॉक प्रदान करता है जो आपको उन निर्भरताओं और रिपॉजिटरी को परिभाषित करने की अनुमति देता है जिन्हें आप उनसे प्राप्त करना चाहते हैं। यदि मानक डीएसएल तत्व आपकी आवश्यकताओं के अनुरूप नहीं हैं, तो आप ग्रैडल के विस्तार तंत्र के माध्यम से अपनी खुद की शब्दावली भी प्रस्तुत कर सकते हैं।
अन्य बिल्ड टूल्स के साथ एकीकरण
ग्रैडल अपने पूर्ववर्तियों के चींटी, मावेन और आइवी के साथ अच्छा खेलता है, जैसा कि नीचे की छवि में दिखाया गया है।
अपनी परियोजना को बिल्ड से परिनियोजन तक स्वचालित करना
छवि में: एक तैनाती पाइपलाइन के चरणों।
कोड संकलित करना
रनिंग यूनिट और इंटीग्रेशन टेस्ट
स्थिर कोड विश्लेषण करना और परीक्षण कवरेज उत्पन्न करना
वितरण का निर्माण
लक्ष्य वातावरण का प्रावधान
वितरण योग्य तैनात करना
धूम्रपान और स्वचालित कार्यात्मक परीक्षण करना
मैं उत्तर एक , दो लिखने के लिए दो ट्यूटोरियल का उल्लेख करता हूं
ग्रैडल एक बिल्ड सिस्टम है । बिल्ड सिस्टम प्रोग्राम संकलन की प्रक्रिया को स्वचालित करने के लिए डिज़ाइन किए गए सॉफ्टवेयर टूल हैं। बिल्ड सिस्टम विभिन्न रूपों में आते हैं, और विभिन्न प्रकार के सॉफ़्टवेयर बिल्ड कार्यों के लिए उपयोग किए जाते हैं। जबकि उनका प्राथमिक लक्ष्य कुशलता से निष्पादन योग्य बनाना है।
एक अन्य संबंधित शब्द बिल्ड ऑटोमेशन है जो एक सॉफ्टवेयर बिल्ड के निर्माण और संबंधित प्रक्रियाओं को स्वचालित करने की प्रक्रिया है: कंप्यूटर स्रोत कोड को बाइनरी कोड, पैकेजिंग बाइनरी कोड को संकलित करना और स्वचालित परीक्षण चलाना।
अन्य भाषाओं के लिए कुछ समान निर्माण प्रणाली हैं (पूरी सूची यहां देखें ):
मुझे लगता है कि इसके पीछे यह सोचने का जोखिम है कि एंड्रॉइड स्टूडियो / ग्रैडल का अनुभव इतना खराब क्यों है।
विशिष्ट क्लोजर अनुभव:
विशिष्ट Android स्टूडियो / ग्रेड अनुभव:
मुझे यकीन नहीं है कि यह ग्रैडल की गलती है। लेकिन "एक्लिप्स प्रोजेक्ट से इम्पोर्ट" काफी भड़कीला लगता है। ग्रैडल के सभी कथित परिष्कार और एक बिल्ड-सिस्टम के गुणों के लिए, एंड्रॉइड स्टूडियो सिर्फ एक्लिप्स से बिल्ड निर्भरता या बिल्ड-प्रोसेस को आयात करने के लिए नहीं लगता है।
यह पूरी तरह निर्भरता ग्राफ आयात करने में विफल रहने पर आपको नहीं बताता है। एंड्रॉइड स्टूडियो समस्या को हल करने के तरीके के रूप में कोई उपयोगी सहायता या सुझाव नहीं देता है। यह आपको नहीं बताता है कि आप ग्रहण फ़ोल्डर में मैन्युअल रूप से कहाँ देख सकते हैं। यह आपको नहीं बताता कि कौन सी लाइब्रेरी गायब है। या आप उनके लिए मावेन आदि को खोजने में मदद करें।
2016 में लीनिंगन / क्लोज़र, या नोड्स एनपीएम, या पायथन पाइप, या डेबियन एपीकेजी (और मुझे यकीन है कि अन्य भाषाओं और प्रणालियों के लिए कई समान पैकेज प्रबंधक हैं) जैसी चीजें सभी खूबसूरती से काम करती हैं ... लापता निर्भरता अतीत की बात है।
Android के साथ छोड़कर। एंड्रॉइड स्टूडियो अब एकमात्र जगह है जहां मुझे अभी भी लापता-निर्भरता नरक का अनुभव होता है।
मैं यह कहना चाह रहा हूं कि यह Google की गलती है। उन्होंने एंड्रॉइड इकोसिस्टम (और हजारों मौजूदा एंड्रॉइड प्रोजेक्ट / ऑनलाइन ट्यूटोरियल) को तोड़ दिया जब उन्होंने एक मजबूत रूपांतरण प्रक्रिया का उत्पादन किए बिना ग्रहण से एंड्रॉइड स्टूडियो / ग्रैडल में स्थानांतरित करने का फैसला किया। जिन लोगों के प्रोजेक्ट एक्लिप्स में काम करते हैं, वे उन्हें एएस के लिए अनुकूल नहीं मानते हैं (संभवत: क्योंकि यह उनके लिए दर्द है)। और एएस में उन परियोजनाओं का उपयोग करने की कोशिश कर रहे लोग समान मुद्दों को मार रहे हैं।
और वैसे भी, अगर ग्रैडल यह सुपर-शक्तिशाली बिल्ड सिस्टम है, तो मैं अभी भी एसडीके प्रबंधक में पूरी तरह से अन्य निर्भरता का प्रबंधन क्यों कर रहा हूं? ऐसा प्रोजेक्ट क्यों नहीं बन सकता है, जो कहता है, ndk ने अपनी ग्रैडल फ़ाइल में इसे निर्दिष्ट किया है ताकि जरूरत पड़ने पर यह स्वतः स्थापित और अंतर्निहित हो जाए? NDK क्यों है खास? इसी तरह लक्ष्य प्लेटफार्मों के लिए? मैं उन्हें केवल उनके खिलाफ अपने प्रोजेक्ट की जाँच करने और पर्दे के पीछे से यह सब करने के बजाय आईडीई में स्पष्ट रूप से क्यों स्थापित कर रहा हूं?
Gradle
एक उन्नत बिल्ड सिस्टम है और साथ ही एक उन्नत बिल्ड टूलकिट है जो प्लगइन्स के माध्यम से कस्टम बिल्ड लॉजिक बनाने की अनुमति देता है!
लाभ:
प्रकट प्रविष्टियाँ
डीएसएल के माध्यम से निम्नलिखित प्रकट प्रविष्टियों को कॉन्फ़िगर करना संभव है:
संस्करण बनाएँ
डिफ़ॉल्ट रूप से, एंड्रॉइड प्लगइन स्वचालित रूप से प्रोजेक्ट को एक डिबग और एप्लिकेशन के रिलीज़ संस्करण दोनों को बनाने के लिए सेट करता है।
निर्भरता
यदि आपके पास अपने स्थानीय फाइल सिस्टम में बाइनरी आर्काइव्स हैं जो एक मॉड्यूल पर निर्भर करता है, जैसे कि JAR फाइलें, तो आप उस मॉड्यूल के लिए बिल्ड फ़ाइल में इन निर्भरताओं की घोषणा कर सकते हैं।
पहले रिपॉजिटरी को सूची में जोड़ा जाना चाहिए, और फिर निर्भरता को इस तरह से घोषित किया जाना चाहिए कि मावेन या आइवी उनकी कलाकृतियों की घोषणा करते हैं।
ग्रैडल ग्रूवी जेवीएम भाषा के लिए है जो जावा के लिए चींटी है। असल में, यह ग्रूवी का निर्माण उपकरण है। चींटी के विपरीत, यह पूर्ण ग्रूवी भाषा पर आधारित है। उदाहरण के लिए, आप विशिष्ट डोमेन भाषा पर निर्भर होने के बजाय कुछ करने के लिए ग्रैड लिपि में ग्रूवी स्क्रिप्ट कोड लिख सकते हैं।
मैं IntelliJ के विशिष्ट एकीकरण को नहीं जानता, लेकिन कल्पना कीजिए कि आप "Groovy का विस्तार" कर सकते हैं जैसे कि आप विशिष्ट "build" भाषा प्रधानता लिख सकते हैं और वे सिर्फ Groovy भाषा का हिस्सा बन गए। (ग्रूवी के मेटाप्रोग्रामिंग अपने आप में एक संपूर्ण चर्चा है।) IntelliJ / Google ग्रैडल का उपयोग उच्च स्तरीय बिल्ड भाषा बनाने के लिए कर सकता है, फिर भी, यह एक विस्तार योग्य, खुले मानक पर एक भाषा निर्माण है।
ग्रैडले एंड्रॉइड के लिए एक उन्नत बिल्ड टूलकिट है जो निर्भरता का प्रबंधन करता है और आपको कस्टम बिल्ड लॉजिक को परिभाषित करने की अनुमति देता है। सुविधाएँ इस प्रकार हैं
निर्माण प्रक्रिया को कस्टमाइज़, कॉन्फ़िगर और विस्तारित करें।
एक ही प्रोजेक्ट का उपयोग करके विभिन्न सुविधाओं के साथ अपने ऐप के लिए कई एपीके बनाएं।
पुन: उपयोग कोड और संसाधनों।
ग्रैडल एक स्वचालित बिल्ड टूलकिट है जो न केवल एंड्रॉइड प्रोजेक्ट के लिए अलग-अलग वातावरणों के बहुत सारे में एकीकृत कर सकता है।
यहां कुछ चीजें हैं जो आप ग्रेडेल के साथ कर सकते हैं।
नए प्रोजेक्ट्स के लिए मिनिमल कॉन्फ़िगरेशन आवश्यक है क्योंकि ग्रैडल में आपके एंड्रॉइड स्टूडियो प्रोजेक्ट्स के लिए डिफॉल्ट्स हैं।
निर्भरता की घोषणा। आप स्थानीय या दूरस्थ सर्वर में होस्ट की गई निर्भरता जार फ़ाइलों या लाइब्रेरी फ़ाइलों की घोषणा कर सकते हैं।
ग्रैड स्वचालित रूप से आपके प्रोजेक्ट के स्रोत से एक परीक्षण निर्देशिका और एक परीक्षण APK बनाता है।
यदि आप अपनी ग्रेडल बिल्ड फ़ाइल में सभी आवश्यक जानकारी, जैसे keyPassword
और keyAlias
, जोड़ते हैं , तो आप हस्ताक्षर किए गए APK को उत्पन्न करने के लिए ग्रेडल का उपयोग कर सकते हैं।
ग्रैडल अलग-अलग पैकेज के साथ कई एपीके उत्पन्न कर सकता है और एकल मॉड्यूल से कॉन्फ़िगरेशन का निर्माण कर सकता है।
एंड्रॉइड स्टूडियो में, ग्रैडल एक कस्टम बिल्ड टूल है जिसका उपयोग निर्भरता को प्रबंधित करने और कस्टम बिल्ड लॉजिक प्रदान करके एंड्रॉइड पैकेज (एपीके फाइल) बनाने के लिए किया जाता है।
एपीके फ़ाइल (एंड्रॉइड एप्लिकेशन पैकेज) एक विशेष रूप से स्वरूपित ज़िप फ़ाइल है जिसमें सम्मिलित है
एक एपीके फ़ाइल को एडीबी (एंड्रॉइड डिबग ब्रिज) का उपयोग करके हस्ताक्षरित और धक्का दिया जाता है जहां इसे निष्पादित किया जाता है।
@ ब्रायन गार्डनर द्वारा :
ग्रेडल प्रोग्रामिंग प्रोजेक्ट्स के लिए एक व्यापक बिल्ड टूल और निर्भरता प्रबंधक है। इसमें ग्रूवी पर आधारित एक डोमेन विशिष्ट भाषा है। ग्रैड जावा, एंड्रॉइड और स्काला सहित कई प्रकार की परियोजनाओं के लिए बिल्ड-बाय-कन्वेंशन सहायता प्रदान करता है।
ग्रेड की सुविधा:
ग्रैडल वह है जो जटिल एंड्रॉइड परियोजनाओं के निर्माण को स्वचालित करना संभव बनाता है जिसमें कई स्रोतों, परियोजनाओं, पुस्तकालयों आदि से कोड की हजारों लाइनें शामिल होती हैं। यह विन्यास विनिर्देशों के ढेरों के आधार पर सशर्त रूप से कई अनुकूलित APK उत्पन्न कर सकता है - यदि आप रुचि, अन्य जवाब ग्रेडल के इस पहलू का अधिक विवरण प्रदान करते हैं।
हालाँकि, यदि आप एंड्रॉइड के लिए नए हैं, तो 99% मामलों में ग्रैडल है जो आपकी परियोजना को निर्माण से रोकता है । यह एक असंवेदनशील, जटिल प्रणाली है जो प्रभावी रूप से एंड्रॉइड निर्माण प्रक्रिया को बाधित करता है और अनिवार्य रूप से इसे अनुभवहीन डेवलपर्स के लिए अनुपलब्ध करता है, अर्थात एक सरल प्रवेश स्तर के एंड्रॉइड ऐप का निर्माण करने के लिए अप्रतिष्ठित नौसिखिया को कई चीजों का अध्ययन करने और समझने की आवश्यकता हो सकती है जो उन्होंने नहीं किए। जैसे कि:
एंड्रॉइड डेवलपर्स को जानने के लिए ये सभी चीजें दिलचस्प और उपयोगी हैं, लेकिन वे आसान से दूर हैं और प्रवेश के लिए एक दुर्जेय अवरोध प्रस्तुत करते हैं। मुझे संदेह है कि इस सवाल को पूछने के लिए ओपी ने क्या प्रेरित किया, निराशा की भावना है जो अनिवार्य रूप से नवोप्ले डेवलपर को हिट करती है, जिस तरह से खर्च करने के बाद भी ग्रैडल द्वारा लगातार एक सरल ऐप बनाने और प्राप्त करने की कोशिश की जा रही है। यह समस्या अत्यधिक तकनीकी दस्तावेज की भारी मात्रा से व्याप्त है जो इन सभी तकनीकों के लिए उपलब्ध है। इसके अलावा विकास की एक बड़ी मात्रा के लिए ग्रैडल ओवरकिल है।
एक विकल्प एक शेल स्क्रिप्ट लिखना है जो एंड्रॉइड एसडीके में उपलब्ध टूल को स्वचालित करके आपकी परियोजना बनाता है। इस दृष्टिकोण के गुण कई हैं, शुरुआत के लिए इसका संभवतया निर्माण प्रक्रिया और एंड्रॉइड पारिस्थितिकी तंत्र का अध्ययन करने और समझने का सबसे अच्छा तरीका है, और यह आपको पूरी तरह से नियंत्रित करने की अनुमति देता है कि आपका ऐप कैसे बनाया गया है। हालाँकि, यह दृष्टिकोण अधिक गहन तकनीक के प्रमुखों के लिए अधिक उपयुक्त है, क्योंकि यह एंड्रॉइड को आज़माने वाले अनुभवहीन नॉब्स के लिए है।
इसकी अनुपस्थिति से क्या स्पष्ट है (कृपया मुझे बताएं कि क्या ऐसी कोई बात है) एक प्रवेश स्तर है, हल्के आईडीई एक कम सुविधा सेट के साथ है जो एक साथ निर्माण प्रक्रिया को सरल करता है जबकि इसे अस्पष्ट नहीं करता है (इसलिए नेटबीन्स या ग्रहण नहीं) संभवतः अभी भी हो सकता है ग्रैडल का उपयोग करें (चींटी के साथ क्या गलत था)। एपीके को उत्पन्न करना आसान बनाना चाहिए जो कुछ सामान्य कॉन्फ़िगरेशन के अनुरूप है और एक परियोजना संरचना का उपयोग करता है जो एक पूर्ण एंड्रॉइड स्टूडियो प्रोजेक्ट के लिए विकसित हो सकता है आपको इसे इस तरह से लेने का फैसला करना चाहिए।
सादे शब्दों में, ग्रेडल दो महत्वपूर्ण प्रक्रियाओं को लागू करने के लिए एंड्रॉइड स्टूडियो द्वारा प्रदान किया गया एक उपकरण है:
खोज परिणाम वेब से विशेष रुप से प्रदर्शित स्निपेट Android | निर्माण। Gradle। ग्रेड एक बिल्ड सिस्टम (खुला स्रोत) है जिसका उपयोग भवन, परीक्षण, तैनाती आदि को स्वचालित करने के लिए किया जाता है ... उदाहरण के लिए, कुछ फ़ाइलों को एक निर्देशिका से दूसरे में कॉपी करने का सरल कार्य वास्तविक निर्माण से पहले ग्रेडल स्क्रिप्ट का प्रदर्शन कर सकता है। प्रक्रिया होती है।
एंड्रॉइड स्टूडियो में, ग्रैडल का उपयोग हमारी एंड्रॉइड एप्लिकेशन परियोजनाओं के निर्माण के लिए किया जाता है, इसलिए एक बिल्ड सिस्टम की भूमिका निभाते हैं। एंड्रॉइड स्टूडियो से पहले, ग्रहण में हम कमांड लाइन टूल का उपयोग करके अनुप्रयोगों का संकलन और निर्माण करते थे जो जल्द ही एएनटी का उपयोग करके ग्रहण में एंड्रॉइड एप्लिकेशन बनाने और चलाने के लिए जीयूआई आधारित कदम उठा रहा था। हर Android एप्लिकेशन डेवलपमेंट टूल को संसाधनों, जावा स्रोत कोड, बाहरी पुस्तकालयों को संकलित करना और उन्हें अंतिम एपीके में संयोजित करना है।
Gradle एक बिल्ड सिस्टम है, जो कोड के संकलन, परीक्षण, तैनाती और कोड को .dex फाइलों में बदलने और इसलिए डिवाइस पर ऐप चलाने के लिए जिम्मेदार है।
जैसा कि एंड्रॉइड स्टूडियो ग्रैगल सिस्टम के साथ आता है, पूर्व-स्थापित है, हमारी परियोजना बनाने के लिए अतिरिक्त रनटाइम सॉफ्टवेयर्स को स्थापित करने की आवश्यकता नहीं है। जब भी आप पर क्लिक करें एंड्रॉइड स्टूडियो में बटन , तो एक ग्रैन्डल कार्य स्वचालित रूप से चालू हो जाता है और प्रोजेक्ट का निर्माण शुरू कर देता है और ग्रेडेल अपना कार्य पूरा करने के बाद, ऐप AVD या कनेक्टेड डिवाइस में चलना शुरू कर देता है।
ग्रैडल जैसा एक बिल्ड सिस्टम कंपाइलर, लिंकर आदि नहीं है, लेकिन यह संकलन के संचालन को नियंत्रित करता है और निगरानी करता है, फाइलों को जोड़ता है, परीक्षण के मामले चला रहा है, और अंत में कोड को आपके एंड्रॉइड एप्लिकेशन के लिए एक एपीके फ़ाइल में बंडल कर रहा है।
हर Android स्टूडियो प्रोजेक्ट के लिए दो बिल्ड.ग्रेडल फाइलें हैं, जिनमें से एक एप्लीकेशन के लिए है और दूसरा प्रोजेक्ट लेवल (मॉड्यूल लेवल) बिल्ड फाइल्स के लिए है।
निर्माण प्रक्रिया में, कंपाइलर स्रोत कोड, संसाधन, बाहरी लाइब्रेरीज़ JAR फ़ाइलें और AndroidManifest.xml (जिसमें एप्लिकेशन के बारे में मेटा-डेटा शामिल है) लेता है और उन्हें .dex (Dalvik निष्पादन योग्य फ़ाइलों) फ़ाइलों में परिवर्तित कर देता है , जिसमें bytecode शामिल होता है । वह बाईटकोड आपके ऐप को चलाने के लिए सभी Android उपकरणों द्वारा समर्थित है। तब एपीके मैनेजर .dex फाइलों और अन्य सभी संसाधनों को सिंगल एपीके फाइल में जोड़ता है । APK Packager संकेत डिबग या रिहाई apk संबंधित डिबग या रिहाई कीस्ट्रोक का उपयोग कर।
डिबग एपीके आम तौर पर परीक्षण उद्देश्य के लिए उपयोग किया जाता है या हम कह सकते हैं कि इसका उपयोग केवल विकास चरण में किया जाता है। जब आपका ऐप वांछित सुविधाओं के साथ पूरा हो जाता है और आप बाहरी उपयोग के लिए अपना आवेदन प्रकाशित करने के लिए तैयार हो जाते हैं तो आपको एक रिलीज़ एपीके की आवश्यकता होती है एक रिलीज कीस्ट्रोक का उपयोग कर पर हस्ताक्षर किए।
अब ग्रेडल फाइलों पर कुछ प्रकाश डालते हैं।
setting.gradle सेटिंग .ग्रेड (ग्रेडल सेटिंग) फ़ाइल का उपयोग आपके ऐप में उपयोग किए जाने वाले सभी मॉड्यूल को निर्दिष्ट करने के लिए किया जाता है।
build.gradle (प्रोजेक्ट स्तर) शीर्ष स्तर (मॉड्यूल) build.gradle फ़ाइल प्रोजेक्ट स्तर बिल्ड फ़ाइल है, जो प्रोजेक्ट स्तर पर बिल्ड कॉन्फ़िगरेशन को परिभाषित करता है। यह फ़ाइल एंड्रॉइड एप्लिकेशन प्रोजेक्ट के सभी मॉड्यूल पर कॉन्फ़िगरेशन लागू करती है।
build.gradle (आवेदन स्तर) एप्लिकेशन स्तर build.gradle फ़ाइल एंड्रॉइड प्रोजेक्ट के प्रत्येक मॉड्यूल में स्थित है। इस फ़ाइल में एक विशिष्ट एप्लिकेशन मॉड्यूल के लिए आपके पैकेज का नाम ApplicationID, संस्करण नाम (एपीके संस्करण), संस्करण कोड, न्यूनतम और लक्ष्य एसडीके शामिल है। जब आप बाहरी पुस्तकालयों (जार फ़ाइलों को शामिल नहीं करते हैं) को शामिल करते हैं, तो आपको एप्लिकेशन में निर्भरता के रूप में उन्हें अपनी परियोजना में शामिल करने के लिए ऐप स्तर के ग्रेडल फ़ाइल में इसका उल्लेख करना होगा।
नोट: यदि एक निश्चित एप्लिकेशन को अलग-अलग मॉड्यूल जैसे कि स्मार्ट फोन, टैबलेट या टीवी के लिए विविधताओं में विकसित किया गया है, तो सभी के लिए अलग-अलग ग्रेडल फाइलें बनानी होंगी। तुम भी कमांड लाइन उपकरण के माध्यम से अपने ढाल प्रणाली शुरू कर सकते हैं । निम्नलिखित आदेश इसके लिए उपयोग किए जाते हैं:
./gradlew बिल्ड - (बिल्ड प्रोजेक्ट)
./gradlew क्लीन बिल्ड - (बिल्ड प्रोजेक्ट
फुल स्क्रैच) ./gradlew क्लीन बिल्ड - (टेस्ट रन करें)
.ग्रेडलेव रैपर - (सभी उपलब्ध कार्यों को देखने के लिए)।
ग्रेडेल = ग्रूवी + क्रैडल हंस डॉकटर फोरम टिप्पणी
भ्रम थोड़ा अनावश्यक है, जब इसे केवल "बिल्ड" या एंड्रॉइड स्टूडियो में कुछ कहा जा सकता था।
हम विकास समुदाय में अपने लिए चीजों को कठिन बनाना पसंद करते हैं।