Android Gradle प्लग इन 8.1.0 (जुलाई 2023)

'Android Gradle प्लग इन 8.1.0' एक मुख्य रिलीज़ है, जिसमें कई तरह के नए वर्शन शामिल हैं सुविधाओं और सुधारों के बारे में है.

इनके साथ काम करता है

कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
ग्रेडल 8.0 8.0 ज़्यादा जानने के लिए, Gredle को अपडेट करना देखें.
SDK टूल बनाने वाले टूल 33.0.1 33.0.1 SDK बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें.
एनडीके लागू नहीं 25.1.8937393 एनडीके के किसी दूसरे वर्शन को इंस्टॉल करें या कॉन्फ़िगर करें.
जेडीके 17 17 ज़्यादा जानने के लिए, JDK वर्शन सेट करना देखें.

बिल्ड कॉन्फ़िगरेशन के लिए Kotlin DSL डिफ़ॉल्ट है

नए प्रोजेक्ट अब बिल्ड के लिए डिफ़ॉल्ट रूप से Kotlin DSL (build.gradle.kts) का इस्तेमाल करते हैं कॉन्फ़िगरेशन. इसमें आपको ग्रूवी डीएसएल के मुकाबले, वीडियो में बदलाव करने का बेहतर अनुभव मिलता है (build.gradle) सिंटैक्स हाइलाइट करने, कोड पूरा करने, और इस पर नेविगेट करने के साथ एलानों को पूरा करना ज़रूरी है. ध्यान दें कि अगर आपने बिल्ड के लिए AGP 8.1 और Kotlin DSL का इस्तेमाल किया है कॉन्फ़िगरेशन के लिए, आपको Gradle 8.1 का इस्तेमाल करना चाहिए. ज़्यादा जानने के लिए, Kotlin DSL माइग्रेशन गाइड देखें.

हर ऐप्लिकेशन के लिए अपने-आप काम करने वाली भाषा की सुविधा

Android Studio जिराफ़ कैनरी 7 और AGP 8.1.0-alpha07 के साथ, आप अपने ऐप्लिकेशन को हर ऐप्लिकेशन की भाषा के हिसाब से कॉन्फ़िगर करें प्राथमिकताओं को अपने-आप अपडेट करने की सुविधा मिलती है. आपके आधार पर प्रोजेक्ट संसाधनों को छोड़कर, 'Android Gradle प्लग इन' LocaleConfig फ़ाइल जनरेट करता है और फ़ाइनल मेनिफ़ेस्ट फ़ाइल में इससे जुड़ा एक रेफ़रंस जोड़ देता है, ताकि आपको इसे मैन्युअल तरीके से करें. AGP, आपके ऐप्लिकेशन मॉड्यूल के res फ़ोल्डर में मौजूद संसाधनों का इस्तेमाल करता है और लाइब्रेरी मॉड्यूल डिपेंडेंसी के हिसाब से, भाषाएँ तय करें. LocaleConfig फ़ाइल.

ध्यान दें कि हर ऐप्लिकेशन में अपने-आप काम करने वाली भाषा की सुविधा, Android पर चलने वाले ऐप्लिकेशन के साथ काम करती है 13 (एपीआई लेवल 33) या उसके बाद के वर्शन. इस सुविधा का इस्तेमाल करने के लिए, आपको compileSdkVersion से 33 या उससे ज़्यादा. हर ऐप्लिकेशन के हिसाब से, पसंद की भाषा कॉन्फ़िगर करने के लिए Android के पिछले वर्शन के लिए, आपको अब भी एपीआई और इन-ऐप्लिकेशन लैंग्वेज पिकर का इस्तेमाल करना.

हर ऐप्लिकेशन के लिए अपने-आप काम करने वाली भाषा की सुविधा चालू करने के लिए, कोई डिफ़ॉल्ट स्थान-भाषा तय करें:

  1. ऐप्लिकेशन मॉड्यूल के res फ़ोल्डर में, इस नाम की नई फ़ाइल बनाएं resources.properties.
  2. resources.properties फ़ाइल में, डिफ़ॉल्ट स्थान-भाषा को इस पर सेट करें unqualifiedResLocale लेबल. स्थान-भाषा का नाम बनाने के लिए, इन दोनों को मिलाएं वैकल्पिक स्क्रिप्ट और क्षेत्र कोड के साथ भाषा कोड, दोनों को अलग करते हुए डैश के साथ:

    • भाषा: दो- या तीन-अक्षर का उपयोग करें आईएसओ 639-1 कोड.
    • स्क्रिप्ट (वैकल्पिक): अपने कीवर्ड ISO 15924 कोड.
    • इलाका (ज़रूरी नहीं): दो अक्षरों में से किसी एक का इस्तेमाल करें आईएसओ 3166-1-ऐल्फ़ा-2 कोड या तीन अंकों वाला UN_M.49 कोड.

    उदाहरण के लिए, अगर आपकी डिफ़ॉल्ट स्थान-भाषा अमेरिकन इंग्लिश है, तो:

        unqualifiedResLocale=en-US
        

AGP इस डिफ़ॉल्ट स्थान-भाषा को और किसी अन्य स्थानीय भाषा आपने res फ़ोल्डर में values-* डायरेक्ट्री का इस्तेमाल करके, अपने-आप जनरेट हुई LocaleConfig फ़ाइल.

