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




android-studio gradle android-gradle build-automation (22)

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


Answers

विचलित होने के जोखिम पर मुझे लगता है कि इस बात का सवाल यह है कि क्यों एंड्रॉइड स्टूडियो / ग्रैडल अनुभव इतना बुरा है।

विशिष्ट क्लोजर अनुभव:

  • project.clj में सूचीबद्ध निर्भरताओं के साथ परियोजना डाउनलोड करें।
  • क्लिनर्स और मेवेन के लिए लीनिंगेन निर्भरताएं प्राप्त करते हैं।
  • परियोजना संकलन।

विशिष्ट एंड्रॉइड स्टूडियो / ग्रैडल अनुभव:

  • "मेरी ग्रहण परियोजना आयात करें"।
  • ठीक प्रोजेक्ट आयात किया गया।
  • Gradle यह thang कर रहा है ... प्रतीक्षा करें ... प्रतीक्षा करें ... प्रतीक्षा करें ... Gradle समाप्त हो गया है।
  • संकलित करें ... संकलित नहीं कर सकता क्योंकि मुझे नहीं पता कि एक्स क्या है / वाई लाइब्रेरी नहीं मिल रहा है।

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

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

2016 में लीनिंगेन / क्लोजर्स, या नोड के एनपीएम, या पायथन की पीपी, या डेबियन एपीकेजी जैसी चीजें (और मुझे यकीन है कि अन्य भाषाओं और प्रणालियों के लिए कई समान पैकेज प्रबंधक) सभी खूबसूरती से काम करते हैं ... लापता निर्भरता अतीत की बात है।

एंड्रॉइड के अलावा। एंड्रॉइड स्टूडियो अब एकमात्र ऐसा स्थान है जहां मुझे अभी भी लापता निर्भरता नरक का अनुभव होता है।

मैं कहने के इच्छुक हूं कि यह Google की गलती है। उन्होंने एंड्रॉइड पारिस्थितिकी तंत्र (और हजारों मौजूदा एंड्रॉइड प्रोजेक्ट्स / ऑनलाइन ट्यूटोरियल) तोड़ दिए, जब उन्होंने दृढ़ता से एक सफल रूपांतरण प्रक्रिया के बिना एक्लिप्स से एंड्रॉइड स्टूडियो / ग्रैडल में स्थानांतरित करने का फैसला किया। जिन लोगों की परियोजनाएं ग्रहण में काम करती हैं वे उन्हें एएस को अनुकूल नहीं कर रहे हैं (संभवतः क्योंकि यह उनके लिए दर्द है)। और एएस में उन परियोजनाओं का उपयोग करने की कोशिश कर रहे लोग एक ही मुद्दे पर हमला कर रहे हैं।

और वैसे भी, यदि ग्रैडल इस सुपर-शक्तिशाली बिल्ड सिस्टम है, तो मैं एसडीके मैनेजर में अभी भी कई अन्य निर्भरताओं का प्रबंधन क्यों कर रहा हूं? एक परियोजना जिसे आवश्यकता नहीं है, कहें, ndk इसे अपनी ग्रैडल फ़ाइल में निर्दिष्ट करता है ताकि जब आवश्यक हो तो यह स्वचालित रूप से स्थापित हो और अंतर्निहित हो जाए? एनडीके विशेष क्यों है? इसी तरह लक्ष्य प्लेटफार्मों के लिए? मैं उनके खिलाफ अपनी परियोजना की जांच करने के बजाय आईडीई में स्पष्ट रूप से क्यों स्थापित कर रहा हूं और दृश्यों के पीछे यह सब मेरे लिए हल किया गया है?


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.


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.

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

प्रोजेक्ट बनाने के लिए विन्यास नियम ग्रोवी प्रोग्रामिंग भाषा के आधार पर ग्रैडल बिल्ड फाइलों और स्क्रिप्ट में घोषित किए जाते हैं।


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

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

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

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

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

