Android Gradle प्लग इन 8.2.0 (नवंबर 2023)

Android Gradle प्लग इन 8.2.0 एक बड़ी रिलीज़ है. इसमें कई नई सुविधाएं और सुधार शामिल हैं.

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

Android Gradle प्लग इन 8.2, एपीआई लेवल 34 तक के वर्शन के साथ काम करता है. यहां अन्य सिस्टम के साथ काम करने की जानकारी दी गई है:

कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
Gradle 8.2 8.2 ज़्यादा जानने के लिए, Gradle को अपडेट करना लेख पढ़ें.
SDK टूल के लिए बिल्ड टूल 34.0.0 34.0.0 SDK Build Tools को इंस्टॉल या कॉन्फ़िगर करें.
एनडीके लागू नहीं 25.1.8937393 NDK का कोई दूसरा वर्शन इंस्टॉल या कॉन्फ़िगर करें.
JDK 17 17 ज़्यादा जानने के लिए, JDK वर्शन सेट करना लेख पढ़ें.

JDK पाथ बताने के लिए नया मैक्रो

#GRADLE_LOCAL_JAVA_HOME एक नया मैक्रो है. इसका इस्तेमाल, JDK के पाथ की जानकारी देने के लिए किया जा सकता है. इससे, अपने प्रोजेक्ट के लिए Gradle डेमन (बैकग्राउंड प्रोसेस) को चलाने के लिए इस्तेमाल किए जाने वाले Java होम पाथ को बताना ज़्यादा सुरक्षित और आसान हो जाता है. पाथ का चुना गया हिस्सा, .gradle/config.properties फ़ाइल में java.home फ़ील्ड में सेव होता है. Android Studio में Gradle JDK सेटिंग की मदद से, इस फ़ील्ड को सेट करें: फ़ाइल (या macOS पर Android Studio) > सेटिंग > बिल्ड, एक्सीक्यूशन, डिप्लॉयमेंट > बिल्ड टूल > Gradle.

नए प्रोजेक्ट, डिफ़ॉल्ट रूप से #GRADLE_LOCAL_JAVA_HOME का इस्तेमाल करेंगे. सिंक होने के बाद, मौजूदा प्रोजेक्ट अपने-आप नए मैक्रो पर माइग्रेट हो जाएंगे. ऐसा तब तक होगा, जब तक कि आपने पहले से ही #JAVA_HOME जैसे किसी मैक्रो का इस्तेमाल न किया हो.

नए मैक्रो के मुख्य फ़ायदे ये हैं:

  • प्रोजेक्ट खोले बिना सिंक करने की सुविधा को ट्रिगर करने के लिए, JDK पाथ में मैन्युअल तरीके से बदलाव किया जा सकता है.
  • Gradle और प्रोजेक्ट के JDK वर्शन के साथ काम न करने से जुड़ी गड़बड़ियां कम होती हैं, क्योंकि Gradle JDK के आपके चुने गए वर्शन के लिए एक ही सोर्स होता है.

ठीक की गई समस्याएं

Android Gradle प्लग इन 8.2.0

