Android Gradle প্লাগ-ইন 9.2.0 (এপ্রিল ২০২৬)

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

মানানসই

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

ন্যূনতম ভার্সন ডিফল্ট ভার্সন নোট
Gradle 9.4.1 9.4.1 আরও জানতে, Gradle আপডেট করা দেখুন।
SDK Build Tools ৩৬.০.০ ৩৬.০.০ SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন।
NDK N/A 28.2.13676358 NDK-এর অন্য কোনও ভার্সন ইনস্টল বা কনফিগার করুন।
JDK 17 17 আরও জানতে, JDK ভার্সন সেট করা দেখুন।
Kotlin Gradle প্লাগ-ইন (KGP) ২.২.১০ ২.২.১০ আরও জানতে, Kotlin Gradle প্লাগ-ইনের উপর রানটাইম নির্ভরতা দেখুন।

ইউনিফায়েড কভারেজ ও টেস্ট রিপোর্ট

AGP 9.2.0-alpha07, HTML ড্যাশবোর্ড তৈরি করার জন্য টাস্ক নিয়ে আসে যা বিভিন্ন ধরনের টেস্ট (ইউনিট ও ইন্সট্রুমেন্টেশন), মডিউল ও বিল্ড ভ্যারিয়েন্ট থেকে টেস্টের ফলাফল ও কভারেজকে একত্রিত করে। এটি একটি ড্যাশবোর্ডে সামগ্রিক ওভারভিউ প্রদান করে। আরও তথ্যের জন্য, ইউনিফায়েড কোড কভারেজ রিপোর্ট তৈরি করা এবং ইউনিফায়েড টেস্ট রিপোর্ট দেখা নিবন্ধ দেখুন।

R8 পরিবর্তন

AGP 9.2.0-এ নিম্নলিখিত R8 পরিবর্তন অন্তর্ভুক্ত করা হয়েছে।

রানটাইম ইনভিজিবল অ্যানোটেশন রাখার জন্য আরও কঠোর -keepattributes শব্দার্থ

রানটাইম ইনভিজিবল অ্যানোটেশন রানটাইমে পড়া যায় না। তাই D8 শর্তহীনভাবে রানটাইম ইনভিজিবল অ্যানোটেশন সরিয়ে দেয়, এটি পরিবর্তন করার কোনও বিকল্প নেই।

ProGuard-এর সাথে মানানসই হওয়ার জন্য, R8 রানটাইম ইনভিজিবল অ্যানোটেশন আউটপুট করার সুবিধা দেয়। কিন্তু DEX-এ কম্পাইল করার সময়, রানটাইম ইনভিজিবল অ্যানোটেশন সাধারণত কখনওই ধরে রাখা উচিত নয়। তবে, রানটাইম দৃশ্যমান অ্যানোটেশন রাখার জন্য R8-এ কনভেনিয়েন্ট নিয়ম -keepattributes *Annotation* (সরাসরি বা পরোক্ষভাবে গ্রাহক কিপ নিয়ম থেকে) যোগ করা সাধারণ প্র্যাক্টিস। তবে এর ফলে রানটাইম ইনভিজিবল অ্যানোটেশনও থেকে যায়।

এই সমস্যা কমানোর জন্য এবং D8-এর আচরণ আরও ভালভাবে ম্যাচ করানোর জন্য, -keepattributes ওয়াইল্ডকার্ড সহ প্যাটার্ন আর RuntimeInvisibleAnnotations, RuntimeInvisibleParameterAnnotations এবং RuntimeInvisibleTypeAnnotations-এর সাথে ম্যাচ করে না। এর ফলে, রানটাইম ইনভিজিবল অ্যানোটেশন শুধুমাত্র তখনই রাখা হবে যদি অ্যাট্রিবিউট নাম ওয়াইল্ডকার্ড ছাড়া স্পষ্টভাবে উল্লেখ করা হয়।

নিম্নলিখিত কোনও নিয়মই এখন রানটাইম ইনভিজিবল অ্যানোটেশন রাখবে না:

-keepattributes *
-keepattributes *Annotation*
-keepattributes *Invisible*

রানটাইম ইনভিজিবল অ্যানোটেশন বজায় রাখতে, নিম্নলিখিত নিয়ম ব্যবহার করুন:

-keepattributes RuntimeInvisibleAnnotations,
                RuntimeInvisibleParameterAnnotations,
                RuntimeInvisibleTypeAnnotations

মেম্বার নিয়মে নেগেটিভ নাম ব্যবহার করা যায়

