অ্যান্ড্রয়েড গ্রেডল প্লাগইন 8.2.0 (নভেম্বর 2023)

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.২.০ একটি প্রধান রিলিজ, যাতে বিভিন্ন নতুন ফিচার ও উন্নতি অন্তর্ভুক্ত করা হয়েছে।

সামঞ্জস্যতা

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.২ সর্বোচ্চ যে এপিআই লেভেলটি সমর্থন করে তা হলো এপিআই লেভেল ৩৪। অন্যান্য সামঞ্জস্যতার তথ্য নিচে দেওয়া হলো:

সর্বনিম্ন সংস্করণ ডিফল্ট সংস্করণ নোট
গ্রেডল ৮.২ ৮.২ আরও জানতে, Gradle আপডেট করা দেখুন।
এসডিকে বিল্ড টুলস ৩৪.০.০ ৩৪.০.০ এসডিকে বিল্ড টুলস ইনস্টল বা কনফিগার করুন
এনডিকে প্রযোজ্য নয় ২৫.১.৮৯৩৭৩৯৩ NDK-এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন
জেডিকে ১৭ ১৭ আরও জানতে, JDK সংস্করণ নির্ধারণ দেখুন।

JDK পাথ নির্দিষ্ট করার জন্য নতুন ম্যাক্রো

#GRADLE_LOCAL_JAVA_HOME হলো একটি নতুন ম্যাক্রো যা আপনি JDK পাথ নির্দিষ্ট করার জন্য ব্যবহার করতে পারেন। এটি আপনার প্রোজেক্টের জন্য গ্রেডল ডেমন (ব্যাকগ্রাউন্ড প্রসেস) চালানোর কাজে ব্যবহৃত জাভা হোম পাথ নির্দিষ্ট করাকে আরও নিরাপদ ও সহজ করে তোলে। নির্বাচিত পাথটি .gradle/config.properties ফাইলের java.home ফিল্ডে সংরক্ষিত থাকে। অ্যান্ড্রয়েড স্টুডিওতে গ্রেডল JDK সেটিংসের মাধ্যমে এই ফিল্ডটি সেট করুন: ফাইল (অথবা macOS-এ অ্যান্ড্রয়েড স্টুডিও ) > সেটিংস > বিল্ড, এক্সিকিউশন, ডিপ্লয়মেন্ট > বিল্ড টুলস > গ্রেডল

নতুন প্রজেক্টগুলো ডিফল্টরূপে #GRADLE_LOCAL_JAVA_HOME ব্যবহার করবে। বিদ্যমান প্রজেক্টগুলো সফল সিঙ্কের পর স্বয়ংক্রিয়ভাবে নতুন ম্যাক্রোতে স্থানান্তরিত হবে, যদি না আপনি আগে থেকেই #JAVA_HOME মতো কোনো ম্যাক্রো ব্যবহার করে থাকেন।

নতুন ম্যাক্রোটির প্রধান সুবিধাগুলো নিম্নরূপ:

  • প্রথমে আপনার প্রজেক্ট না খুলেই আপনি ম্যানুয়ালি JDK পাথ পরিবর্তন করে সিঙ্ক চালু করতে পারেন।
  • যেহেতু আপনার Gradle JDK নির্বাচনের জন্য একটিই নির্ভরযোগ্য উৎস থাকে, তাই Gradle এবং প্রজেক্টের JDK ভার্সনের অসামঞ্জস্যতাজনিত ত্রুটি কম হয়।

