Android Gradle Plugin 8.4.0 (এপ্রিল ২০২৪)

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

মানানসই

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

ন্যূনতম ভার্সন ডিফল্ট ভার্সন নোট
Gradle ৮.৬ ৮.৬ আরও জানতে, Gradle আপডেট করা দেখুন।
SDK Build Tools 34.0.0 34.0.0 SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন।
NDK N/A 26.1.10909125 NDK-এর অন্য কোনও ভার্সন ইনস্টল বা কনফিগার করুন।
JDK 17 17 আরও জানতে, JDK ভার্সন সেট করা দেখুন।

Android Gradle প্লাগ-ইন 8.4-এর নতুন ফিচারগুলি নিচে উল্লেখ করা হল।

প্যাচ রিলিজ

Android Studio Jellyfish এবং Android Gradle plugin 8.4-এ প্রকাশিত প্যাচ রিলিজের তালিকা নিচে দেওয়া হল।

Android Studio Jellyfish | 2023.3.1 প্যাচ ২ এবং AGP 8.4.2 (জুন ২০২৪)

গুরুত্বপূর্ণ নিরাপত্তা আপডেট: Android Studio Iguana | 2023.2.1 ও এর পরবর্তী যেকোনও ভার্সনে উপলভ্য GitHub প্লাগ-ইনে একটি নিরাপত্তা সংক্রান্ত দুর্বলতা অননুমোদিত পার্টিকে অ্যাক্সেস টোকেন দেখাতে পারে।

সমাধান: Jetbrains IntelliJ প্ল্যাটফর্ম প্রোডাক্টে সমস্যার সমাধান করেছে, এবং সমাধানটি এখন Android Studio Jellyfish | 2023.3.1 Patch 2 (2023.3.1.20)-এ উপলভ্য।

আপনার কাছে আগে থেকেই স্থিতিশীল চ্যানেলে Android Studio বিল্ড থাকলে, আপনি সহায়তা > আপডেট চেক করুন (অথবা macOS-এ Android Studio > আপডেট চেক করুন) বিকল্পে ক্লিক করে আপডেট পেতে পারেন। অন্যথায়, লেটেস্ট স্টেবেল বিল্ড ডাউনলোড করুন।

এছাড়াও, আপনি যদি IDE-তে GitHub পুল অনুরোধ কার্যকারিতা অ্যাক্টিভভাবে ব্যবহার করে থাকেন, তাহলে আমরা দৃঢ়ভাবে পরামর্শ দিই যে আপনি প্লাগ-ইন দ্বারা ব্যবহৃত যেকোনও GitHub টোকেন প্রত্যাহার করুন। প্লাগ-ইন OAuth ইন্টিগ্রেশন বা ব্যক্তিগত অ্যাক্সেস টোকেন (PAT) ব্যবহার করতে পারে, তাই দু'টিই চেক করুন এবং প্রয়োজনমতো প্রত্যাহার করুন:

  • OAuth ইন্টিগ্রেশনের অ্যাক্সেস প্রত্যাহার করতে, অ্যাপ্লিকেশন > অনুমোদিত OAuth অ্যাপ বিকল্পে যান এবং JetBrains IDE ইন্টিগ্রেশন টোকেনের অ্যাক্সেস প্রত্যাহার করুন।
  • PAT-এর অ্যাক্সেস প্রত্যাহার করতে, ব্যক্তিগত অ্যাক্সেস টোকেন বিকল্পে যান এবং GitHub প্লাগ-ইনের জন্য ইস্যু করা টোকেনটি মুছে দিন। ডিফল্ট টোকেনের নাম হল IntelliJ IDEA GitHub ইন্টিগ্রেশন প্লাগ-ইন, কিন্তু আপনি হয়ত কাস্টম নাম ব্যবহার করছেন।

টোকেনের অ্যাক্সেস প্রত্যাহার করার পরে, আপনাকে আবার প্লাগ-ইন সেট-আপ করতে হবে Git অপারেশন সহ সব প্লাগ-ইন ফিচার আবার কাজ করানোর জন্য।