ठीक की गई समस्याएं
Android Gradle प्लग इन
कस्टम सोर्स टाइप, अलग-अलग फ़्लेवर वाले सोर्सेट बनाते हैं
SDK टूल के वर्शन की जांच करने की सुविधा, SDK टूल के एक्सटेंशन का इस्तेमाल करने वाले उपयोगकर्ताओं के लिए काम नहीं करती
DependenciesInfoBuilder को एपीआई अपडेट और दस्तावेज़ की ज़रूरत है
Java 11 टारगेट के साथ DexingNoClasspathTransform (minSdk >= 24) काम नहीं करता, क्योंकि नेस्ट में शामिल सदस्य मौजूद नहीं हैं
DslExtension.Builder.extendProjectWith() फ़ंक्शन, Groovy में बताए गए तरीके से काम नहीं कर रहा है
VariantSelector.withFlavor API जोड़ें, जो kotlin.Pair का इस्तेमाल नहीं करता
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) में कैश मेमोरी नहीं है, क्योंकि `proguard.txt` बदल गया है
ऐप्लिकेशन के मर्ज किए गए मेनिफ़ेस्ट में, डिपेंडेंसी से extractNativeLibs और useEmbeddedDex एट्रिब्यूट शामिल हैं
build-tools 33.0.0 के साथ AIDL काम नहीं करता
AGP: सार्वजनिक एपीआई के तौर पर, AIDL टूल और फ़्रेमवर्क AIDL फ़ाइल का पाथ एक्सपोज़ करना
अनुरोध: आईडीई को "PermittedSubclasses के लिए ASM9 की ज़रूरत है" की समस्या को ठीक करने का विकल्प दें
एजीपी को कंपाइल करते समय, टारगेट बाइटकोड 17
VariantManager.getModifiedName को हटाएं
AndroidTest.packaging.jniLibs.keepDebugSymbols का असर, androidTest की पैकेजिंग पर नहीं पड़ता
GMD इंस्ट्रुमेंटेशन टेस्ट टास्क हैंग हो जाते हैं और फिर से कोशिश करने पर, काम नहीं करते
agp 8.1.0 में generateLocaleConfig, तय क्रम का इस्तेमाल नहीं करता. इससे, दोबारा बनाए जा सकने वाले बिल्ड में गड़बड़ी आती है
ProcessApplicationManifest.navigationJsons में, एब्सोल्यूट पाथ वाली फ़ाइलें हैं
AnalyticsService बन जाने के बाद, AnalyticsConfiguratorService के ज़रिए GradleBuildProject.Builder को ऐक्सेस करने की अनुमति नहीं है
AndroidTest.packaging.jniLibs.keepDebugSymbols का असर, androidTest की पैकेजिंग पर नहीं पड़ता
रंग की गलत वैल्यू के लिए कंपाइल करने की अनुमति है
VariantBuilder के लिए "ReplaceWith" गलत है
Gradle 8.1 में, .gradle/.android/analytics.settings की वजह से कॉन्फ़िगरेशन कैश मेमोरी का इस्तेमाल नहीं किया जा सकता
'इस्तेमाल नहीं किया जा रहा' मैसेज में, `ReplaceWith` का इस्तेमाल नहीं किया जाता
NDK का डिफ़ॉल्ट वर्शन पाने का तरीका बताना
Android Gradle प्लग इन को चलाने के लिए, Java 17 की ज़रूरत होती है.
ASM Transform और toAppend() फ़ंक्शन के साथ काम न करना
KMP प्रोजेक्ट पर, Gradle के ज़रिए K2 UAST के साथ lint चलाते समय LintErrors को ठीक करना
वैरिएंट लेवल पर missingDimensionStrategy के लिए सहायता, और शायद बिल्ड टाइप/फ़्लेवर मैचिंग फ़ॉलबैक
Android Studio Giraffe में, `android.injected.studio.version` को हटा दिया गया था
AndroidXDependencyCheck को बंद करने की सुविधा जोड़ी गई
agp 8.1.0 में generateLocaleConfig, तय क्रम का इस्तेमाल नहीं करता. इससे, दोबारा बनाए जा सकने वाले बिल्ड में गड़बड़ी आती है
AAR मेटाडेटा में R8 / D8 वर्शन की ज़रूरी शर्तों के बारे में बताएं. उदाहरण के लिए, coreLibraryDesugaring और नए एपीआई के लिए, आउट-ऑफ़-लाइनिंग
सिंक करने से जुड़ी चेतावनी: "AnalyticsService बनने के बाद, AnalyticsConfiguratorService के ज़रिए GradleBuildProject.Builder को ऐक्सेस नहीं किया जाना चाहिए"
Gradle 8.2 माइलस्टोन या आरसी पर अपडेट करना
'java.lang.Comparable' को ऐक्सेस नहीं किया जा सकता
androidResources, Android लाइब्रेरी मॉड्यूल में उपलब्ध नहीं है
AGP को 8.0.2 से 8.1.0 पर अपडेट करने के बाद, ':app:mergeReleaseClasses' टास्क को पूरा नहीं किया जा सका
Gradle 8.1 में, .gradle/.android/analytics.settings की वजह से कॉन्फ़िगरेशन कैश मेमोरी का इस्तेमाल नहीं किया जा सकता
[AGP 8.1.0] अगर splits.abi.isEnable और testOptions.unitTests.isIncludeAndroidResources, दोनों 'सही' पर सेट हैं, तो ./gradlew test "मेनिफ़ेस्ट आउटपुट नहीं मिला" के साथ फ़ेल हो जाता है
Android Studio Giraffe, AGP 8.1 के साथ versionCodeOverride का इस्तेमाल नहीं करता
AGP 8.1.0, इंस्ट्रूमेंट किए गए टेस्ट चलाने के बाद ऐप्लिकेशन को अनइंस्टॉल कर देता है - 7.4.2 ऐसा नहीं करता
किसी APK को बदलने पर, ListingFileRedirectTask में गड़बड़ी होती है
हेजहॉग रेग्रेशन: 'चालू करें' बटन को दबाने के बाद, कुछ सेकंड तक कुछ नहीं होता (स्पेसिफ़िकेशन बनाना)
Dexer (D8)
min-api 34 और उसके बाद के वर्शन के लिए डेक्स करते समय, नेटिव रिकॉर्ड और सील की गई क्लास चालू करना
Lint
इंस्टैंशिएट की गई लिंट जांच, AppComponentFactory को ठीक से मैनेज नहीं करती
Lint 8.2.0 alphas अब भी Kotlin में टॉप-लेवल फ़ंक्शन इंपोर्ट के साथ काम नहीं करते
लिंट बेसलाइन में लाइन और कॉलम नंबर शामिल न करने का विकल्प जोड़ना
लिंट बेसलाइन में लाइन और कॉलम नंबर शामिल न करने का विकल्प जोड़ना
Lint टेस्ट, Java 17 भाषा की सुविधाओं के साथ काम नहीं करते
Bumblebee 2021.1.1 पैच 1 में, commons-io के पुराने वर्शन (20030203.000550) को 2.11.0 से नया बताया गया है.
Lint 8.2.0 alphas अब भी Kotlin में टॉप-लेवल फ़ंक्शन इंपोर्ट के साथ काम नहीं करते
Bumblebee 2021.1.1 पैच 1 में, commons-io के पुराने वर्शन (20030203.000550) को 2.11.0 से नया बताया गया है.
Android Studio, किसी वर्शन को गलत तरीके से 'पुराना' के तौर पर मार्क करता है.
K2 UAST का इस्तेमाल करते समय, Lint, UseValueOf की समस्या को अनदेखा करता है
Android Lint की ओर से फ़्लैग किए गए किसी दूसरे प्रोजेक्ट से जुड़ी अनचाही समस्याएं
Android Lint, ऐसी KMP लाइब्रेरी पर काम नहीं करता जिसमें `प्रॉपर्टी 'variantInputs.name' की कोई कॉन्फ़िगर की गई वैल्यू नहीं है.`
Lint इंटिग्रेशन
testImplementation डिपेंडेंसी की वजह से, DuplicatePlatformClasses लिंट गड़बड़ी
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Apache POI लाइब्रेरी का इस्तेमाल करने पर, बिल्ड :minifyReleaseWithR8 पर अटक जाता है
Kotlin 1.9 में, अगर शून्य जांच की सुविधा हटा दी जाती है, तो R8, Kotlin लैम्ब्डा को नष्ट कर देता है

