Android बिल्ड स्ट्रक्चर

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

इस टेबल में, किसी Android प्रोजेक्ट की सामान्य फ़ाइलें दी गई हैं. हर एक का ब्यौरा फ़ाइल या डायरेक्ट्री में इस बारे में नोट शामिल होंगे कि उसमें किस तरह का कॉन्टेंट है. सबसे सही समय के साथ प्रैक्टिस में बदलाव होते रहते हैं. इसलिए, हो सकता है कि ये ब्यौरे किसी प्रोजेक्ट से मेल न खाएं जिन्हें आपने इंटरनेट से इनहेरिट या डाउनलोड किया है.

बिल्ड फ़ाइलें लिखते समय, डिक्लेरेटिव टोन का इस्तेमाल करें; लॉजिक और टास्क बनाना परिभाषाएं केवल प्लग इन में दिखाई जानी चाहिए. बिल्ड लॉजिक को प्लगिन तक सीमित करके, बिल्ड फ़ाइलें, डेटा का एलान बन जाती हैं. इन्हें आसानी से समझा जा सकता है और एडिटिंग भी मिलती है. आने वाले वर्शन में अन्य जानकारी शामिल हो सकती है, जैसे कि डिक्लेरेटिव Gradle, जो फ़ाइलें शामिल हैं.

फ़ोल्डर/फ़ाइल

इस्तेमाल करें

.gradle/

Gredle प्रोजेक्ट की कैश डायरेक्ट्री

इसे Gradle मैनेज करता है. इसमें, डाउनलोड किया गया Gradle डिस्ट्रिब्यूशन, प्रोजेक्ट की कैश मेमोरी, और कॉन्फ़िगरेशन फ़ाइलें शामिल हैं.

इस डायरेक्ट्री में मौजूद फ़ाइलें न बदलें!

.idea/

Android Studio प्रोजेक्ट का मेटाडेटा

इस डायरेक्ट्री में मौजूद फ़ाइलें न बदलें!

बिल्ड.gradle(.kts)

रूट बिल्ड फ़ाइल

इसमें सिर्फ़ प्लगिन के बारे में जानकारी शामिल होनी चाहिए, ताकि सभी सबप्रोजेक्ट में एक जैसा प्लगिन क्लास पाथ सेट अप किया जा सके.

अन्य कोड, सेटिंग या नेस्ट किए गए प्रोजेक्ट-लेवल की बिल्ड फ़ाइलों में मौजूद होने चाहिए.

gradle.property

Gradle को लागू करने का कॉन्फ़िगरेशन

इसमें Gradle प्रॉपर्टी शामिल है, जो Gradle बिल्ड एनवायरमेंट के पहलुओं को कंट्रोल करती है. जैसे, हीप का साइज़, कैश मेमोरी, और पैरलल एक्ज़ीक्यूशन.

यहां कुछ समय के लिए Android की कुछ प्रॉपर्टी के बारे में बताया गया है, ताकि AGP DSL में होने वाले बदलावों को कम किया जा सके और बाद में हटा दिया जाए.

Gradlew (Linux, Mac)

gradlew.bat (Windows)

Gradle रैपर फ़ाइल

Gradle डिस्ट्रिब्यूशन डाउनलोड करके और फिर उसमें कमांड फ़ॉरवर्ड करके, अपने बिल्ड को बूटस्ट्रैप करता है. इससे आपको Gradle को पहले से इंस्टॉल किए बिना बिल्ड चलाने की सुविधा मिलती है.

local.property

लोकल मशीन कॉन्फ़िगरेशन

इसमें लोकल मशीन से जुड़ी प्रॉपर्टी शामिल होती हैं, जैसे कि Android SDK की लोकेशन.

इस फ़ाइल को सोर्स कंट्रोल से बाहर रखें!

settings.gradle(.kts)

Gredle बिल्ड शुरू करना

इसमें Gradle शुरू करने और प्रोजेक्ट कॉन्फ़िगरेशन के लिए, ग्लोबल बिल्ड की जानकारी शामिल है, जैसे

  • प्रोजेक्ट का नाम
  • इस बिल्ड में शामिल किए जाने वाले सब-प्रोजेक्ट की सूची
  • प्लगिन और डिपेंडेंसी का पता लगाने के लिए रिपॉज़िटरी की खास बातें
  • बाहरी वर्शन कैटलॉग को इंपोर्ट करना.

Gradle/

↳ libs.versions.toml

वर्शन कैटलॉग

आपके बिल्ड में इस्तेमाल की जाने वाली डिपेंडेंसी और प्लगिन के लिए वैरिएबल तय करता है. यह तय करें कि आपको यहां किन वर्शन का इस्तेमाल करना है. इससे यह पक्का किया जा सकेगा कि आपके प्रोजेक्ट के सभी सब-प्रोजेक्ट एक जैसे हों.

↳ रैपर/

↳ gradle‐wrapper.jar

Gredle बूटस्ट्रैपिंग एक्ज़िक्यूट किया जा सकता है

बताए गए Gradle डिस्ट्रिब्यूशन को डाउनलोड करता है (अगर यह मौजूद नहीं है) और इसे किसी भी आर्ग्युमेंट के साथ पास करते हुए, इसे चलाता है

↳ gradle‐wrapper.property

Gradle रैपर का कॉन्फ़िगरेशन

यह तय करता है कि Gradle डिस्ट्रिब्यूशन को कहां से डाउनलोड करना है (इसमें यह भी शामिल है कि किस वर्शन का इस्तेमाल करना है).

ऐप्लिकेशन/

सबप्रोजेक्ट डायरेक्ट्री

