Android Gradle Plugin 8.2.0 (নভেম্বর ২০২৩)

Android Gradle প্লাগ-ইন 8.2.0 হল একটি বড় রিলিজ যাতে বিভিন্ন ধরনের নতুন ফিচার ও উন্নতি অন্তর্ভুক্ত।

মানানসই

Android Gradle plugin 8.2-এর সাথে কাজ করে এমন সর্বাধিক API লেভেল হল API লেভেল 34. এখানে অন্যান্য কম্প্যাটিবিলিটি সংক্রান্ত তথ্য দেওয়া হল:

ন্যূনতম ভার্সন ডিফল্ট ভার্সন নোট
Gradle ৮.২ ৮.২ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK Build Tools 34.0.0 34.0.0 SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন।
NDK N/A ২৫.১.৮৯৩৭৩৯৩ 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.2

সমাধান করা সমস্যা
Android Gradle Plugin
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-এর থেকে ১.৫৭ এমবি বড়
class.getInterfaces() খালি রিটার্ন করে

Android Gradle প্লাগ-ইন 8.2.1

সমাধান করা সমস্যা
Android Gradle Plugin
আর্টিফ্যাক্ট ট্রান্সফর্মের মাধ্যমে আগে থেকেই ডেক্স করা থাকলে, সাবপ্রজেক্টের ক্লাসে ডেক্সিং টাস্ক রান করবেন না
JavaVersion.VERSION_11 এবং OpenJDK 21 ea-এর সাথে Android Gradle প্লাগ-ইন কাজ করেনি
Dexer (D8)
Android U-এর জন্য Desugar রেকর্ড
Shrinker (R8)
R8, ভাঙা dex তৈরি করে যার ফলে রানটাইমে ক্লাস কাস্ট ব্যতিক্রম ঘটে
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.0

সমাধান করা সমস্যা
Android Gradle Plugin
কাস্টম সোর্সের ধরন থেকে একাধিক ফ্লেভারের সোর্সসেট তৈরি করা উচিত
SDK ভার্সন চেক SDK এক্সটেনশনের ব্যবহারকারীদের ম্যানেজ করে না
DependenciesInfoBuilder-এর API আপডেট + ডকুমেন্ট প্রয়োজন
নেস্ট মেম্বার না থাকার কারণে Java 11 টার্গেট সহ DexingNoClasspathTransform (minSdk >= 24) কাজ করে না
DslExtension.Builder.extendProjectWith() Groovy-তে যেভাবে বর্ণনা করা হয়েছে সেইভাবে কাজ করছে না
kotlin.Pair ব্যবহার করে না এমন VariantSelector.withFlavor API যোগ করুন
AndroidLintAnalysisTask (:lintAnalyzeExternalRelease) has a cache miss because `proguard.txt` has changed
অ্যাপ মার্জ করা ম্যানিফেস্টে ডিপেন্ডেন্সি থেকে extractNativeLibs এবং useEmbeddedDex অ্যাট্রিবিউট থাকে
build-tools 33.0.0-এর সাথে AIDL কাজ করে না
AGP: AIDL টুল ও ফ্রেমওয়ার্ক AIDL ফাইলের পাথকে পাবলিক API হিসেবে এক্সপোজ করা
অনুরোধ: IDE-কে "PermittedSubclasses requires ASM9" সমস্যার সমাধান অফার করতে দিন
AGP কম্পাইল করার সময় টার্গেট বাইটকোড ১৭
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 কনফিগারেশন ক্যাশিং ভেঙে দেয়
পুরনো হয়ে যাওয়া মেসেজে `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 এবং নতুন API আউট-অফ-লাইনিংয়ের জন্য)
সিঙ্ক সংক্রান্ত সতর্কতা: "AnalyticsService তৈরি হওয়ার পরে AnalyticsConfiguratorService-এর মাধ্যমে GradleBuildProject.Builder অ্যাক্সেস করা উচিত নয়"
Gradle 8.2 মাইলস্টোন বা RC-তে আপডেট করা
'java.lang.Comparable' অ্যাক্সেস করা যাচ্ছে না
android লাইব্রেরি মডিউলে androidResources উপলভ্য নেই
AGP 8.0.2 থেকে 8.1.0-এ আপডেট করার পরে ':app:mergeReleaseClasses' টাস্ক এক্সিকিউট করা যায়নি
.gradle/.android/analytics.settings-এর কারণে Gradle 8.1 কনফিগারেশন ক্যাশিং ভেঙে দেয়
[AGP 8.1.0] ./gradlew test fails with "Unable to find manifest output" if both splits.abi.isEnable and testOptions.unitTests.isIncludeAndroidResources are true
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 ও তার উপরের ভার্সনের জন্য ডেক্সিং করার সময় নেটিভ রেকর্ড ও সিল করা ক্লাস চালু করা
Lint
ইনস্ট্যানশিয়েট করা লিন্ট চেক AppComponentFactory ভালোভাবে ম্যানেজ করে না
Lint 8.2.0 আলফা ভার্সনে এখনও Kotlin-এ টপ-লেভেল ফাংশন ইমপোর্ট করা যায় না
লিন্ট বেসলাইনে লাইন ও কলাম নম্বর অন্তর্ভুক্ত না করার বিকল্প যোগ করা
লিন্ট বেসলাইনে লাইন ও কলাম নম্বর অন্তর্ভুক্ত না করার বিকল্প যোগ করা
লিন্ট টেস্টে 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-এর ফ্ল্যাগ করা অন্য প্রোজেক্ট থেকে অপ্রত্যাশিত সমস্যা
`property 'variantInputs.name' doesn't have a configured value.` সহ KMP লাইব্রেরিতে Android Lint কাজ করে না।
Lint ইন্টিগ্রেশন
testImplementation ডিপেন্ডেন্সি থেকে DuplicatePlatformClasses লিন্ট সংক্রান্ত সমস্যা
Shrinker (R8)
java.lang.VerifyError: Verifier rejected class
Apache POI লাইব্রেরি ব্যবহার করার সময় :minifyReleaseWithR8-এ বিল্ড আটকে যায়
Kotlin 1.9-এ, নালচেক সরিয়ে দেওয়া হলে R8-এর মাধ্যমে Kotlin ল্যাম্বডা ধ্বংস হয়ে যায়