हर ऐप्लिकेशन के लिए अपने-आप काम करने वाली भाषा की सुविधा, डिफ़ॉल्ट रूप से बंद रहती है. सुविधा को चालू करने के लिए, इसके androidResources {} ब्लॉक में generateLocaleConfig सेटिंग का इस्तेमाल करें: मॉड्यूल-लेवल build.gradle.kts फ़ाइल (build.gradle फ़ाइल, अगर आप इस्तेमाल कर रहे हैं ग्रूवी):

Kotlin

android {
  androidResources {
    generateLocaleConfig = true
  }
}

ग्रूवी

android {
  androidResources {
    generateLocaleConfig true
  }
}

Android लिंट में JVM 17 को टारगेट करने वाले बाइट कोड होते हैं

AGP 8.1.0-alpha04 वाले Android लिंट में जेवीएम को टारगेट करने वाला बाइट कोड शामिल होता है 17. अगर आपको पसंद के मुताबिक लिंट की जांच करनी है, तो आपको JDK 17 या उसके बाद के वर्शन के साथ कंपाइल करना होगा और आपके Kotlin कंपाइलर विकल्पों में jvmTarget = '17' तय करें.

लिंट टूल के बारे में ज़्यादा जानने के लिए, यह देखें लिंट जांच की मदद से अपने कोड को बेहतर बनाएं.

नेटिव लाइब्रेरी की कंप्रेस करने की सेटिंग को डीएसएल में ले जाया गया

AGP 8.1.0-alpha10 के बाद वाले वर्शन को कॉन्फ़िगर नहीं करने पर आपको एक चेतावनी दिखेगी नेटिव लाइब्रेरी कंप्रेशन, जिसमें मेनिफ़ेस्ट फ़ाइल के बजाय DSL का इस्तेमाल किया जाता है. कॉन्टेंट बनाने नीचे दिए गए दिशा-निर्देश में बताया गया है कि DSL का इस्तेमाल करने के लिए अपने कॉन्फ़िगरेशन को कैसे अपडेट करें. यहां की यात्रा पर हूं इन्हें अपडेट करने में मदद पाएँ, AGP अपग्रेड असिस्टेंट का इस्तेमाल करें (टूल > एजीपी अपग्रेड असिस्टेंट).

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

Kotlin

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging = false
    }
  }
}

ग्रूवी

android {
  packagingOptions {
    jniLibs {
      useLegacyPackaging false
    }
  }
}

प्रयोग के तौर पर बनाए गए बिल्ड फ़्लैग

ये प्रयोग के तौर पर फ़्लैग किए गए हैं, ताकि AGP 8.1 में आपके बिल्ड को कॉन्फ़िगर किया जा सके.

चिह्नित करें इसमें जोड़ा गया डिफ़ॉल्ट मान नोट
android.experimental.useDefaultDebugSigningConfigForProfileableBuildtypes एजीपी 8.0 false किसी तय किए गए साइनिंग कॉन्फ़िगरेशन के बिना इसे चालू करने पर एजीपी, प्रोफ़ाइल या डीबग करने लायक पेज चलाते समय डिफ़ॉल्ट डीबग साइनिंग कॉन्फ़िगरेशन बिल्ड. बिल्ड लेखक को बढ़ावा देने के लिए यह फ़्लैग डिफ़ॉल्ट रूप से बंद होता है खास प्रोफ़ाइलिंग साइनिंग कॉन्फ़िगरेशन के बारे में बताएं.
android.experimental.library.desugarAndroidTest एजीपी 8.0 false इस फ़्लैग की मदद से लाइब्रेरी बिल्डर, मुख्य लाइब्रेरी को डिज़ाइन कर सकते हैं बनाए गए AAR को प्रभावित किए बिना, लिंटिंग के ज़रिए, APK का परीक्षण करना. हम आने वाले समय में, वैरिएंट एपीआई में यह सुविधा देने वाले हैं.
android.experimental.testOptions.managedDevices.customDevice एजीपी 8.0 false यह विकल्प चालू होने पर, Gradle से मैनेज किए जाने वाले डिवाइस, उपयोगकर्ता के तय किए गए कस्टम डिवाइस को अनुमति देते हैं प्लगिन के ज़रिए दिया जा सकता है. यह फ़्लैग चालू होना चाहिए, अगर Firebase टेस्ट लैब प्लगिन का इस्तेमाल करना चाहते हैं.
android.lint.printStackTrace एजीपी 8.0 false अगर यह सुविधा चालू है, तो Android लिंट के क्रैश होने पर वह स्टैकट्रेस को प्रिंट करता है. यह फ़्लैग LINT_PRINT_STACKTRACE जैसी सुविधाएं एनवायरमेंट वैरिएबल.
android.experimental.testOptions.managedDevices.maxConcurrentDevices एजीपी 8.0 कोई नहीं इस नीति से, एक साथ कई मैनेज किए जा रहे Gradle डिवाइसों की ज़्यादा से ज़्यादा संख्या तय होती है (एवीडी) को किसी भी समय ऐक्टिव रखा जा सके. अगर वैल्यू 0 या नेगेटिव, डिवाइसों की कोई तय संख्या नहीं है.
android.experimental.testOptions.installApkTimeout एजीपी 8.0 कोई नहीं APK इंस्टॉल करने के लिए, टाइम आउट होने की अवधि (सेकंड में). अगर वैल्यू 0 है या नेगेटिव, तो इसे UTP के ज़रिए डिफ़ॉल्ट मान पर सेट कर दिया जाएगा.