এই পৃষ্ঠায় অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) এর প্রিভিউ রিলিজের জন্য রিলিজ নোট রয়েছে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 হল AGP-এর একটি নতুন প্রধান রিলিজ, এবং এপিআই এবং আচরণের পরিবর্তন নিয়ে আসে।
Android Gradle প্লাগইন 9.0.0-alpha10-এ আপডেট করতে, Android Studio Otter-এ Android Gradle প্লাগইন আপগ্রেড সহকারী ব্যবহার করুন। 2025.2.1.
এজিপি আপগ্রেড সহকারী আপনার প্রজেক্ট আপগ্রেড করার সময় বিদ্যমান আচরণগুলি সংরক্ষণ করতে সাহায্য করে যখন উপযুক্ত হয়, আপনাকে AGP 9.0 ব্যবহার করার জন্য আপনার প্রোজেক্ট আপগ্রেড করার অনুমতি দেয়, এমনকি আপনি যদি AGP 9.0-এ সমস্ত নতুন ডিফল্ট গ্রহণ করতে প্রস্তুত না হন।
সামঞ্জস্য
Android Gradle প্লাগইন 9.0.0-alpha10 সমর্থন করে সর্বাধিক Android API স্তরটি হল API স্তর 36৷
Android Gradle প্লাগইন 9.0.0-alpha10 এর জন্য Gradle 9.0.0 প্রয়োজন।
ন্যূনতম সংস্করণ | ডিফল্ট সংস্করণ | নোট | |
---|---|---|---|
গ্রেডল | 9.0.0 | 9.0.0 | আরও জানতে, Gradle আপডেট করা দেখুন। |
SDK বিল্ড টুলস | 36.0.0 | 36.0.0 | SDK বিল্ড টুল ইনস্টল বা কনফিগার করুন । |
এনডিকে | N/A | ২৮.২.১৩৬৭৬৩৫৮ | NDK এর একটি ভিন্ন সংস্করণ ইনস্টল বা কনফিগার করুন । |
জেডিকে | 17 | 17 | আরও জানতে, JDK সংস্করণ সেট করা দেখুন। |
android
ডিএসএল ক্লাসগুলি এখন শুধুমাত্র নতুন পাবলিক ইন্টারফেস প্রয়োগ করে
গত বেশ কয়েক বছর ধরে, কোন APIগুলি সর্বজনীন তা আরও ভালভাবে নিয়ন্ত্রণ করার জন্য আমরা আমাদের DSL এবং API-এর জন্য নতুন ইন্টারফেস চালু করেছি। এজিপি সংস্করণ 7.x এবং 8.x এখনও পুরানো DSL প্রকারগুলি ব্যবহার করেছে (উদাহরণস্বরূপ BaseExtension
) যা ইন্টারফেসে কাজ অগ্রসর হওয়ার সাথে সাথে সামঞ্জস্য বজায় রাখার জন্য নতুন পাবলিক ইন্টারফেসগুলিকেও প্রয়োগ করেছে।
AGP 9.0 আমাদের নতুন DSL ইন্টারফেসগুলিকে একচেটিয়াভাবে ব্যবহার করে, এবং বাস্তবায়নগুলি সম্পূর্ণরূপে লুকানো নতুন প্রকারে পরিবর্তিত হয়েছে৷ এই পরিবর্তনগুলি পুরানো, অবচিত, বৈকল্পিক API-এর অ্যাক্সেসও সরিয়ে দেয়।
AGP 9.0-তে আপডেট করতে, আপনাকে নিম্নলিখিতগুলি করতে হতে পারে:
- আপনার প্রজেক্ট বিল্ট-ইন Kotlin-এর সাথে সামঞ্জস্যপূর্ণ কিনা তা নিশ্চিত করুন :
org.jetbrains.kotlin.android
প্লাগইন নতুন DSL-এর সাথে সামঞ্জস্যপূর্ণ নয়। KMP-এর জন্য Android Gradle Library Plugin- এ KMP প্রকল্পগুলি স্যুইচ করুন:
com.android.library
এবংcom.android.application
প্লাগইনগুলির মতো একই Gradle সাবপ্রজেক্টেorg.jetbrains.kotlin.multiplatform
প্লাগইন ব্যবহার করা নতুন DSL-এর সাথে সামঞ্জস্যপূর্ণ নয়।আপনার বিল্ড ফাইলগুলি আপডেট করুন: যদিও ইন্টারফেসের পরিবর্তনের অর্থ হল ডিএসএলকে যতটা সম্ভব একই রকম রাখা, কিছু ছোট পরিবর্তন হতে পারে।
নতুন ডিএসএল এবং এপিআই উল্লেখ করতে আপনার কাস্টম বিল্ড লজিক আপডেট করুন: অভ্যন্তরীণ ডিএসএল-এর যেকোনো রেফারেন্স পাবলিক ডিএসএল ইন্টারফেসের সাথে প্রতিস্থাপন করুন। বেশীরভাগ ক্ষেত্রেই এটি হবে এক থেকে এক প্রতিস্থাপন। নতুন
androidComponents
API দিয়েapplicationVariants
এবং অনুরূপ API-এর যেকোনো ব্যবহার প্রতিস্থাপন করুন। এটি আরও জটিল হতে পারে, কারণandroidComponents
API কে প্লাগইনগুলিকে দীর্ঘস্থায়ী রাখতে আরও স্থিতিশীল করার জন্য ডিজাইন করা হয়েছে৷ উদাহরণের জন্য আমাদের গ্রেডল রেসিপি পরীক্ষা করুন।তৃতীয় পক্ষের প্লাগইনগুলি আপডেট করুন: কিছু তৃতীয় পক্ষের প্লাগইনগুলি এখনও ইন্টারফেস বা APIগুলির উপর নির্ভর করতে পারে যা আর প্রকাশ করা হয় না৷ AGP 9.0 এর সাথে সামঞ্জস্যপূর্ণ প্লাগইনগুলির সংস্করণগুলিতে স্থানান্তর করুন৷
নতুন ডিএসএল ইন্টারফেসে স্যুইচ করার ফলে প্লাগইন এবং গ্রেডল বিল্ড স্ক্রিপ্টগুলি বিভিন্ন অবচয়িত API ব্যবহার করে বাধা দেয়, যার মধ্যে রয়েছে:
android ব্লকে অপ্রচলিত API | ফাংশন | প্রতিস্থাপন |
---|---|---|
applicationVariants ,libraryVariants ,testVariants , এবংunitTestVariants | এজিপিতে নতুন কার্যকারিতা যোগ করার জন্য প্লাগইনগুলির জন্য এক্সটেনশন পয়েন্ট। | এটিকে 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 | অ্যান্ড্রয়েড ডিভাইস এবং এমুলেটরগুলির বিরুদ্ধে পরীক্ষা চালানোর জন্য কাস্টম পরীক্ষার পরিবেশের নিবন্ধন। | Gradle-পরিচালিত ডিভাইসগুলিতে স্যুইচ করুন। |
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-এ আপগ্রেড করা শুরু করতে পারেন। নতুন ইন্টারফেস অনেক এজিপি সংস্করণের জন্য উপস্থিত রয়েছে এবং তাই আপনি নতুন এবং পুরানো মিশ্রণ করতে পারেন। এজিপি এপিআই রেফারেন্স ডক্স প্রতিটি এজিপি সংস্করণের জন্য এপিআই পৃষ্ঠ দেখায় এবং যখন প্রতিটি ক্লাস, পদ্ধতি এবং ক্ষেত্র যোগ করা হয়।
9.0 আলফা পর্বের সময় আমরা প্লাগইন লেখকদের সাথে যোগাযোগ করছি যাতে তারা নতুন মোডগুলির সাথে সম্পূর্ণরূপে সামঞ্জস্যপূর্ণ প্লাগইনগুলিকে খাপ খাইয়ে নিতে এবং প্রকাশ করতে সহায়তা করে এবং মাইগ্রেশনের মাধ্যমে আপনাকে গাইড করার জন্য Android স্টুডিওতে AGP আপগ্রেড সহকারীকে উন্নত করবে৷
আপনি যদি দেখেন যে নতুন DSL বা ভেরিয়েন্ট API-এর ক্ষমতা বা বৈশিষ্ট্য নেই, অনুগ্রহ করে যত তাড়াতাড়ি সম্ভব একটি সমস্যা ফাইল করুন।
অন্তর্নির্মিত কোটলিন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 বিল্ট-ইন সমর্থন কম্পাইলিং কোটলিন অন্তর্ভুক্ত করে, আলাদাভাবে প্রয়োগ করা কোটলিন প্লাগইন প্রতিস্থাপন করে। এটি AGP-এর সাথে একীকরণকে সহজ করে, অবহেলিত API-এর ব্যবহার এড়িয়ে যায় এবং কিছু ক্ষেত্রে কর্মক্ষমতা উন্নত করে।
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0-এর কোটলিন গ্রেডল প্লাগইন 2.2.10-এর উপর একটি রানটাইম নির্ভরতা রয়েছে, যা অন্তর্নির্মিত কোটলিন সমর্থনের জন্য প্রয়োজনীয় নূন্যতম সংস্করণ।
AGP 9.0-এ অন্তর্নির্মিত কোটলিন টেস্ট-ফিক্সচারের জন্য সম্পূর্ণ Android Studio IDE সমর্থন নিয়ে আসে। এটি চেষ্টা করতে, AGP 9.0.0-alpha07
বা তার পরে ব্যবহার করুন।
আপনি android.builtInKotlin=false
সেট করে বিল্ট-ইন কোটলিন থেকে অপ্ট আউট করতে পারেন।
আপনি যদি অন্তর্নির্মিত Kotlin থেকে অপ্ট আউট করে থাকেন এবং Kotlin Gradle প্লাগইনের একটি পুরানো সংস্করণ ব্যবহার করতে চান, তাহলে আপনি জোর করে ডাউনগ্রেড করতে পারেন:
buildscript {
dependencies {
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin") {
version { strictly("2.0.0") } // or another version that you want to use
}
}
}
আচরণ পরিবর্তন
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 এর নিম্নলিখিত নতুন আচরণ রয়েছে:
আচরণ | সুপারিশ |
---|---|
Android Gradle প্লাগইন 9.0 ডিফল্টরূপে NDK সংস্করণ r28c ব্যবহার করে। | আপনি যে NDK সংস্করণটি স্পষ্টভাবে ব্যবহার করতে চান তা উল্লেখ করার কথা বিবেচনা করুন। |
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 ডিফল্টভাবে লাইব্রেরির গ্রাহকদের একই বা উচ্চতর কম্পাইল SDK সংস্করণ ব্যবহার করতে হবে। | লাইব্রেরি ব্যবহার করার সময় একই বা উচ্চতর কম্পাইল SDK ব্যবহার করুন। যদি এটি সম্ভব না হয়, অথবা আপনি যে লাইব্রেরি প্রকাশ করেন তার ভোক্তাদের সুইচ করার জন্য আরও সময় দিতে চান, AarMetadata.minCompileSdk স্পষ্টভাবে সেট করুন। |
AGP 9.0-তে নিম্নলিখিত Gradle বৈশিষ্ট্যের ডিফল্ট আপডেট অন্তর্ভুক্ত রয়েছে। আপগ্রেড করার সময় এটি আপনাকে AGP 8.13 আচরণ সংরক্ষণ করার পছন্দ দেয়:
সম্পত্তি | ফাংশন | AGP 8.13 থেকে AGP 9.0 এ পরিবর্তন করুন | সুপারিশ |
---|---|---|---|
android.newDsl | android ব্লকের লিগ্যাসি বাস্তবায়ন প্রকাশ না করেই নতুন ডিএসএল ইন্টারফেস ব্যবহার করুন।এর মানে হল লিগ্যাসি ভেরিয়েন্ট API, যেমন android.applicationVariants আর অ্যাক্সেসযোগ্য নয়। | false → true | আপনি android.newDsl=false সেট করে অপ্ট আউট করতে পারেন।একবার সমস্ত প্লাগইন এবং বিল্ড লজিক আপনার প্রোজেক্ট ব্যবহার করে সামঞ্জস্যপূর্ণ হলে, অপ্ট আউট সরিয়ে দিন। |
android.builtInKotlin | org.jetbrains.kotlin.android প্লাগইন ছাড়াই সরাসরি Android Gradle প্লাগইনে Kotlin কোড কম্পাইল করার জন্য সমর্থন সক্ষম করা হয়েছে। | false → true | আপনি যদি পারেন org.jetbrains.kotlin.android প্লাগইন ব্যবহার সরিয়ে অন্তর্নির্মিত Kotlin গ্রহণ করুন। যদি না হয়, android.builtInKotlin=false সেট করে অপ্ট আউট করুন৷ |
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 সংস্করণটি min SDK সংস্করণে ডিফল্ট হবে৷ | false → true | অ্যাপ্লিকেশান এবং পরীক্ষার জন্য স্পষ্টভাবে লক্ষ্য SDK সংস্করণ নির্দিষ্ট করুন৷ |
android.onlyEnableUnitTestForTheTestedBuildType | শুধুমাত্র পরীক্ষিত বিল্ড টাইপের জন্য ইউনিট পরীক্ষার উপাদান তৈরি করে। ডিফল্ট প্রকল্পে এটি ডিবাগের জন্য একটি একক ইউনিট পরীক্ষায় পরিণত হয়, যেখানে পূর্ববর্তী আচরণটি ছিল ডিবাগ বা প্রকাশের জন্য ইউনিট পরীক্ষা চালানো। | false → true | আপনার প্রোজেক্টের ডিবাগ এবং রিলিজ উভয়ের জন্য চালানোর জন্য পরীক্ষার প্রয়োজন না হলে, কোন পরিবর্তনের প্রয়োজন নেই। |
android.proguard.failOnMissingFiles | এজিপি ডিএসএল-এ নির্দিষ্ট করা ফাইলগুলির কোনো একটি ডিস্কে বিদ্যমান না থাকলে ত্রুটি সহ বিল্ড ব্যর্থ হয়। এই পরিবর্তনের আগে ফাইলের নাম টাইপ করার ফলে ফাইলগুলি নীরবে উপেক্ষা করা হবে। | false → true | কোনো অবৈধ proguard ফাইল ঘোষণা সরান |
android.r8.optimizedResourceShrinking | ক্লাস এবং অ্যান্ড্রয়েড রিসোর্স একসাথে বিবেচনা করে R8 কম অ্যান্ড্রয়েড রিসোর্স রাখার অনুমতি দেয়। | false → true | আপনার প্রোজেক্টের রাখার নিয়ম ইতিমধ্যেই সম্পূর্ণ হলে, কোন পরিবর্তনের প্রয়োজন নেই। |
android.r8.strictFullModeForKeepRules | যখন একটি ক্লাস রাখা হয় তখন ডিফল্ট কনস্ট্রাক্টরকে অন্তর্নিহিতভাবে না রেখে R8-কে কম রাখার অনুমতি দেয়। অর্থাৎ, -keep class A আর বোঝায় না -keep class A { <init>(); } | false → true | আপনার প্রোজেক্টের রাখার নিয়ম ইতিমধ্যেই সম্পূর্ণ হলে, কোন পরিবর্তনের প্রয়োজন নেই।-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.txt-এর পরিবর্তে proguard-android.txt proguard-android-optimize.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 | প্রকাশিত লাইব্রেরিগুলিকে অসঙ্গত নিয়মগুলি সরিয়ে দেওয়া উচিত৷ অভ্যন্তরীণ লাইব্রেরিগুলির পরিবর্তে একটি অ্যাপ মডিউলের একটি প্রোগার্ডফাইলে যে কোনও বেমানান তবে প্রয়োজনীয় নিয়মগুলি সরানো উচিত। android.r8.globalOptionsInConsumerRules.disallowed=false সেট করে অপ্ট আউট করুন। একবার আপনার সমস্ত ভোক্তার কিপ ফাইলগুলি সামঞ্জস্যপূর্ণ হয়ে গেলে, অপ্ট আউট সরিয়ে দিন। |
অপসারিত বৈশিষ্ট্য
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 নিম্নলিখিত কার্যকারিতা সরিয়ে দেয়:
- এমবেডেড Wear OS অ্যাপ সমর্থন
AGP 9.0 Wear OS অ্যাপ এম্বেড করার জন্য সমর্থন সরিয়ে দেয়, যা আর প্লে-তে সমর্থিত নয়। এর মধ্যে রয়েছেwearApp
কনফিগারেশন এবংAndroidSourceSet.wearAppConfigurationName
DSL অপসারণ। Wear OS-এ কীভাবে আপনার অ্যাপ প্রকাশ করবেন তার জন্য Wear OS-এ বিতরণ দেখুন। -
androidDependencies
এবংsourceSets
রিপোর্ট টাস্ক
ডিএসএল পরিবর্তন করা হয়েছে
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0-তে নিম্নলিখিত ব্রেকিং ডিএসএল পরিবর্তন রয়েছে:
CommonExtension
এর প্যারামিটারাইজেশন সরানো হয়েছে।নিজের মধ্যে, এটি ভবিষ্যতের সোর্স-লেভেল ব্রেকিং পরিবর্তনগুলি এড়াতে সাহায্য করার জন্য শুধুমাত্র একটি সোর্স-লেভেল ব্রেকিং পরিবর্তন, কিন্তু এর মানে হল যে ব্লক পদ্ধতিগুলি
CommonExtension
থেকেApplicationExtension
,LibraryExension
,DynamicFeatureExtension
এবংTestExtension
এ যেতে হবে।আপনার প্রোজেক্টকে AGP 9.0 এ আপগ্রেড করার সময়, রিফ্যাক্টর গ্রেডল প্লাগইন কোড যা ঐ প্যারামিটার বা ব্লক পদ্ধতি ব্যবহার করে। উদাহরণস্বরূপ নিম্নলিখিত প্লাগইনটি টাইপ প্যারামিটার অপসারণের জন্য আপডেট করা হয়েছে এবং অপসারিত ব্লক পদ্ধতির উপর নির্ভর না করা হয়েছে:
এজিপি ৮.১৩
val commonExtension: CommonExtension<*, *, *, *, *, *> = extensions.getByType(CommonExtension::class) commonExtension.apply { defaultConfig { minSdk { version = release(28) } } }
এজিপি 9.0
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-এর জন্য উপযোগী ছিল, যা বাতিল করা হয়েছে।
সরানো APIs
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 সরিয়ে দেয়:
AndroidComponentsExtension.finalizeDSl
। এটিfinalizeDsl
দ্বারা প্রতিস্থাপিত হয়Component.transformClassesWith
। এটিInstrumentation.transformClassesWith
দ্বারা প্রতিস্থাপিত হয়Component.setAsmFramesComputationMode
। এটিInstrumentation.setAsmFramesComputationMode
দ্বারা প্রতিস্থাপিত হয়ComponentBuilder.enabled
এটিComponentBuilder.enable
দ্বারা প্রতিস্থাপিত হয়েছে।DependenciesInfoBuilder.includedInApk
।includeInApk
দ্বারা প্রতিস্থাপিত হয়DependenciesInfoBuilder.includedInBundle
.includeInBundle
দ্বারা প্রতিস্থাপিত হয়GeneratesApk.targetSdkVersion
।targetSdk
দ্বারা প্রতিস্থাপিত হয়Variant.minSdkVersion
।minSdk
দ্বারা প্রতিস্থাপিত হয়Variant.maxSdkVersion
।maxSdk
দ্বারা প্রতিস্থাপিত হয়Variant.targetSdkVersion
।targetSdk
দ্বারা প্রতিস্থাপিত হয়Variant.unitTest
, কারণ এটিcom.android.test
প্লাগইনের জন্য প্রযোজ্য নয়।unitTest
HasUnitTest
প্রসারিতVariantBuilder
সাবটাইপগুলিতে উপলব্ধ।VariantBuilder.targetSdk
এবংtargetSdkPreview
, কারণ এগুলো লাইব্রেরিতে অর্থবহ ছিল না। পরিবর্তেGeneratesApkBuilder.targetSdk
বাGeneratesApkBuilder.targetSdkPreview
ব্যবহার করুন।VariantBuilder.enableUnitTest
, কারণ এটিcom.android.test
প্লাগইনের জন্য প্রযোজ্য ছিল না।enableUnitTest
HasUnitTestBuilder
প্রসারিতVariantBuilder
সাবটাইপগুলিতে উপলব্ধ।VariantBuilder.unitTestEnabled
HasUnitTestBuilder
সম্প্রসারিতVariantBuilder
সাব-টাইপগুলিতে আরও ধারাবাহিকভাবে নামযুক্তenableUnitTest
পক্ষে সরানো হয়েছে।VariantOutput.enable
।enabled
দ্বারা প্রতিস্থাপিত হয়অবচিত এবং নিষ্ক্রিয়
FeaturePlugin
এবংFeatureExtension
।অবচয়িত এবং নিষ্ক্রিয়
BaseExtension.registerTransform
APIs, যা শুধুমাত্র সর্বশেষ AGP সংস্করণের সাথে কম্পাইল করার অনুমতি দেওয়ার জন্য রয়ে গেছে যখন AGP 4.2 বা তার কম সময়ে চলছে।
Gradle বৈশিষ্ট্যগুলি সরানো হয়েছে৷
নিম্নোক্ত Gradle বৈশিষ্ট্যগুলি প্রাথমিকভাবে বৈশ্বিকভাবে নিষ্ক্রিয় করার উপায় হিসাবে যুক্ত করা হয়েছিল যেগুলি ডিফল্টরূপে সক্রিয় করা হয়েছিল।
এই বৈশিষ্ট্যগুলি AGP 8.0 বা তার কম থেকে ডিফল্টরূপে নিষ্ক্রিয় করা হয়েছে৷ এই বৈশিষ্ট্যগুলিকে শুধুমাত্র সাব-প্রকল্পগুলিতে সক্ষম করুন যেগুলি আরও দক্ষ বিল্ডের জন্য ব্যবহার করে৷
সম্পত্তি | ফাংশন | প্রতিস্থাপন |
---|---|---|
android.defaults.buildfeatures.aidl | সমস্ত উপ-প্রকল্পে AIDL সংকলন সক্ষম করে | এই প্রকল্পগুলির গ্র্যাডল বিল্ড ফাইলগুলিতে নিম্নলিখিত বৈশিষ্ট্যগুলি সেট করে কেবলমাত্র উপপ্রকল্পগুলিতে AIDL সংকলন সক্ষম করুন যেখানে AIDL উত্স রয়েছে:android { buildFeatures { aidl = true } } |
android.defaults.buildfeatures.renderscript | সমস্ত সাবপ্রজেক্টে রেন্ডারস্ক্রিপ্ট সংকলন সক্ষম করে | রেন্ডারস্ক্রিপ্ট কম্পাইলেশন সক্ষম করুন শুধুমাত্র সাবপ্রজেক্টে যেখানে রেন্ডারস্ক্রিপ্ট সোর্স আছে সেই প্রোজেক্টের গ্রেডল বিল্ড ফাইলে নিম্নলিখিত প্রপার্টি সেট করে: android { buildFeatures { renderScript = true } } |
প্রয়োগকৃত Gradle বৈশিষ্ট্য
আপনি যদি নিম্নলিখিত Gradle বৈশিষ্ট্যগুলি সেট করেন তাহলে AGP 9.0 একটি ত্রুটি নিক্ষেপ করে৷
অ্যান্ড্রয়েড গ্রেডল প্লাগইন আপগ্রেড সহকারী এই বৈশিষ্ট্যগুলি ব্যবহার করে এমন প্রকল্পগুলিকে AGP 9.0-তে আপগ্রেড করবে না।
সম্পত্তি | ফাংশন |
---|---|
android.r8.integratedResourceShrinking | রিসোর্স সঙ্কুচিত করা এখন সর্বদা R8 এর অংশ হিসাবে চালিত হয়, পূর্ববর্তী বাস্তবায়ন সরানো হয়েছে। |
স্থির সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0.0-আলফা10
স্থায়ী সমস্যা | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||
লিন্ট |
|
Android Gradle প্লাগইন 9.0.0-alpha09
স্থায়ী সমস্যা | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|
Android Gradle প্লাগইন 9.0.0-alpha08
স্থায়ী সমস্যা | |
---|---|
AGP 9.0.0-alpha08-এ কোনো পাবলিক সমস্যা স্থির হিসাবে চিহ্নিত করা হয়নি |
Android Gradle প্লাগইন 9.0.0-alpha07
স্থায়ী সমস্যা | |||||||||
---|---|---|---|---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|
Android Gradle প্লাগইন 9.0.0-alpha06
স্থায়ী সমস্যা | |||||
---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| ||||
লিন্ট |
|
Android Gradle প্লাগইন 9.0.0-alpha05
স্থায়ী সমস্যা | |||||
---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| ||||
লিন্ট |
|
Android Gradle প্লাগইন 9.0.0-alpha04
স্থায়ী সমস্যা | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||
লিন্ট |
|
Android Gradle প্লাগইন 9.0.0-alpha03
স্থায়ী সমস্যা | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
| |||
লিন্ট |
|
Android Gradle প্লাগইন 9.0.0-alpha02
স্থায়ী সমস্যা | ||||
---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|
Android Gradle প্লাগইন 9.0.0-alpha01
স্থায়ী সমস্যা | |||||||
---|---|---|---|---|---|---|---|
অ্যান্ড্রয়েড গ্রেডল প্লাগইন |
|