কোনও অসুবিধা হয়ে থাকলে আমরা দুঃখিত এবং কোড ও ডেটা সুরক্ষিত রাখতে সব ব্যবহারকারীকে অবিলম্বে আপডেট করার জন্য অনুরোধ করছি।

এই মাইনর আপডেটে এইসব সমস্যার সমাধান অন্তর্ভুক্ত রয়েছে।

Android Studio Jellyfish | 2023.3.1 প্যাচ ১ এবং AGP 8.4.1 (মে ২০২৪)

এই মাইনর আপডেটে এইসব সমস্যার সমাধান অন্তর্ভুক্ত রয়েছে।

লাইব্রেরি ক্লাস ছোট হয়ে গেছে

Android Gradle Plugin 8.4 থেকে শুরু করে, কোনও Android লাইব্রেরি প্রোজেক্ট মিনিফাই করা হলে, ইন্টার-প্রোজেক্ট প্রকাশনার জন্য সঙ্কুচিত প্রোগ্রাম ক্লাস প্রকাশ করা হবে। এর অর্থ হল, কোনও অ্যাপ যদি Android লাইব্রেরি সাবপ্রজেক্টের ছোট করা ভার্সনের উপর নির্ভর করে, তাহলে APK-তে ছোট করা Android লাইব্রেরি ক্লাস অন্তর্ভুক্ত থাকবে। APK-তে ক্লাস মিসিং থাকলে, আপনাকে হয়ত লাইব্রেরি কিপ করার নিয়ম অ্যাডজাস্ট করতে হবে।

আপনি যদি কোনও AAR তৈরি ও প্রকাশ করেন, তাহলে আপনার লাইব্রেরি নির্ভর করে এমন লোকাল jar, AAR-এ আনশ্রাঙ্ক অবস্থায় অন্তর্ভুক্ত করা হবে, যার অর্থ হল কোড শ্রিন্কার সেগুলির উপর রান করবে না।

আগের আচরণে ফিরে যেতে, gradle.properties ফাইলে android.disableMinifyLocalDependenciesForLibraries সেট করুন এবং কোনও বাগ সম্পর্কে অভিযোগ জানান। AGP-র ভবিষ্যতের ভার্সন এই ফ্ল্যাগ সরিয়ে দেবে।

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

Android Gradle প্লাগ-ইন 8.4.2

সমাধান করা সমস্যা
Android Gradle Plugin
AGP 8.4 ভার্সন CI-তে GMD ডাউনলোড করার প্রসেস ভেঙে দেয় বলে মনে হচ্ছে

Android Gradle প্লাগ-ইন 8.4.1

সমাধান করা সমস্যা
Android Gradle Plugin
JDK 21-এর মাধ্যমে Java 8-কে টার্গেট করার সুবিধা বন্ধ করে দেওয়া সংক্রান্ত সতর্কতা লুকানোর অনুমতি দিন
Dexer (D8)
java.lang.VerifyError: Verifier rejected class
অফস্কেশন করার পরে নতুন ভার্সন R8 ফর্ম্যাট কনভার্সন সংক্রান্ত সমস্যা
ইন্টারমিডিয়েট বিল্ডে স্টাবের জন্য সম্পূর্ণ গ্লোবাল সিন্থেটিক কন্টেন্ট নাও থাকতে পারে

Android Gradle প্লাগ-ইন 8.4.0