সমাধান করা সমস্যাগুলি

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.২.২

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
AGP 8.2.0-এ JaCoCo সংস্করণ সেট করা সম্ভব নয়।
ডেক্সার (ডি৮)
[desugared লাইব্রেরি] Desugared লাইব্রেরি সংস্করণ 2.1, R8-এর পূর্ববর্তী সংস্করণগুলির সাথে সামঞ্জস্যপূর্ণ নয়।
শুধু D8 দিয়েই কি অপ্টিমাইজেশন চলছে?
সঙ্কোচনকারী (R8)
[R8 8.3.21] R8 8.3.21, R8 8.1.56-এর চেয়ে 1.57MB বড়।
class.getInterfaces() খালি রিটার্ন করে

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.২.১

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
সাবপ্রজেক্টের ক্লাসগুলো আর্টিফ্যাক্ট ট্রান্সফর্মের মাধ্যমে ইতিমধ্যে ডেক্স করা হয়ে গেলে সেগুলোর উপর ডেক্সিং টাস্ক চালাবেন না।
JavaVersion.VERSION_11 এবং OpenJDK 21 ea এর সাথে Android Gradle Plugin ব্যর্থ হয়েছে।
ডেক্সার (ডি৮)
অ্যান্ড্রয়েড ইউ-এর জন্য ডিসুগার রেকর্ড
সঙ্কোচনকারী (R8)
R8 ত্রুটিপূর্ণ ডেক্স তৈরি করে, যার ফলে রানটাইমে ক্লাস কাস্ট এক্সেপশন দেখা দেয়।
R8 ইন্টারফেস পরিবর্তন করে এটিকে অ্যাক্সেস-অযোগ্য করে তুলছে।
AGP 8.2.0 এর সাথে R8 Flurry SDK ক্র্যাশ করে।
অ্যান্ড্রয়েড - R8 এর কারণে LinearLayoutManager এর সাবক্লাস ক্র্যাশ করে।
R8-এ ClassCastException দেখা যায় যখন রিপ্যাকেজিং চালু থাকে এবং শ্রিনকিং, অবফাসকেশন ও অপটিমাইজেশন বন্ধ থাকে।
R8 BridgeAnalyzer.analyzeMethod-এ আটকে গেছে।
R8 v8.2.33, "java.lang.VerifyError: Bad type on operand stack" আপগ্রেডের পর রানটাইম ক্র্যাশ।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৮.২.০

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
কাস্টম সোর্স টাইপগুলো মাল্টি-ফ্লেভার সোর্সসেট তৈরি করবে।
এসডিকে সংস্করণ যাচাইকরণ এসডিকে এক্সটেনশন ব্যবহারকারীদের বিষয়টি বিবেচনা করে না।
DependenciesInfoBuilder-এর জন্য API আপডেট ও ডকুমেন্টেশন প্রয়োজন।
নেস্ট মেম্বার অনুপস্থিত থাকার কারণে জাভা ১১ টার্গেটের সাথে DexingNoClasspathTransform (minSdk >= 24) ব্যর্থ হয়।
Groovy-তে বর্ণিত পদ্ধতি অনুযায়ী DslExtension.Builder.extendProjectWith() কাজ করছে না।
এমন VariantSelector.withFlavor API যোগ করুন যা kotlin.Pair ব্যবহার করে না।
অ্যান্ড্রয়েডলিন্টঅ্যানালাইসিসটাস্ক ( `proguard.txt` পরিবর্তিত হওয়ায় `:lintAnalyzeExternalRelease`-এর ক্যাশে মিস হয়েছে।
অ্যাপের মার্জ করা ম্যানিফেস্টে ডিপেন্ডেন্সিগুলো থেকে extractNativeLibs এবং useEmbeddedDex অ্যাট্রিবিউটগুলো অন্তর্ভুক্ত রয়েছে।
বিল্ড-টুলস 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` ব্যবহার করা হয় না।
ডিফল্ট এনডিকে সংস্করণ পাওয়ার একটি উপায় প্রকাশ করুন।
অ্যান্ড্রয়েড গ্র্যাডল প্লাগইনটি চালানোর জন্য জাভা ১৭ প্রয়োজন।
ASM Transform এবং toAppend() এর অসামঞ্জস্যতা
KMP প্রোজেক্টে Gradle-এর মাধ্যমে K2 UAST ব্যবহার করে lint চালানোর সময় LintErrors সমাধান করুন
ভ্যারিয়েন্ট লেভেলের missingDimensionStrategy-এর জন্য সমর্থন, এবং সম্ভবত বিল্ড টাইপ/ফ্লেভার মেলানোর ফলব্যাক।
অ্যান্ড্রয়েড স্টুডিও জিরাফ থেকে `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] যদি splits.abi.isEnable এবং testOptions.unitTests.isIncludeAndroidResources উভয়ই true হয়, তাহলে ./gradlew test "Unable to find manifest output" ত্রুটির সাথে ব্যর্থ হয়।
অ্যান্ড্রয়েড স্টুডিও জিরাফ AGP 8.1-এর সাথে versionCodeOverride-কে সম্মান করে না।
ইন্সট্রুমেন্টেড টেস্ট চালানোর পর AGP 8.1.0 অ্যাপটি আনইনস্টল করে দেয় – 7.4.2 তা করে না।
একটি APK রূপান্তর করার ফলে ListingFileRedirectTask-এ একটি ত্রুটি দেখা দেয়।
হেজহগ রিগ্রেশন: রান বাটন কয়েক সেকেন্ড দেরিতে কাজ করছে (স্পেক তৈরি হচ্ছে)
ডেক্সার (ডি৮)
min-api 34 এবং তার উপরের সংস্করণগুলোর জন্য dexing করার সময় নেটিভ রেকর্ড এবং সিলড ক্লাস সক্রিয় করুন।
লিন্ট
ইনস্ট্যানশিয়েটেড লিন্ট চেক AppComponentFactory-কে সঠিকভাবে পরিচালনা করে না।
Lint 8.2.0 আলফা সংস্করণগুলো এখনও কোটলিনে টপ-লেভেল ফাংশন ইম্পোর্ট সমর্থন করে না।
লিন্ট বেসলাইনে লাইন ও কলাম নম্বর অন্তর্ভুক্ত না করার একটি বিকল্প যোগ করুন।
লিন্ট বেসলাইনে লাইন ও কলাম নম্বর অন্তর্ভুক্ত না করার একটি বিকল্প যোগ করুন।
লিন্ট টেস্ট জাভা ১৭-এর ল্যাঙ্গুয়েজ ফিচারগুলো সাপোর্ট করে না।
Bumblebee 2021.1.1 Patch 1 বলছে যে commons-io-এর একটি পুরোনো সংস্করণ (20030203.000550) 2.11.0-এর চেয়ে নতুন।
Lint 8.2.0 আলফা সংস্করণগুলো এখনও কোটলিনে টপ-লেভেল ফাংশন ইম্পোর্ট সমর্থন করে না।
Bumblebee 2021.1.1 Patch 1 বলছে যে commons-io-এর একটি পুরোনো সংস্করণ (20030203.000550) 2.11.0-এর চেয়ে নতুন।
অ্যান্ড্রয়েড স্টুডিও ভুলবশত নির্দিষ্ট সংস্করণটিকে পুরোনো হিসেবে চিহ্নিত করে।
K2 UAST ব্যবহার করার সময় Lint, UseValueOf সমস্যাটি উপেক্ষা করে।
অ্যান্ড্রয়েড লিন্ট দ্বারা অন্য একটি প্রজেক্ট থেকে অপ্রত্যাশিত সমস্যা চিহ্নিত করা হয়েছে।
`property 'variantInputs.name' doesn't have a configured value` এই ত্রুটির কারণে একটি KMP লাইব্রেরিতে Android Lint ব্যর্থ হয়।
লিন্ট ইন্টিগ্রেশন
testImplementation ডিপেন্ডেন্সি থেকে DuplicatePlatformClasses লিন্ট এরর
সঙ্কোচনকারী (R8)
java.lang.VerifyError: যাচাইকারী ক্লাস প্রত্যাখ্যান করেছে
অ্যাপাচি POI লাইব্রেরি ব্যবহার করার সময় বিল্ডটি :minifyReleaseWithR8 ধাপে আটকে যায়।
কোটলিন ১.৯-এর কারণে, নালচেক বাদ দেওয়া হলে R8 দ্বারা কোটলিন ল্যাম্বডাগুলো ধ্বংস হয়ে যায়।