অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.২.০ (এপ্রিল ২০২৬)

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

সামঞ্জস্যতা

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

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

একীভূত কভারেজ এবং পরীক্ষার প্রতিবেদন

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 কনসিকোয়েন্ট নিয়মে ব্যাক-রেফারেন্স করা যাবে না।

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

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

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
java.lang.ClassNotFoundException: গ্রেডল 9.2.0-এ আপগ্রেড করার পর "com.android.tools.r8.RecordTag" ক্লাসটি খুঁজে পাওয়া যায়নি।

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

সমাধান করা সমস্যাগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
ব্যবহারকারীদের সতর্ক করুন যদি তাদের commonTest থাকে কিন্তু withHostTestBuilder ভুলে যান।
[সংযুক্ত লাইব্রেরি - পাবলিক] OkHttp-তে উৎস অন্তর্ভুক্ত রয়েছে
লাইব্রেরিতে ম্যানিফেস্ট প্লেসহোল্ডার সহ androidDeviceTest চালানো যাবে না (AGP 9.0.0, com.android.kotlin.multiplatform.library প্লাগইন সহ)
যদি ব্যবহারকারীর src/androidDeviceTest/java ফাইলে জাভা নিষ্ক্রিয় করা থাকে, তাহলে AGP-এর সতর্ক করা উচিত।
AGP 9.0-এ applicationVariants.all.mergeAssetsProvider-এর জন্য androidComponents.onVariant-এর কোনো সমতুল্য নেই।
`*.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-এ আপডেট করুন।
টেস্টের জন্য মেইনের চেয়ে উচ্চতর কম্পাইলএসডিকে অনুমোদন করুন।
লিন্ট
বার্তায় টাইপোর ভুল সংশোধন করুন।
`SarifReporter.kt`-এ অফসেট পয়েন্টার আটকে যাওয়ার কারণে Lint SARIF রিপোর্টে কনটেক্সট উইন্ডো সংক্ষিপ্ত হয়ে গেছে।
Lint Gradle ক্লায়েন্টে একটি গুরুত্বপূর্ণ ফিচারের অভাব রয়েছে, যার ফলে এটি সর্বোত্তম ক্ষেত্রেও নির্ভরযোগ্য নয়।
রিসোর্স সঙ্কুচিতকরণ নিষ্ক্রিয় থাকলে লিন্ট ত্রুটি
নেস্টেড IntDef কনস্ট্যান্ট ব্যবহার করলে AGP 9 Lint WrongConstant রিপোর্ট করে।
রিসোর্স সঙ্কুচিতকরণ নিষ্ক্রিয় থাকলে লিন্ট ত্রুটি
লিন্ট ইন্টিগ্রেশন
জাভা ২১ বাইটকোডে কম্পাইল করা কাস্টম লিন্ট চেকের ক্ষেত্রে অ্যান্ড্রয়েড লিন্ট ব্যর্থ হয়।
লিন্ট গ্রেডল টাস্কগুলি --quiet ফ্ল্যাগ উপেক্ষা করে।
সঙ্কোচনকারী (R8)
জাভা ১১ টার্গেট করলে d8 ভেঙে যায় বলে মনে হচ্ছে।