সমাধান করা সমস্যা
Android Gradle Plugin
JavaCompile-এর জন্য `--release` বিকল্প কেন ব্যবহার করা যাবে না সেই সংক্রান্ত সমস্যার মেসেজ উন্নত করা
@DoNotCacheByDefault ব্যবহার করে MergeSourceSetFolders-এর ক্যাশিং বন্ধ করা
AGP 8.2.0-এ JaCoCo ভার্সন সেট করা যাচ্ছে না
DynamicFeatureBuildType-এ isDebuggable নেই
ইন্টার-প্রোজেক্ট ব্যবহারের জন্য মিনিফাই করা লাইব্রেরি ক্লাস সঠিকভাবে প্রকাশ করা হয় না
জেনারেট করা ফাইল বাদ দিয়ে Variant#sources API প্রদান করা
AGP মডেলে java-platform প্রোজেক্টের উপর নির্ভরতা থাকে না
ExtractAarTransform, যে aars-এর কোনও classes.jar নেই সেগুলির জন্য রিপ্রোডিউস করা যায় না এমন classes.jar তৈরি করে
ComposeOptions থেকে sourceInformation কনফিগার করার অনুমতি দিন
ফিল্ড খুঁজে পাওয়া যাচ্ছে না: মেসেজ android.bundle.DeviceSpec-এ sdk_runtime
compileOnlyApi-এর জন্য সহায়তা
রিসোর্স প্রসেসিং বন্ধ করা থাকলে লাইব্রেরি মডিউলে R8 কাজ করে না
ট্রান্সফর্মেশনের সময় আর্টিফ্যাক্টের নাম পরিবর্তন করার সুবিধা যোগ করা
sourceSets.androidMain.resources-এর srcDir-এ টাস্ক আউটপুট যোগ করলে টাস্কের ডিপেন্ডেন্সি তৈরি হয় না
AndroidPluginVersion.toString()-এ শুরুতে ০ নেই
Artifacts.add(FileSystemLocation) আরও বেশি বিধিনিষেধমূলক হওয়া উচিত।
AGP 8.3.0-alpha11 রিলিজ APK তৈরি করে যা android.content.res.Resources$NotFoundException সহ স্টার্ট-আপে ক্র্যাশ করে
ডায়নামিক ফিচার ব্যবহার করে এমন প্রোজেক্টে Android Gradle Plugin 8.2.0 ইনস্টল টাস্ক সম্পূর্ণ করা যায়নি
AIDL কম্পাইল করার সময় IndexOutOfBoundsException হয়: ইন্ডেক্স ০, দৈর্ঘ্য ০-এর জন্য সাইজের বাইরে
MergeJavaResourcesTask ইনক্রিমেন্টাল ইনপুট ম্যানেজ করা সংক্রান্ত সমস্যা
AGP 8.3.0-alpha02, পরিচিত নিরাপত্তা সংক্রান্ত দুর্বলতা থাকা লাইব্রেরির উপর নির্ভর করে
বেছে নেওয়া অ্যাক্টিভিটি টেমপ্লেটের জন্য androidx.* ডিপেন্ডেন্সি সহ প্রোজেক্ট প্রয়োজন
AGP Upgrade Assistent errouneously removes consumerProguardFiles from module
AGP Upgrade Assistant লোড হতেই থাকে
SourceDirectories#static-এর GenerateBuildConfig টাস্কের উপর নির্ভর করা উচিত নয়
ট্রানজিটিভ ডিপেন্ডেন্সি থেকে ক্লাস সমাধান করতে না পারা
AGP 8.3, Task-এর জন্য zipApks-কে ভেঙে দেয়
Android APK-তে প্যাকেজ করা AndroidX ডেস্কটপ আর্টিফ্যাক্ট
Lint
Lint টেস্টিং ফ্রেমওয়ার্কের GradleModelMocker লাইব্রেরি ভার্সন সেট করার অনুমতি দেয় না
Lint K2 UAST: UCallableReferenceExpression ভুল qualifierType রিপোর্ট করে
ওভারলোড করা ফাংশনের সাথে useK2Uast=true ব্যবহার করলে ভুল পজিটিভ লিন্ট করা হয়
[BuildTool/Lint] ChecksSdkIntAtLeast কনস্ট্রাক্টর প্রপার্টি
Lint ইন্টিগ্রেশন
Lint KMP ডিপেন্ডেন্সি আলাদা করতে পারছে না