लाभ:

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

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

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

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

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

निर्भरता

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

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

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

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


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

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

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

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

5 - Gradle क्या है?

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

यह LINK देखें


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

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

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

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

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

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

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


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


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

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.


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

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


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

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


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 में ऐसी जानकारी होती है जो एंड्रॉइड एसडीके की स्थानीय स्थापना के लिए विशिष्ट है। इसका मतलब है कि आपको इस फ़ाइल को स्रोत नियंत्रण में नहीं रखना चाहिए।

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

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


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

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

लंबा जवाब

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

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

अब, क्या आपने कभी सोचा है कि 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!"); तो यह आपके कंसोल पर प्रिंट करेगा।

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

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


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

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

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

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

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.


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

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

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

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

क्यों झुकाव?

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

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

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

मैंने पाया कि ग्रैडल का एक लाभ यह है:

ग्रैडल को बहु-परियोजना निर्माण के लिए डिज़ाइन किया गया था जो काफी बड़ा हो सकता है, और समझदारी से यह निर्धारित करता है कि बिल्ड पेड़ के कौन से हिस्से अद्यतित हैं, ताकि उन हिस्सों पर निर्भर किसी भी कार्य को फिर से करने की आवश्यकता नहीं होगी -executed।


एंड्रॉइड स्टूडियो में, ग्रैडल एक कस्टम बिल्ड टूल है जो निर्भरता प्रबंधन और कस्टम बिल्ड लॉजिक प्रदान करके एंड्रॉइड पैकेज (एपीके फाइल) बनाने के लिए प्रयुक्त होता है।

एपीके फ़ाइल (एंड्रॉइड एप्लिकेशन पैकेज) एक विशेष रूप से स्वरूपित ज़िप फ़ाइल है जिसमें शामिल है

  • बाइट कोड
  • संसाधन (छवियों, यूआई, एक्सएमएल आदि)
  • मैनिफेस्ट फ़ाइल

एक एपीके फ़ाइल हस्ताक्षरित हो जाती है और एडीबी (एंड्रॉइड डीबग ब्रिज) का उपयोग करके डिवाइस पर धक्का दिया जाता है जहां इसे निष्पादित किया जाता है।


परिभाषा :: ग्रैडल को एक संरचित भवन तंत्र का वर्णन किया जा सकता है जहां यह एक डेवलपर को एक परियोजना के संसाधनों को प्रबंधित करने के लिए उपकरण और लचीलापन प्रदान करता है जो smaller in size होते हैं, कुछ कॉन्फ़िगरेशन के कुछ उपकरणों के लिए targeting specific requirements को targeting specific requirements

मूलभूत कॉन्फ़िगरेशन

  1. minimumSdk
  2. maximumSdk
  3. targettedSdk
  4. versionCode
  5. versionName

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

भवनों की बढ़ती विविधताएं

निर्माण भिन्नताओं की विविधताओं को प्राप्त करने के लिए बिल्ड स्वाद के साथ निर्माण प्रकारों का संयोजन

 ====================                         ====================
|     BuildTypes     |                       |   ProductFlavours  |
 --------------------  ====================== --------------------
|  Debug,Production  |      ||       ||      | Paid,Free,Demo,Mock|
 ====================       ||       ||       ==================== 
                            ||       ||
                            VV       VV
 =================================================================
|           DebugPaid, DebugFree, DebugDemo, DebugMock            |
|  ProductionPaid, ProductionFree, ProductionDemo, ProductionMock |
 =================================================================

कटौती आकार

Gradle एकीकृत पुस्तकालयों से अप्रयुक्त संसाधनों को अप्रयुक्त संसाधनों को हटाकर जेनरेट किए गए निर्माण के आकार को कम करने में मदद करता है

प्रबंध अनुमतियां

हम आवश्यकताओं के आधार पर कुछ परिदृश्यों में कुछ अनुमतियों को जोड़कर कुछ बिल्डों के लिए कुछ अनुमतियां निर्दिष्ट कर सकते हैं