কনফিগারেশন ভাষা আরও উন্নত করা হয়েছে যাতে আপনি এখন নেগেটিভ মেম্বার নামের প্যাটার্ন ম্যাচ করতে পারেন।

যেমন, "ForTesting" দিয়ে শেষ হয় না এমন সব পদ্ধতি ম্যাচ করাতে, নিম্নলিখিত নিয়ম ব্যবহার করুন:

-keepclassmembers class com.example.MyClass {
  *** !*ForTesting(...);
}

এছাড়াও, -if নিয়মের পূর্বশর্তে মেম্বারের নামের প্যাটার্ন বাতিল করা যেতে পারে। কোনও নেগেটিভ মেম্বার নেম প্যাটার্নে ওয়াইল্ডকার্ড থাকলে, -if পরবর্তী নিয়মে সেই ওয়াইল্ডকার্ডের ব্যাক-রেফারেন্স দেওয়া যাবে না।

সমাধান করা সমস্যা

Android Gradle প্লাগ-ইন 9.2.1

সমাধান করা সমস্যা
Android Gradle Plugin
java.lang.ClassNotFoundException: Didn't find class "com.android.tools.r8.RecordTag" after upgrading gradle to 9.2.0

Android Gradle প্লাগ-ইন 9.2.0

সমাধান করা সমস্যা
Android Gradle Plugin
ব্যবহারকারীদের সতর্ক করুন যদি তাদের commonTest থাকে কিন্তু withHostTestBuilder ভুলে যান
[fused lib - public] OkHttp-তে সোর্স অন্তর্ভুক্ত থাকে
লাইব্রেরিতে ম্যানিফেস্ট প্লেসহোল্ডার সহ androidDeviceTest রান করা যায় না (com.android.kotlin.multiplatform.library প্লাগ-ইন সহ AGP 9.0.0)
java বন্ধ করা থাকলে, ব্যবহারকারীর src/androidDeviceTest/java থাকলে AGP-কে সতর্ক করতে হবে
AGP 9.0 No androidComponents.onVariant equivalent for applicationVariants.all.mergeAssetsProvider
`*.xml.flat` ফাইলে সম্পূর্ণ ফাইল পাথ থাকে
R8D8ThreadPoolBuildService রেজিস্টার করা নেই
JDK 26-এর সাথে JdkImageTransform কাজ করছে না
AGP 10.0-এ AAR মেটাডেটায় minAgpVersion অটোমেটিক এনকোড করা
নতুন AGP DSL ব্যবহার করে APK-র নাম পরিবর্তন করা
অ্যাক্সেস করার সময় সমস্যা (তবে মূল্যায়ন করা হয়নি) bootClasspath IllegalStateException: targetCompatibility এখনও চূড়ান্ত করা হয়নি
লাইব্রেরির জন্য keepRules সোর্সসেট কাজ করছে না
AGP-তে CC কম্প্যাটিবিলিটি ঘোষণা এম্বেড করা
Kotlin Gradle প্লাগ-ইন ডিপেন্ডেন্সি 2.3.10-এ আপডেট করুন
মূলের তুলনায় পরীক্ষার জন্য বেশি compileSdk-এর অনুমতি দিন
Lint
মেসেজে টাইপো সংক্রান্ত সমস্যা
`SarifReporter.kt`-এ অফসেট পয়েন্টার আটকে থাকার কারণে Lint SARIF রিপোর্টে কন্টেক্সট উইন্ডো ট্রানকেট করা হয়েছে
Lint Gradle ক্লায়েন্টে একটি গুরুত্বপূর্ণ ফিচার নেই, যার ফলে এটি নির্ভরযোগ্য নয়
রিসোর্স সঙ্কুচিত করা বন্ধ করা থাকলে লিন্ট সংক্রান্ত সমস্যা
নেস্টেড IntDef কনস্ট্যান্ট ব্যবহার করার সময় AGP 9 Lint, ভুল কনস্ট্যান্টের রিপোর্ট করে
রিসোর্স সঙ্কুচিত করা বন্ধ করা থাকলে লিন্ট সংক্রান্ত সমস্যা
Lint ইন্টিগ্রেশন
Java 21 বাইটকোডে কম্পাইল করা কাস্টম লিন্ট চেকের সাথে Android লিন্ট কাজ করে না
Lint Gradle টাস্ক --quiet ফ্ল্যাগ উপেক্ষা করে
Shrinker (R8)
Java 11-কে টার্গেট করলে d8 ভেঙে যায় বলে মনে হয়