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

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

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

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

कम से कम वर्शन डिफ़ॉल्ट वर्शन नोट
Gradle 8.2 8.2 ज़्यादा जानने के लिए, Gradle को अपडेट करना लेख पढ़ें.
एसडीके बिल्ड टूल 34.0.0 34.0.0 एसडीके बिल्ड टूल इंस्टॉल करें या कॉन्फ़िगर करें.
एनडीके लागू नहीं 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 की सेटिंग के ज़रिए इस फ़ील्ड को सेट करें: File (या macOS पर Android Studio) > Settings > Build, Execution, Deployment > Build Tools > Gradle.

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

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

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

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

Android Gradle प्लग इन 8.2.0

ठीक की गई समस्याएं
Android Gradle प्लग इन
कस्टम सोर्स टाइप को कई फ़्लेवर वाले सोर्ससेट बनाने चाहिए
एसडीके के वर्शन की जांच करने की सुविधा, एसडीके एक्सटेंशन के उपयोगकर्ताओं के लिए काम नहीं करती
DependenciesInfoBuilder को एपीआई अपडेट और दस्तावेज़ की ज़रूरत है
नेस्ट मेंबर मौजूद न होने की वजह से, Java 11 को टारगेट करने वाला DexingNoClasspathTransform (minSdk >= 24) काम नहीं करता
Groovy में DslExtension.Builder.extendProjectWith() बताए गए तरीके से काम नहीं कर रहा है
VariantSelector.withFlavor API जोड़ें, जो kotlin.Pair का इस्तेमाल नहीं करता
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) has a cache miss because `proguard.txt` has changed
ऐप्लिकेशन के मर्ज किए गए मेनिफ़ेस्ट में, डिपेंडेंसी से extractNativeLibs और useEmbeddedDex एट्रिब्यूट शामिल हैं
build-tools 33.0.0 के साथ AIDL काम नहीं करता
AGP: AIDL टूल और फ़्रेमवर्क AIDL फ़ाइल के पाथ को सार्वजनिक एपीआई के तौर पर दिखाएं
अनुरोध: IDE को "PermittedSubclasses requires ASM9" समस्या को ठीक करने का सुझाव देने दें
AGP को कंपाइल करते समय, टारगेट बाइटकोड 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/.android/analytics.settings की वजह से, Gradle 8.1 में कॉन्फ़िगरेशन कैश मेमोरी काम नहीं करती
Deprecation messages doesn't use `ReplaceWith`
डिफ़ॉल्ट NDK वर्शन पाने का तरीका उपलब्ध कराना
Android Gradle प्लग इन को चलाने के लिए, Java 17 की ज़रूरत होती है.
ASM Transform और toAppend() के साथ काम न करने की समस्या
KMP प्रोजेक्ट पर Gradle के ज़रिए K2 UAST के साथ लिंट चलाने पर, LintErrors ठीक करें
Variant लेवल पर missingDimensionStrategy के लिए सहायता उपलब्ध है. साथ ही, हो सकता है कि build type/flavor के लिए matchingFallback की सुविधा भी उपलब्ध हो
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/.android/analytics.settings की वजह से, Gradle 8.1 में कॉन्फ़िगरेशन कैश मेमोरी काम नहीं करती
[AGP 8.1.0] ./gradlew test फ़ेल हो जाता है. साथ ही, "Unable to find manifest output" मैसेज दिखता है. ऐसा तब होता है, जब splits.abi.isEnable और testOptions.unitTests.isIncludeAndroidResources, दोनों को सही पर सेट किया गया हो
Android Studio Giraffe, AGP 8.1 के साथ versionCodeOverride का इस्तेमाल नहीं करता
AGP 8.1.0, इंस्ट्रुमेंटेड टेस्ट चलाने के बाद ऐप्लिकेशन को अनइंस्टॉल कर देता है. हालांकि, 7.4.2 ऐसा नहीं करता
किसी APK को ट्रांसफ़ॉर्म करने पर, ListingFileRedirectTask में गड़बड़ी होती है
HEDGEHOG REGRESSION: Run बटन कुछ सेकंड की देरी से दिखता है (Creating spec)
Dexer (D8)
min-api 34 और इससे ऊपर के वर्शन के लिए dexing करते समय, नेटिव रिकॉर्ड और सील की गई क्लास चालू करें
Lint
इंस्टेंटिएटेड लिंट चेक, AppComponentFactory को सही तरीके से हैंडल नहीं करता
Lint 8.2.0 के ऐल्फ़ा वर्शन में, अब भी Kotlin में टॉप-लेवल फ़ंक्शन इंपोर्ट करने की सुविधा काम नहीं करती
लिंट बेसलाइन में लाइन और कॉलम नंबर शामिल न करने का विकल्प जोड़ें
लिंट बेसलाइन में लाइन और कॉलम नंबर शामिल न करने का विकल्प जोड़ें
Lint टेस्ट, Java 17 की भाषा से जुड़ी सुविधाओं के साथ काम नहीं करते
Bumblebee 2021.1.1 Patch 1 में, commons-io के पुराने वर्शन (20030203.000550) को 2.11.0 से नया बताया जा रहा है.
Lint 8.2.0 के ऐल्फ़ा वर्शन में, अब भी Kotlin में टॉप-लेवल फ़ंक्शन इंपोर्ट करने की सुविधा काम नहीं करती
Bumblebee 2021.1.1 Patch 1 में, commons-io के पुराने वर्शन (20030203.000550) को 2.11.0 से नया बताया जा रहा है.
Android Studio, तय किए गए वर्शन को गलत तरीके से पुराना वर्शन के तौर पर मार्क करता है.
K2 UAST का इस्तेमाल करते समय, Lint, UseValueOf समस्या को अनदेखा करता है
Android Lint ने किसी दूसरे प्रोजेक्ट में मिली ऐसी समस्याएं फ़्लैग की हैं जिनके बारे में पहले से नहीं पता था
Android Lint, KMP लाइब्रेरी पर काम नहीं करता है. इसमें `property 'variantInputs.name' doesn't have a configured value.` गड़बड़ी दिखती है.
Lint इंटिग्रेशन
testImplementation डिपेंडेंसी से DuplicatePlatformClasses लिंट की गड़बड़ी
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Apache POI लाइब्रेरी का इस्तेमाल करते समय, बिल्ड :minifyReleaseWithR8 पर अटक जाता है
Kotlin 1.9 में, अगर nullchecks हटा दिए जाते हैं, तो R8 की वजह से Kotlin lambdas डिस्ट्रॉय हो जाते हैं

Android Gradle प्लग इन 8.2.1

ठीक की गई समस्याएं
Android Gradle प्लग इन
जब सबप्रोजेक्ट की क्लास को आर्टफ़ैक्ट ट्रांसफ़ॉर्म के ज़रिए पहले ही डेक्स किया जा चुका हो, तब उन पर डेक्सिंग टास्क न चलाएं
Android Gradle प्लग इन, JavaVersion.VERSION_11 और OpenJDK 21 ea के साथ काम नहीं करता
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 का वर्शन 2.1, R8 के पिछले वर्शन के साथ काम नहीं करता है
क्या D8 के साथ भी ऑप्टिमाइज़ेशन की सुविधा काम करती है?
Shrinker (R8)
[R8 8.3.21] R8 8.3.21, R8 8.1.56 से 1.57 एमबी बड़ा है
class.getInterfaces() से खाली वैल्यू मिलती है