कुछ उपकरणों के लिए निर्माण

हम कुछ उपकरणों के लिए निर्माण उत्पन्न कर सकते हैं जिनमें कुछ घनत्व और कुछ एपीआई स्तर शामिल हैं। यह कई प्रकार के उपकरणों में आवश्यकताओं के अनुसार ऐप स्टोर में उत्पाद परिनियोजन में मदद करता है

अच्छा संदर्भ

वोगेला ट्यूटोरियल


मैं उत्तर two लिखने के लिए दो ट्यूटोरियल का संदर्भ देता हूं

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

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

क्यों झुकाव? अब क्यों?

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

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

जावा बिल्ड टूल्स का विकास

जावा बिल्ड तर्क को एक्सएमएल में वर्णित किया जाना है। एक्सएमएल पदानुक्रमित डेटा का वर्णन करने के लिए बहुत अच्छा है लेकिन कार्यक्रम प्रवाह और सशर्त तर्क व्यक्त करने पर कम पड़ता है। चूंकि बिल्ड स्क्रिप्ट जटिलता में बढ़ता है, बिल्डिंग कोड को बनाए रखना एक दुःस्वप्न बन जाता है।

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

जुलाई 2004 में जारी मेवेन 1 ने उस प्रक्रिया को कम करने की कोशिश की। इसने एक मानकीकृत परियोजना और निर्देशिका संरचना, साथ ही निर्भरता प्रबंधन प्रदान किया। दुर्भाग्यवश, कस्टम तर्क लागू करना मुश्किल है

Gradle निर्माण उपकरण की उस पीढ़ी में सही फिट बैठता है और आधुनिक निर्माण उपकरण (चित्रा 1) की कई आवश्यकताओं को पूरा करता है। यह एक अभिव्यक्तिपूर्ण डीएसएल, कॉन्फ़िगरेशन दृष्टिकोण पर एक सम्मेलन, और शक्तिशाली निर्भरता प्रबंधन प्रदान करता है। यह एक्सएमएल छोड़ने के लिए सही कदम बनाता है और आपके बिल्ड तर्क को परिभाषित करने के लिए गतिशील भाषा ग्रोवी पेश करता है। आकर्षक लगता है, है ना?

ग्रैडल अन्य निर्माण उपकरणों की सर्वोत्तम सुविधाओं को जोड़ती है।

ग्रैडल की आकर्षक फ़ीचर सेट

चींटी या मेवेन की तुलना में अपने जावा प्रोजेक्ट को ग्रैडल के साथ क्यों बनाएं?

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

आपकी बिल्ड स्क्रिप्ट के भीतर ग्रैडल की पावर सुविधाओं को अनलॉक करने की कुंजी नीचे दिए गए चित्र में दिखाए गए अनुसार, अपने डोमेन मॉडल को खोजने और लागू करने में निहित है।

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

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

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

अन्य निर्माण उपकरण के साथ एकीकरण

ग्रैडल अपने पूर्ववर्तियों की चींटी, मेवेन और आइवी के साथ अच्छी तरह से खेलता है, जैसा कि नीचे दी गई छवि में दिखाया गया है।

बिल्ड से परिनियोजन से अपनी परियोजना को स्वचालित करना

छवि में: एक तैनाती पाइपलाइन के चरणों।

  • कोड संकलित करना

  • रनिंग यूनिट और एकीकरण परीक्षण

  • स्थिर कोड विश्लेषण और परीक्षण कवरेज उत्पन्न करना

  • वितरण बनाना

  • लक्ष्य पर्यावरण का प्रावधान

  • डिलिवरेबल को तैनात करना

  • धूम्रपान और स्वचालित कार्यात्मक परीक्षण प्रदर्शन

मैं उत्तर two लिखने के लिए दो ट्यूटोरियल का संदर्भ देता हूं








android android-studio gradle android-gradle build-automation