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

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

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

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

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

जेडीके पाथ तय करने के लिए नया मैक्रो

#GRADLE_LOCAL_JAVA_HOME एक नया मैक्रो है. इसका इस्तेमाल करके, जेडीके का पाथ तय किया जा सकता है. इससे आपके प्रोजेक्ट के लिए, 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 जैसे मैक्रो का इस्तेमाल किया जा रहा है, तो ऐसा नहीं होगा.

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

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

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

Android Gradle प्लगिन 8.2.2

ठीक की गई समस्याएं
Android Gradle प्लगिन
एजीपी 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() से कोई इंटरफ़ेस नहीं मिलता

Android Gradle प्लगिन 8.2.1

ठीक की गई समस्याएं
Android Gradle प्लगिन
जब सबप्रोजेक्ट की क्लास को आर्टफ़ैक्ट ट्रांसफ़ॉर्म की मदद से पहले ही dex कर दिया गया हो, तो उन पर dexing टास्क न चलाएं
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" runtime crash after upgrade

Android Gradle प्लगिन 8.2.0

ठीक की गई समस्याएं
Android Gradle प्लगिन
कस्टम सोर्स टाइप को मल्टी-फ़्लेवर सोर्ससेट बनाने चाहिए
एसडीके के वर्शन की जांच करने की सुविधा, एसडीके एक्सटेंशन के उपयोगकर्ताओं के लिए उपलब्ध नहीं है
DependenciesInfoBuilder के लिए, एपीआई अपडेट और दस्तावेज़ की ज़रूरत है
DexingNoClasspathTransform (minSdk >= 24) with Java 11 target fails due to missing nest members
DslExtension.Builder.extendProjectWith() उस तरह से काम नहीं कर रहा है जैसा Groovy में बताया गया है
VariantSelector.withFlavor एपीआई जोड़ा गया, जो kotlin.Pair का इस्तेमाल नहीं करता
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) में कैश मेमोरी मौजूद नहीं है, क्योंकि `proguard.txt` बदल गया है
ऐप्लिकेशन के आपस में मिले हुए मेनिफ़ेस्ट में, डिपेंडेंसी से extractNativeLibs और useEmbeddedDex एट्रिब्यूट शामिल हैं
build-tools 33.0.0 के साथ AIDL काम नहीं करता
एजीपी: एआईडीएल टूल और फ़्रेमवर्क एआईडीएल फ़ाइल के पाथ को सार्वजनिक एपीआई के तौर पर एक्सपोज़ करना
अनुरोध: IDE को "PermittedSubclasses requires ASM9" के लिए समस्या हल करने का तरीका उपलब्ध कराने दें
एजीपी को कंपाइल करते समय, बाइट कोड 17 को टारगेट करना
VariantManager.getModifiedName को हटाएं
androidTest.packaging.jniLibs.keepDebugSymbols का androidTest पैकेजिंग पर कोई असर नहीं पड़ता
जीएमडी इंस्ट्रुमेंटेशन टेस्ट टास्क हैंग हो जाते हैं और फिर से कोशिश करने पर फ़ेल हो जाते हैं
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 में कॉन्फ़िगरेशन कैश मेमोरी काम नहीं करती
इस्तेमाल बंद होने की सूचना देने वाले मैसेज में, `ReplaceWith` का इस्तेमाल नहीं किया जाता
एनडीके का डिफ़ॉल्ट वर्शन पाने का तरीका बताना
Android Gradle प्लगिन को चलाने के लिए, Java 17 की ज़रूरत होती है.
ASM ट्रांसफ़ॉर्म और toAppend() के साथ काम न करना
KMP प्रोजेक्ट पर Gradle के ज़रिए K2 UAST के साथ लिंट चलाते समय, LintErrors को ठीक करना
वैरिएंट लेवल missingDimensionStrategy और शायद बिल्ड टाइप/फ़्लेवर 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 लाइब्रेरी मॉड्यूल में उपलब्ध नहीं है
एजीपी को 8.0.2 से 8.1.0 पर अपडेट करने के बाद, ':app:mergeReleaseClasses' टास्क पूरा नहीं हो सका
.gradle/.android/analytics.settings की वजह से, Gradle 8.1 में कॉन्फ़िगरेशन कैश मेमोरी काम नहीं करती
[AGP 8.1.0] अगर splits.abi.isEnable और testOptions.unitTests.isIncludeAndroidResources, दोनों की वैल्यू true पर सेट है, तो ./gradlew टेस्ट फ़ेल हो जाता है और "मेनिफ़ेस्ट आउटपुट नहीं मिला" गड़बड़ी का मैसेज दिखता है
Android Studio Giraffe, AGP 8.1 के साथ versionCodeOverride का इस्तेमाल नहीं करता
एजीपी 8.1.0, इंस्ट्रुमेंटेड टेस्ट चलाने के बाद ऐप्लिकेशन को अनइंस्टॉल कर देता है - 7.4.2 ऐसा नहीं करता
APK को ट्रांसफ़ॉर्म करने पर, ListingFileRedirectTask से जुड़ी गड़बड़ी होती है
HEDGEHOG REGRESSION: Run button is delayed by a few seconds (Creating spec)
Dexer (D8)
मिनिमम एपीआई 34 और इसके बाद के वर्शन के लिए डेक्सिंग करते समय, नेटिव रिकॉर्ड और सील की गई क्लास चालू करना
लिंट
इंस्टैंशिएट की गई लिंट जांच, AppComponentFactory को अच्छी तरह से मैनेज नहीं करती
Lint 8.2.0 के ऐल्फ़ा वर्शन में, Kotlin में टॉप-लेवल फ़ंक्शन इंपोर्ट करने की सुविधा अब भी काम नहीं करती
लिंट बेसलाइन में लाइन और कॉलम नंबर शामिल न करने का विकल्प जोड़ना
लिंट बेसलाइन में लाइन और कॉलम नंबर शामिल न करने का विकल्प जोड़ना
लिंट टेस्ट में, Java 17 भाषा की सुविधाएं काम नहीं करतीं
Bumblebee 2021.1.1 पैच 1 के मुताबिक, commons-io का पुराना वर्शन (20030203.000550), 2.11.0 से नया है.
Lint 8.2.0 के ऐल्फ़ा वर्शन में, Kotlin में टॉप-लेवल फ़ंक्शन इंपोर्ट करने की सुविधा अब भी काम नहीं करती
Bumblebee 2021.1.1 पैच 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.` गड़बड़ी का मैसेज दिखता है
लिंट इंटिग्रेशन
testImplementation डिपेंडेंसी से DuplicatePlatformClasses लिंट गड़बड़ी
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Apache POI लाइब्रेरी का इस्तेमाल करने पर, :minifyReleaseWithR8 पर बिल्ड अटक जाता है
Kotlin 1.9 की वजह से, Kotlin लैम्डा को R8 से मिटा दिया जाता है. ऐसा तब होता है, जब nullchecks को हटा दिया जाता है