सब-प्रोजेक्ट (Android Studio में "मॉड्यूल" कहा जाता है) पर, ऐप्लिकेशन या लाइब्रेरी बनाई जा सकती हैं. ये दूसरे सब-प्रोजेक्ट या बाहरी डिपेंडेंसी पर निर्भर हो सकती हैं.

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

कोई भी डायरेक्ट्री, सब-प्रोजेक्ट हो सकती है. साथ ही, उसमें कम से कम एक build.gradle(.kts) फ़ाइल होनी चाहिए और उसे settings.gradle(.kts) का इस्तेमाल करके बिल्ड में शामिल किया जाना चाहिए.

↳build.gradle(.kts)

सब-प्रोजेक्ट-लेवल की बिल्ड फ़ाइल

इस सबप्रोजेक्ट को बनाने का तरीका बताता है. हर सब-प्रोजेक्ट के लिए एक अलग बिल्ड फ़ाइल की ज़रूरत होती है और यह फ़ाइल उसमें होनी चाहिए

  • इस सबप्रोजेक्ट को बनाने के लिए इस्तेमाल किए गए प्लगिन
  • प्लगिन के लिए ज़रूरी कॉन्फ़िगरेशन ब्लॉक
  • इस सब-प्रोजेक्ट को बनाते समय, शामिल की गई डिपेंडेंसी (लाइब्रेरी और प्लैटफ़ॉर्म)

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

↳src/

सब-प्रोजेक्ट की सोर्स फ़ाइलें

सोर्स फ़ाइलों (ऐप्लिकेशन कोड और संसाधन) को सोर्स सेट में ग्रुप करता है. main सोर्स सेट में ऐसी सोर्स फ़ाइलें होती हैं जो सभी वैरिएंट के लिए सामान्य होती हैं. वहीं, अन्य सोर्स सेट में किसी वैरिएंट के लिए यूनीक सोर्स फ़ाइलें होती हैं.

↳ मुख्य/

मुख्य सोर्स सेट

सोर्स कोड और ऐसे संसाधन जो सभी बिल्ड वैरिएंट में एक जैसे होते हैं. यह सोर्स सभी बिल्ड के लिए बेस के तौर पर काम करता है. साथ ही, अन्य खास सोर्स सेट इस सोर्स में जोड़ते हैं या इसे ओवरराइड करते हैं.

↳ JavaScript/

↳ कोटलिन/

Kotlin और Java का सोर्स कोड

java डायरेक्ट्री में, Java और Kotlin सोर्स कोड, दोनों हो सकते हैं. अगर इस सबप्रोजेक्ट में सिर्फ़ Kotlin कोड है, तो इस डायरेक्ट्री का नाम बदला जा सकता है kotlin.

Android
. यह एक Kotlin की पहले प्लैटफ़ॉर्म है. Java सोर्स काम करता है, लेकिन नए एपीआई Kotlin लैंग्वेज को टारगेट करते हैं. हम सभी नए कोड और मौजूदा कोड के खास अपडेट के लिए, Kotlin का इस्तेमाल करने का सुझाव देते हैं.

↳ रिज़ॉल्यूशन/

Android की संसाधन फ़ाइलें

इसमें ऐप्लिकेशन के संसाधन शामिल होते हैं, जैसे कि एक्सएमएल फ़ाइलें और इमेज. सभी ऐप्लिकेशन कुछ बुनियादी संसाधनों का इस्तेमाल करते हैं, जैसे कि लॉन्चर आइकॉन. हालांकि, इनमें से कई संसाधन, जैसे कि लेआउट और मेन्यू, सिर्फ़ देखने पर आधारित ऐप्लिकेशन में इस्तेमाल किए जाते हैं. ऐप्लिकेशन कंपोज़ करने में इस डायरेक्ट्री में बताए गए स्ट्रिंग संसाधनों का इस्तेमाल किया जाता है.

↳ AndroidManifest.xml

Android ऐप्लिकेशन का मेटाडेटा

सिस्टम को इसकी जानकारी देने के लिए, Android पैकेज मैनेजर को पढ़ें

  • आपके ऐप्लिकेशन की ओर से तय किए गए कॉम्पोनेंट
  • ज़रूरी अनुमतियां
  • मेरे डिवाइस पर यह सुविधा काम नहीं करती
  • Android प्लैटफ़ॉर्म के प्रतिबंध

↳ androidTest/

डिवाइस टेस्ट सोर्स सेट

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

main के सोर्स सेट में मौजूद सभी सोर्स फ़ाइलें, androidTest के तहत सोर्स से इस्तेमाल करने के लिए उपलब्ध हैं.

↳ जांच/

होस्ट टेस्ट सोर्स सेट

इसमें, किसी डिवाइस पर चलने वाले टेस्ट के बजाय, किसी JVM में स्थानीय तौर पर चलने वाले टेस्ट का सोर्स शामिल होता है. डिवाइस टेस्ट के मुकाबले, इन टेस्ट को ज़्यादा तेज़ी से चलाया जा सकता है. हालांकि, किसी भी सिस्टम कॉल (इसमें आपके ऐप्लिकेशन को चलाने वाली लाइफ़साइकल भी शामिल है) का मज़ाक़ बनाया जाना चाहिए. साथ ही, उसे नकली, हैक या किसी अन्य तरीके से सिम्युलेट किया जाना चाहिए.

main सोर्स सेट में मौजूद सभी सोर्स फ़ाइलें, जांच में सोर्स के हिसाब से इस्तेमाल के लिए उपलब्ध हैं.

↳ प्रोगार्ड-नियम.प्रो

R8 कॉन्फ़िगरेशन के नियम

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