Android Gradle प्लग इन 8.2.1

ठीक की गई समस्याएं
Android Gradle प्लग इन
अगर सब-प्रोजेक्ट की क्लास, आर्टफ़ैक्ट ट्रांसफ़ॉर्म की मदद से पहले ही डेक्स हो चुकी हैं, तो उन पर डेक्स करने का टास्क न चलाएं
JavaVersion.VERSION_11 और OpenJDK 21 ea के साथ, Android Gradle प्लग इन काम नहीं कर रहा है
Dexer (D8)
Android U के लिए, डेटा को शुगर से हटाना
Shrinker (R8)
R8, गलत डेक्स जनरेट करता है, जिसकी वजह से रनटाइम के दौरान क्लास कास्ट एक्ससेप्शन होता है
R8 की वजह से इंटरफ़ेस, ऐक्सेस न किए जा सकने वाले इंटरफ़ेस में बदल गया
AGP 8.2.0 के साथ R8 Flurry SDK टूल क्रैश होना
Android - R8 की वजह से LinearLayoutManager के सबक्लास क्रैश हो जाते हैं
R8 में ClassCastException का गड़बड़ी का कोड दिखना. ऐसा तब होता है, जब रीपैकेजिंग की सुविधा चालू हो और कोड का साइज़ कम करने, उसे अस्पष्ट बनाने, और ऑप्टिमाइज़ करने की सुविधा बंद हो
R8, BridgeAnalyzer.analyzeMethod में फंस गया
R8 v8.2.33, अपग्रेड करने के बाद "java.lang.VerifyError: Bad type on operand stack" रनटाइम क्रैश

Android Gradle प्लग इन 8.2.2

ठीक की गई समस्याएं
Android Gradle प्लग इन
AGP 8.2.0 में JaCoCo वर्शन सेट नहीं किया जा सका
Dexer (D8)
[Desugared library] Desugared library version 2.1 is not compatible with previous versions of R8
क्या सिर्फ़ D8 के साथ भी ऑप्टिमाइज़ेशन चल रहे हैं?
Shrinker (R8)
[R8 8.3.21] R8 8.3.21, R8 8.1.56 से 1.57 एमबी बड़ा है
class.getInterfaces() खाली दिखाता है