এই পৃষ্ঠায় অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) এর প্রিভিউ রিলিজের জন্য রিলিজ নোট রয়েছে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.০ হল AGP-এর একটি নতুন প্রধান সংস্করণ, এবং এটি API এবং আচরণগত পরিবর্তন নিয়ে আসে।
Android Gradle প্লাগইন 9.0.0-alpha11 এ আপডেট করতে, Android Studio Otter 2 Feature Drop | 2025.2.2 এ Android Gradle প্লাগইন আপগ্রেড সহকারী ব্যবহার করুন।
AGP আপগ্রেড সহকারী আপনার প্রকল্প আপগ্রেড করার সময় বিদ্যমান আচরণগুলি সংরক্ষণ করতে সাহায্য করে, যখনই উপযুক্ত হবে, আপনাকে AGP 9.0 ব্যবহারের জন্য আপনার প্রকল্প আপগ্রেড করতে দেয়, এমনকি যদি আপনি AGP 9.0-এর সমস্ত নতুন ডিফল্ট গ্রহণ করতে প্রস্তুত না হন।
সামঞ্জস্য
Android Gradle প্লাগইন 9.0.0-alpha11 সর্বোচ্চ যে Android API লেভেলটি সমর্থন করে তা হল API লেভেল 36।
অ্যান্ড্রয়েড গ্র্যাডেল প্লাগইন 9.0.0-alpha11 এর জন্য গ্র্যাডেল 9.0.0 প্রয়োজন।
সর্বনিম্ন সংস্করণ | ডিফল্ট সংস্করণ | মন্তব্য | |
---|---|---|---|
গ্রেডল | ৯.০.০ | ৯.০.০ | আরও জানতে, Gradle আপডেট করা দেখুন। |
SDK বিল্ড টুলস | ৩৬.০.০ | ৩৬.০.০ | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
এনডিকে | নিষিদ্ধ | ২৮.২.১৩৬৭৬৩৫৮ | NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন । |
জেডিকে | ১৭ | ১৭ | আরও জানতে, JDK সংস্করণ সেটিং দেখুন। |
android
ডিএসএল ক্লাসগুলি এখন কেবল নতুন পাবলিক ইন্টারফেস বাস্তবায়ন করে
গত বেশ কয়েক বছর ধরে, কোন API গুলি পাবলিক হবে তা আরও ভালভাবে নিয়ন্ত্রণ করার জন্য আমরা আমাদের DSL এবং API-এর জন্য নতুন ইন্টারফেস চালু করেছি। AGP সংস্করণ 7.x এবং 8.x এখনও পুরানো DSL প্রকারগুলি ব্যবহার করে (উদাহরণস্বরূপ BaseExtension
) যা নতুন পাবলিক ইন্টারফেসগুলিও বাস্তবায়ন করেছে, যাতে ইন্টারফেসের কাজ এগিয়ে যাওয়ার সাথে সাথে সামঞ্জস্য বজায় রাখা যায়।
AGP 9.0 আমাদের নতুন DSL ইন্টারফেসগুলি একচেটিয়াভাবে ব্যবহার করে, এবং বাস্তবায়নগুলি সম্পূর্ণরূপে লুকানো নতুন ধরণের মধ্যে পরিবর্তিত হয়েছে। এটি পুরানো, অবচিত ভেরিয়েন্ট API-তে অ্যাক্সেসও সরিয়ে দেয়।
AGP 9.0 তে আপডেট করার জন্য, আপনাকে নিম্নলিখিতগুলি করতে হতে পারে:
- নিশ্চিত করুন যে আপনার প্রকল্পটি বিল্ট-ইন কোটলিনের সাথে সামঞ্জস্যপূর্ণ:
org.jetbrains.kotlin.android
প্লাগইনটি নতুন DSL এর সাথে সামঞ্জস্যপূর্ণ নয়। KMP-এর জন্য KMP প্রকল্পগুলিকে Android Gradle Library Plugin- এ স্যুইচ করুন:
com.android.library
এবংcom.android.application
প্লাগইনগুলির মতো একই Gradle সাবপ্রজেক্টেorg.jetbrains.kotlin.multiplatform
প্লাগইন ব্যবহার করা নতুন DSL-এর সাথে সামঞ্জস্যপূর্ণ নয়।আপনার বিল্ড ফাইলগুলি আপডেট করুন: ইন্টারফেস পরিবর্তনের উদ্দেশ্য DSL-কে যতটা সম্ভব একই রকম রাখা, তবে কিছু ছোটখাটো পরিবর্তন থাকতে পারে।
নতুন DSL এবং API রেফারেন্স করার জন্য আপনার কাস্টম বিল্ড লজিক আপডেট করুন: অভ্যন্তরীণ DSL-এর যেকোনো রেফারেন্সকে পাবলিক DSL ইন্টারফেস দিয়ে প্রতিস্থাপন করুন। বেশিরভাগ ক্ষেত্রে এটি এক-একটি প্রতিস্থাপন হবে।
applicationVariants
এবং অনুরূপ API-এর যেকোনো ব্যবহারকে নতুনandroidComponents
API দিয়ে প্রতিস্থাপন করুন। এটি আরও জটিল হতে পারে, কারণandroidComponents
API প্লাগইনগুলিকে দীর্ঘ সময় ধরে সামঞ্জস্যপূর্ণ রাখার জন্য আরও স্থিতিশীল হওয়ার জন্য ডিজাইন করা হয়েছে। উদাহরণের জন্য আমাদের Gradle রেসিপিগুলি দেখুন।তৃতীয় পক্ষের প্লাগইন আপডেট করুন: কিছু তৃতীয় পক্ষের প্লাগইন এখনও ইন্টারফেস বা API-এর উপর নির্ভর করতে পারে যা আর উন্মুক্ত নয়। AGP 9.0 এর সাথে সামঞ্জস্যপূর্ণ প্লাগইনগুলির সংস্করণগুলিতে স্থানান্তর করুন।
নতুন DSL ইন্টারফেসে স্যুইচ করার ফলে বিভিন্ন অবচিত API ব্যবহার করে প্লাগইন এবং গ্রেডল বিল্ড স্ক্রিপ্টগুলি আটকানো হয়, যার মধ্যে রয়েছে:
android ব্লকে অপ্রচলিত API | ফাংশন | প্রতিস্থাপন |
---|---|---|
applicationVariants ,libraryVariants ,testVariants , এবংunitTestVariants | AGP-তে নতুন কার্যকারিতা যোগ করার জন্য প্লাগইনগুলির জন্য এক্সটেনশন পয়েন্ট। | এটিকে androidComponents.onVariants API দিয়ে প্রতিস্থাপন করুন, উদাহরণস্বরূপ:androidComponents { onVariants() { variant -> variant.signingConfig .enableV1Signing.set(false) } } |
variantFilter | নির্বাচিত ভেরিয়েন্টগুলি নিষ্ক্রিয় করার অনুমতি দেয়। | এটিকে androidComponents.beforeVariants API দিয়ে প্রতিস্থাপন করুন, উদাহরণস্বরূপ: androidComponents { beforeVariants( selector() .withBuildType("debug") .withFlavor("color", "blue") ) { variantBuilder -> variantBuilder.enable = false } } |
deviceProvider এবংtestServer | অ্যান্ড্রয়েড ডিভাইস এবং এমুলেটরগুলির বিরুদ্ধে পরীক্ষা চালানোর জন্য কাস্টম পরীক্ষার পরিবেশের নিবন্ধন। | গ্রেডল-পরিচালিত ডিভাইসগুলিতে স্যুইচ করুন। |
sdkDirectory ,ndkDirectory ,bootClasspath ,adbExecutable , এবংadbExe | কাস্টম কাজের জন্য Android SDK-এর বিভিন্ন উপাদান ব্যবহার করা। | androidComponents.sdkComponents এ স্যুইচ করুন। |
registerArtifactType ,registerBuildTypeSourceProvider ,registerProductFlavorSourceProvider ,registerJavaArtifact ,registerMultiFlavorSourceProvider , এবংwrapJavaSourceSet | অপ্রচলিত কার্যকারিতা বেশিরভাগই অ্যান্ড্রয়েড স্টুডিওতে জেনারেট করা উৎসগুলি পরিচালনার সাথে সম্পর্কিত, যা AGP 7.2.0-এ কাজ করা বন্ধ করে দিয়েছে। | এই API গুলির জন্য সরাসরি কোনও প্রতিস্থাপন নেই। |
যদি আপনি AGP 9.0 তে আপডেট করেন এবং নিম্নলিখিত ত্রুটি বার্তাটি দেখেন, তাহলে এর অর্থ হল আপনার প্রকল্পটি এখনও কিছু পুরানো ধরণের উল্লেখ করছে:
java.lang.ClassCastException: class com.android.build.gradle.internal.dsl.ApplicationExtensionImpl$AgpDecorated_Decorated
cannot be cast to class com.android.build.gradle.BaseExtension
যদি আপনি অসঙ্গত থার্ড-পার্টি প্লাগইন দ্বারা ব্লক হয়ে যান, তাহলে আপনি অপ্ট আউট করতে পারেন এবং DSL এর জন্য পুরানো বাস্তবায়নগুলি, সেইসাথে পুরানো ভেরিয়েন্ট API ফিরিয়ে আনতে পারেন। এটি করার সময়, নতুন ইন্টারফেসগুলিও উপলব্ধ থাকে এবং আপনি এখনও আপনার নিজস্ব বিল্ড লজিক নতুন API তে আপডেট করতে পারেন। অপ্ট আউট করতে, আপনার gradle.properties
ফাইলে এই লাইনটি অন্তর্ভুক্ত করুন:
android.newDsl=false
AGP 9.0 তে আপগ্রেড করার আগে আপনি নতুন API গুলিতে আপগ্রেড শুরু করতে পারেন। অনেক AGP সংস্করণের জন্য নতুন ইন্টারফেসগুলি উপস্থিত রয়েছে এবং তাই আপনি নতুন এবং পুরাতন উভয়ের মিশ্রণ পেতে পারেন। AGP API রেফারেন্স ডক্স প্রতিটি AGP সংস্করণের API পৃষ্ঠ এবং প্রতিটি ক্লাস, পদ্ধতি এবং ক্ষেত্র কখন যুক্ত করা হয়েছিল তা দেখায়।
৯.০ আলফা পর্বের সময় আমরা প্লাগইন লেখকদের সাথে যোগাযোগ করছি যাতে তারা নতুন মোডের সাথে সম্পূর্ণ সামঞ্জস্যপূর্ণ প্লাগইনগুলিকে অভিযোজিত এবং প্রকাশ করতে সাহায্য করতে পারে, এবং মাইগ্রেশনের মাধ্যমে আপনাকে গাইড করার জন্য অ্যান্ড্রয়েড স্টুডিওতে AGP আপগ্রেড সহকারীকে উন্নত করবে।
যদি আপনি দেখেন যে নতুন DSL বা Variant API-তে কোনও ক্ষমতা বা বৈশিষ্ট্য নেই, তাহলে যত তাড়াতাড়ি সম্ভব একটি সমস্যা দায়ের করুন।
বিল্ট-ইন কোটলিন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 বিল্ট-ইন কোটলিন সাপোর্ট চালু করে এবং এটি ডিফল্টভাবে সক্ষম করে। এর অর্থ হল কোটলিন সোর্স ফাইলগুলি কম্পাইল করার জন্য আপনাকে আর আপনার বিল্ড ফাইলগুলিতে org.jetbrains.kotlin.android
(অথবা kotlin-android
) প্লাগইন প্রয়োগ করতে হবে না। এটি AGP-এর সাথে কোটলিন ইন্টিগ্রেশনকে সহজ করে, অবচিত API-এর ব্যবহার এড়ায় এবং কিছু ক্ষেত্রে কর্মক্ষমতা উন্নত করে।
অতএব, যখন আপনি আপনার প্রকল্পটি AGP 9.0 তে আপগ্রেড করবেন, তখন আপনাকে বিল্ট-ইন কোটলিনেও মাইগ্রেট করতে হবে অথবা অপ্ট আউট করতে হবে ।
কোটলিন গ্র্যাডেল প্লাগইন 2.2.10 এর উপর রানটাইম নির্ভরতা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.০-এর রানটাইম নির্ভরতা কোটলিন গ্রেডল প্লাগইন (কেজিপি) ২.২.১০-এর উপর, যা বিল্ট-ইন কোটলিন সাপোর্টের জন্য প্রয়োজনীয় সর্বনিম্ন সংস্করণ।
এর মানে হল আপনি যদি বিল্ট-ইন কোটলিন বেছে নেন এবং 2.2.10 এর চেয়ে কম KGP সংস্করণ ব্যবহার করেন, তাহলে Gradle স্বয়ংক্রিয়ভাবে KGP সংস্করণটিকে 2.2.10 এ আপগ্রেড করবে।
একইভাবে, যদি আপনি 2.2.10-2.0.2 এর চেয়ে কম KSP সংস্করণ ব্যবহার করেন, তাহলে AGP KGP সংস্করণের সাথে মিল রেখে KSP সংস্করণটিকে 2.2.10-2.0.2 এ আপগ্রেড করবে।
অতএব, যদি আপনি বিল্ট-ইন কোটলিন ব্যবহার বন্ধ করে দেন এবং KGP অথবা KSP এর পুরোনো সংস্করণ ব্যবহার করতে চান, তাহলে আপনার টপ-লেভেল বিল্ড ফাইলে নিম্নলিখিতগুলি যোগ করতে হবে:
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("KGP_VERSION") }
}
classpath("com.google.devtoolsksp:symbol-processing-gradle-plugin") {
version { strictly("KSP_VERSION") }
}
}
}
পরীক্ষার ফিক্সচারের জন্য IDE সমর্থন
AGP 9.0 পরীক্ষার ফিক্সচারের জন্য সম্পূর্ণ Android Studio IDE সমর্থন প্রদান করে। এই সমর্থন পেতে, AGP 9.0.0-alpha07 বা উচ্চতর ব্যবহার করুন।
আচরণগত পরিবর্তন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0-এ নিম্নলিখিত নতুন আচরণ রয়েছে:
আচরণ | সুপারিশ |
---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.০ ডিফল্টরূপে NDK সংস্করণ r28c ব্যবহার করে। | আপনি যে NDK সংস্করণটি স্পষ্টভাবে ব্যবহার করতে চান তা নির্দিষ্ট করার কথা বিবেচনা করুন। |
অ্যান্ড্রয়েড গ্রেডল প্লাগইন ৯.০ ডিফল্টরূপে লাইব্রেরির গ্রাহকদের একই বা উচ্চতর কম্পাইল SDK সংস্করণ ব্যবহার করতে হবে। | লাইব্রেরি ব্যবহার করার সময় একই বা উচ্চতর কম্পাইল SDK ব্যবহার করুন। যদি এটি সম্ভব না হয়, অথবা আপনি যে লাইব্রেরি প্রকাশ করেন তার গ্রাহকদের স্যুইচ করার জন্য আরও সময় দিতে চান, তাহলে AarMetadata.minCompileSdk স্পষ্টভাবে সেট করুন। |
AGP 9.0-এ নিম্নলিখিত Gradle প্রোপার্টিগুলির ডিফল্ট আপডেট অন্তর্ভুক্ত রয়েছে। এটি আপনাকে আপগ্রেড করার সময় AGP 8.13 আচরণ সংরক্ষণ করার বিকল্প দেয়:
সম্পত্তি | ফাংশন | AGP 8.13 থেকে AGP 9.0 তে পরিবর্তন করুন | সুপারিশ |
---|---|---|---|
android.newDsl | android ব্লকের লিগ্যাসি বাস্তবায়নগুলি প্রকাশ না করেই নতুন DSL ইন্টারফেসগুলি ব্যবহার করুন।এর অর্থ হল, android.applicationVariants এর মতো লিগ্যাসি ভেরিয়েন্ট API আর অ্যাক্সেসযোগ্য নয়। | false → true | আপনি android.newDsl=false সেট করে অপ্ট আউট করতে পারেন।আপনার প্রকল্পের ব্যবহৃত সমস্ত প্লাগইন এবং বিল্ড লজিক সামঞ্জস্যপূর্ণ হয়ে গেলে, অপ্ট আউটটি সরিয়ে ফেলুন। |
android.builtInKotlin | বিল্ট-ইন কোটলিন সক্ষম করে | false → true | সম্ভব হলে বিল্ট-ইন কোটলিনে মাইগ্রেট করুন অথবা অপ্ট আউট করুন । |
android.uniquePackageNames | প্রতিটি লাইব্রেরির একটি স্বতন্ত্র প্যাকেজ নাম থাকা বাধ্য করে। | false → true | আপনার প্রকল্পের মধ্যে সমস্ত লাইব্রেরির জন্য অনন্য প্যাকেজ নাম নির্দিষ্ট করুন। যদি তা সম্ভব না হয়, তাহলে আপনি মাইগ্রেট করার সময় এই পতাকাটি অক্ষম করতে পারেন। |
android.dependency.useConstraints | কনফিগারেশনের মধ্যে নির্ভরতা সীমাবদ্ধতার ব্যবহার নিয়ন্ত্রণ করে। AGP 9.0-এর ডিফল্ট মান false যা শুধুমাত্র অ্যাপ্লিকেশন ডিভাইস পরীক্ষায় (AndroidTest) সীমাবদ্ধতা ব্যবহার করে। এটিকে true হিসেবে সেট করলে 8.13 আচরণে ফিরে যাবে। | true → false | আপনার প্রয়োজন না হলে সব জায়গায় নির্ভরতা সীমাবদ্ধতা ব্যবহার করবেন না। এই ফ্ল্যাগের নতুন ডিফল্ট গ্রহণ করলে প্রকল্প আমদানি প্রক্রিয়ায় অপ্টিমাইজেশনও সক্ষম হয় যা অনেক অ্যান্ড্রয়েড লাইব্রেরি সাবপ্রজেক্ট সহ বিল্ডের জন্য আমদানির সময় কমিয়ে দেবে। |
aandroid.enableAppCompileTimeRClass | অ্যাপ্লিকেশনগুলিতে কোড কম্পাইল করুন একটি নন-ফাইনাল R ক্লাসের বিপরীতে, অ্যাপ্লিকেশন কম্পাইলেশনকে লাইব্রেরি কম্পাইলেশনের সাথে সামঞ্জস্যপূর্ণ করে। এটি ক্রমবর্ধমানতা উন্নত করে এবং সম্পদ প্রক্রিয়াকরণ প্রবাহে ভবিষ্যতের কর্মক্ষমতা অপ্টিমাইজেশনের পথ প্রশস্ত করে। | false → true | অনেক প্রকল্পই নতুন আচরণ গ্রহণ করতে পারে, কোনও উৎস পরিবর্তন ছাড়াই। যদি R ক্লাস ফিল্ডগুলি এমন কোথাও ব্যবহার করা হয় যেখানে একটি ধ্রুবক প্রয়োজন হয়, যেমন সুইচ কেস, তাহলে চেইনড ইফ স্টেটমেন্ট ব্যবহার করার জন্য রিফ্যাক্টর ব্যবহার করা হয়। |
android.sdk.defaultTargetSdkToCompileSdkIfUnset | অ্যাপ এবং পরীক্ষায় লক্ষ্য SDK সংস্করণের জন্য ডিফল্ট মান হিসেবে কম্পাইল SDK সংস্করণ ব্যবহার করে। এই পরিবর্তনের আগে, লক্ষ্য SDK সংস্করণটি ডিফল্টভাবে ন্যূনতম SDK সংস্করণে ব্যবহৃত হত। | false → true | অ্যাপ এবং পরীক্ষার জন্য স্পষ্টভাবে লক্ষ্য SDK সংস্করণটি নির্দিষ্ট করুন। |
android.onlyEnableUnitTestForTheTestedBuildType | শুধুমাত্র পরীক্ষিত বিল্ড ধরণের জন্য ইউনিট পরীক্ষার উপাদান তৈরি করে। ডিফল্ট প্রজেক্টে এর ফলে ডিবাগের জন্য একটি একক ইউনিট পরীক্ষা করা হয়, যেখানে পূর্ববর্তী আচরণে ডিবাগ বা রিলিজের জন্য ইউনিট পরীক্ষা চালানো হত। | false → true | যদি আপনার প্রকল্পের ডিবাগ এবং রিলিজ উভয়ের জন্য পরীক্ষা চালানোর প্রয়োজন না হয়, তাহলে কোনও পরিবর্তনের প্রয়োজন নেই। |
android.proguard.failOnMissingFiles | AGP DSL-এ উল্লেখিত Keep ফাইলগুলির কোনওটি ডিস্কে না থাকলে বিল্ডটি একটি ত্রুটির সাথে ব্যর্থ হয়। এই পরিবর্তনের আগে ফাইলের নামের টাইপোগ্রাফির ফলে ফাইলগুলি নীরবে উপেক্ষা করা হত। | false → true | যেকোনো অবৈধ প্রোগার্ড ফাইল ঘোষণা মুছে ফেলুন |
android.r8.optimizedResourceShrinking | ক্লাস এবং অ্যান্ড্রয়েড রিসোর্স একসাথে বিবেচনা করে R8 কে কম অ্যান্ড্রয়েড রিসোর্স রাখার অনুমতি দেয়। | false → true | যদি আপনার প্রকল্পের রাখার নিয়মগুলি ইতিমধ্যেই সম্পূর্ণ হয়ে থাকে, তাহলে কোনও পরিবর্তনের প্রয়োজন নেই। |
android.r8.strictFullModeForKeepRules | R8 কে একটি ক্লাস রাখার সময় ডিফল্ট কনস্ট্রাক্টরকে পরোক্ষভাবে না রেখে কম রাখার অনুমতি দেয়। অর্থাৎ, -keep class A আর -keep class A { <init>(); } | false → true | যদি আপনার প্রকল্পের রাখার নিয়মগুলি ইতিমধ্যেই সম্পূর্ণ হয়ে থাকে, তাহলে কোনও পরিবর্তনের প্রয়োজন নেই। আপনার প্রোজেক্টের keep নিয়মে -keep class A কে -keep class A { <init>(); } দিয়ে প্রতিস্থাপন করুন, যে কোনও ক্ষেত্রে যেখানে আপনার ডিফল্ট কনস্ট্রাক্টর রাখতে হবে। |
android.defaults.buildfeatures.resvalues | সকল উপপ্রকল্পে resValues সক্ষম করে | true → false | শুধুমাত্র যেসব সাবপ্রকল্পের প্রয়োজন, সেইসব প্রকল্পের গ্র্যাডেল বিল্ড ফাইলে নিম্নলিখিতটি সেট করে resValues সক্ষম করুন: android { buildFeatures { resValues = true } } |
android.defaults.buildfeatures.shaders | সকল সাবপ্রজেক্টে শেডার সংকলন সক্ষম করে | true → false | শুধুমাত্র সেই সাবপ্রজেক্টগুলিতে শেডার কম্পাইলেশন সক্ষম করুন যেখানে কম্পাইল করার জন্য শেডার রয়েছে, সেই প্রোজেক্টগুলির গ্রেডল বিল্ড ফাইলগুলিতে নিম্নলিখিতটি সেট করে: android { buildFeatures { shaders = true } } |
android.r8.proguardAndroidTxt.disallowed | AGP 9.0 তে, getDefaultProguardFile() শুধুমাত্র proguard-android-optimize.txt সাপোর্ট করবে, proguard-android.txt এর পরিবর্তে। এটি dontoptimize ফ্ল্যাগের দুর্ঘটনাজনিত ব্যবহার প্রতিরোধ করার জন্য, যা proguard-android.txt তে অন্তর্ভুক্ত। | false → true | অপ্টিমাইজেশন এড়াতে চাইলে, আপনি proguard-android-optimize.txt ব্যবহার করার পাশাপাশি একটি কাস্টম proguardFile-এ dontoptimize স্পষ্টভাবে উল্লেখ করতে পারেন। সম্ভব হলে এই ফাইল থেকে dontoptimize ফ্ল্যাগটি সরিয়ে ফেলতে ভুলবেন না, কারণ এটি R8 অপ্টিমাইজেশনের সুবিধা হ্রাস করে। যদি না হয়, android.r8.globalOptionsInConsumerRules.disallowed=false সেট করে অপ্ট আউট করুন। |
android.r8.globalOptionsInConsumerRules.disallowed | AGP 9.0 থেকে, যদি কনজিউমার কিপ ফাইলগুলিতে সমস্যাযুক্ত প্রোগার্ড কনফিগারেশন থাকে তবে অ্যান্ড্রয়েড লাইব্রেরি এবং ফিচার মডিউল প্রকাশনা ব্যর্থ হবে। কনজিউমার কিপ ফাইলগুলিতে dontoptimize বা dontobfuscate এর মতো গ্লোবাল বিকল্প রয়েছে সেগুলি কেবল অ্যাপ্লিকেশন মডিউলগুলিতে ব্যবহার করা উচিত এবং লাইব্রেরি ব্যবহারকারীদের জন্য অপ্টিমাইজেশন সুবিধা হ্রাস করতে পারে। অ্যান্ড্রয়েড অ্যাপ মডিউল সংকলন যদি প্রাক-সংকলিত নির্ভরতা (JAR বা AAR) এ এমবেড করা থাকে তবে নীরবে এই জাতীয় কোনও গ্লোবাল বিকল্প উপেক্ষা করবে। আপনি কখন এটি ঘটে তা দেখতে পারেন configuration.txt (সাধারণত <app_module>/build/outputs/mapping/<build_variant>/configuration.txt এর মতো পাথে) এই ধরনের মন্তব্যের জন্য চেক করে: # REMOVED CONSUMER RULE: dontoptimize | false → true | প্রকাশিত লাইব্রেরিগুলিতে যেকোনো অসঙ্গতিপূর্ণ নিয়ম সরিয়ে ফেলা উচিত। অভ্যন্তরীণ লাইব্রেরিগুলিতে যেকোনো অসঙ্গতিপূর্ণ কিন্তু প্রয়োজনীয় নিয়ম একটি অ্যাপ মডিউলের একটি proguardFile-এ স্থানান্তর করা উচিত। android.r8.globalOptionsInConsumerRules.disallowed=false সেট করে অপ্ট আউট করুন। আপনার সমস্ত কনজিউমার কিপ ফাইল সামঞ্জস্যপূর্ণ হয়ে গেলে, অপ্ট আউটটি সরিয়ে ফেলুন। |
সরানো বৈশিষ্ট্যগুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 নিম্নলিখিত কার্যকারিতা সরিয়ে দেয়:
- এমবেডেড ওয়্যার ওএস অ্যাপ সাপোর্ট
AGP 9.0 Wear OS অ্যাপ এম্বেড করার জন্য সমর্থন সরিয়ে দেয়, যা আর Play তে সমর্থিত নয়। এর মধ্যেwearApp
কনফিগারেশন এবংAndroidSourceSet.wearAppConfigurationName
DSL অপসারণ অন্তর্ভুক্ত। Wear OS তে আপনার অ্যাপটি কীভাবে প্রকাশ করবেন তা জানতে Distribute to Wear OS দেখুন। -
androidDependencies
এবংsourceSets
রিপোর্ট টাস্ক
পরিবর্তিত DSL
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0-এ নিম্নলিখিত ব্রেকিং DSL পরিবর্তনগুলি রয়েছে:
CommonExtension
এর প্যারামিটারাইজেশন সরানো হয়েছে।নিজেই, এটি শুধুমাত্র একটি সোর্স-লেভেল ব্রেকিং পরিবর্তন যা ভবিষ্যতে সোর্স-লেভেল ব্রেকিং পরিবর্তন এড়াতে সাহায্য করবে, তবে এর অর্থ হল ব্লক পদ্ধতিগুলিকে
CommonExtension
থেকেApplicationExtension
,LibraryExension
,DynamicFeatureExtension
এবংTestExtension
এ স্থানান্তর করতে হবে।আপনার প্রকল্পটি AGP 9.0 তে আপগ্রেড করার সময়, Gradle প্লাগইন কোডটি রিফ্যাক্টর করুন যা ঐ প্যারামিটারগুলি বা ব্লক পদ্ধতিগুলি ব্যবহার করে। উদাহরণস্বরূপ, নিম্নলিখিত প্লাগইনটি টাইপ প্যারামিটারটি অপসারণ করার জন্য আপডেট করা হয়েছে এবং সরানো ব্লক পদ্ধতিগুলির উপর নির্ভর করে না:
এজিপি ৮.১৩
val commonExtension: CommonExtension<*, *, *, *, *, *> = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig { minSdk { version = release(28) } } }
এজিপি ৯.০
val commonExtension: CommonExtension = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig.apply { minSdk { version = release(28) } } }
যেসব প্লাগইন AGP ভার্সনের একটি পরিসরকে লক্ষ্য করে, তাদের জন্য সরাসরি গেটার ব্যবহার করা 9.0 এর চেয়ে কম AGP ভার্সনের সাথে বাইনারি সামঞ্জস্যপূর্ণ।
ডিএসএল সরানো হয়েছে
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 অপসারণ করে:
AndroidSourceSet.jni
, কারণ এটি কার্যকরী ছিল না।AndroidSourceSet.wearAppConfigurationName
, কারণ এটি সরানো এমবেডেড Wear OS অ্যাপ সাপোর্টের সাথে সম্পর্কিত।BuildType.isRenderscriptDebuggable
, কারণ এটি কার্যকরী ছিল না।DependencyVariantSelection
। এটিDependencySelection
দ্বারা প্রতিস্থাপিত হয়, যাkotlin.android.localDependencySelection
হিসাবে প্রকাশিত হয়।Installation.installOptions(String)
। এটিInstallation.installOptions
এর পরিবর্তনযোগ্য বৈশিষ্ট্য দ্বারা প্রতিস্থাপিত হয়।পরীক্ষামূলক, কিন্তু কখনও স্থিতিশীল হয়নি
PostProcessing
ব্লক।ProductFlavor.setDimension
, যাdimension
প্রোপার্টি দ্বারা প্রতিস্থাপিত হয়LanguageSplitOptions
, যা শুধুমাত্র Google Play Instant এর জন্য কার্যকর ছিল, যা বন্ধ করা হয়েছে।
সরানো API গুলি
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 অপসারণ করে:
AndroidComponentsExtension.finalizeDSl
। এটিfinalizeDsl
দ্বারা প্রতিস্থাপিত হয়।Component.transformClassesWith
। এটিInstrumentation.transformClassesWith
দ্বারা প্রতিস্থাপিত হয়।Component.setAsmFramesComputationMode
। এটিInstrumentation.setAsmFramesComputationMode
দ্বারা প্রতিস্থাপিত হয়।ComponentBuilder.enabled
। এটিComponentBuilder.enable
দ্বারা প্রতিস্থাপিত হয়।DependenciesInfoBuilder.includedInApk
। Is কেincludeInApk
দ্বারা প্রতিস্থাপিত করা হয়েছে।DependenciesInfoBuilder.includedInBundle
। Is কেincludeInBundle
দ্বারা প্রতিস্থাপিত করা হয়।GeneratesApk.targetSdkVersion
। IstargetSdk
দ্বারা প্রতিস্থাপিত হয়Variant.minSdkVersion
. IsminSdk
দ্বারা প্রতিস্থাপিত হয়Variant.maxSdkVersion
. Is কেmaxSdk
দ্বারা প্রতিস্থাপিত করা হয়েছেVariant.targetSdkVersion
. IstargetSdk
দ্বারা প্রতিস্থাপিত হয়Variant.unitTest
, কারণ এটিcom.android.test
প্লাগইনের ক্ষেত্রে প্রযোজ্য ছিল না।unitTest
HasUnitTest
সম্প্রসারিতVariantBuilder
সাবটাইপে উপলব্ধ।VariantBuilder.targetSdk
এবংtargetSdkPreview
, কারণ এগুলি লাইব্রেরিতে অর্থবহ ছিল না। পরিবর্তেGeneratesApkBuilder.targetSdk
অথবাGeneratesApkBuilder.targetSdkPreview
ব্যবহার করুন।VariantBuilder.enableUnitTest
, কারণ এটিcom.android.test
প্লাগইনের ক্ষেত্রে প্রযোজ্য ছিল না।enableUnitTest
HasUnitTestBuilder
সম্প্রসারিতVariantBuilder
সাবটাইপে উপলব্ধ।HasUnitTestBuilder
সম্প্রসারিতVariantBuilder
সাবটাইপগুলিতে আরও ধারাবাহিকভাবে নামকরণ করাenableUnitTest
এর পক্ষেVariantBuilder.unitTestEnabled
সরানো হয়েছে।VariantOutput.enable
. এটিenabled
দ্বারা প্রতিস্থাপিত হয়অবচিত এবং নিষ্ক্রিয়
FeaturePlugin
এবংFeatureExtension
।অবচিত এবং নিষ্ক্রিয়
BaseExtension.registerTransform
API গুলি, যা কেবলমাত্র AGP 4.2 বা তার নিচের সংস্করণে চলমান লক্ষ্যবস্তুতে সর্বশেষ AGP সংস্করণের বিরুদ্ধে কম্পাইল করার অনুমতি দেয়।
Gradle বৈশিষ্ট্যগুলি সরানো হয়েছে
ডিফল্টরূপে সক্রিয় থাকা বৈশিষ্ট্যগুলিকে বিশ্বব্যাপী অক্ষম করার উপায় হিসেবে প্রাথমিকভাবে নিম্নলিখিত গ্রেডল বৈশিষ্ট্যগুলি যুক্ত করা হয়েছিল।
এই বৈশিষ্ট্যগুলি AGP 8.0 বা তার নিচের সংস্করণ থেকে ডিফল্টরূপে নিষ্ক্রিয় করা হয়েছে। কেবলমাত্র সেই সাব-প্রকল্পগুলিতে এই বৈশিষ্ট্যগুলি সক্ষম করুন যা আরও দক্ষ বিল্ডের জন্য এগুলি ব্যবহার করে।
সম্পত্তি | ফাংশন | প্রতিস্থাপন |
---|---|---|
android.defaults.buildfeatures.aidl | সকল উপ-প্রকল্পে AIDL সংকলন সক্ষম করে | শুধুমাত্র যেসব সাবপ্রকল্পে AIDL সোর্স আছে, সেখানেই AIDL কম্পাইলেশন সক্ষম করুন, সেইসব প্রকল্পের Gradle বিল্ড ফাইলে নিম্নলিখিত বৈশিষ্ট্যগুলি সেট করে:android { buildFeatures { aidl = true } } |
android.defaults.buildfeatures.renderscript | সকল সাবপ্রজেক্টে রেন্ডারস্ক্রিপ্ট সংকলন সক্ষম করে | শুধুমাত্র সেই সাবপ্রজেক্টগুলিতে যেখানে রেন্ডারস্ক্রিপ্ট সোর্স আছে সেখানে রেন্ডারস্ক্রিপ্ট কম্পাইলেশন সক্ষম করুন, সেই প্রোজেক্টগুলির গ্র্যাডেল বিল্ড ফাইলগুলিতে নিম্নলিখিত বৈশিষ্ট্য সেট করে: android { buildFeatures { renderScript = true } } |
জোরপূর্বক গ্রেডল বৈশিষ্ট্য
নিম্নলিখিত Gradle বৈশিষ্ট্যগুলি সেট করলে AGP 9.0 একটি ত্রুটি ঠেলে দেয়।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন আপগ্রেড অ্যাসিস্ট্যান্ট এই বৈশিষ্ট্যগুলি ব্যবহার করে এমন প্রকল্পগুলিকে AGP 9.0 তে আপগ্রেড করবে না।
সম্পত্তি | ফাংশন |
---|---|
android.r8.integratedResourceShrinking | রিসোর্স সঙ্কুচিতকরণ এখন সর্বদা R8 এর অংশ হিসাবে পরিচালিত হয়, পূর্ববর্তী বাস্তবায়নটি সরানো হয়েছে। |
সমস্যা সমাধান করা হয়েছে
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha10
সমস্যা সমাধান করা হয়েছে | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||
লিন্ট |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha09
সমস্যা সমাধান করা হয়েছে | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha08
সমস্যা সমাধান করা হয়েছে | |
---|---|
AGP 9.0.0-alpha08-এ কোনও পাবলিক সমস্যা সমাধান করা হয়নি। |
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha07
সমস্যা সমাধান করা হয়েছে | |||||||||
---|---|---|---|---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha06
সমস্যা সমাধান করা হয়েছে | |||||
---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| ||||
লিন্ট |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha05
সমস্যা সমাধান করা হয়েছে | |||||
---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| ||||
লিন্ট |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha04
সমস্যা সমাধান করা হয়েছে | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||
লিন্ট |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha03
সমস্যা সমাধান করা হয়েছে | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||
লিন্ট |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha02
সমস্যা সমাধান করা হয়েছে | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-alpha01
সমস্যা সমাধান করা হয়েছে | |||||||
---|---|---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|