অ্যান্ড্রয়েড গ্রেডল প্লাগইন পূর্বরূপের জন্য নোট রিলিজ করুন

এই পৃষ্ঠায় অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) এর প্রিভিউ রিলিজের জন্য রিলিজ নোট রয়েছে।

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 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)
    }
}
পূর্ববর্তী সমস্ত API-এর জন্য সরাসরি প্রতিস্থাপন নাও হতে পারে। নতুন ভেরিয়েন্ট এপিআই দ্বারা কভার না করা একটি ব্যবহারের ক্ষেত্রে থাকলে একটি সমস্যা ফাইল করুন
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 আর অ্যাক্সেসযোগ্য নয়।
falsetrue আপনি android.newDsl=false সেট করে অপ্ট আউট করতে পারেন।
একবার সমস্ত প্লাগইন এবং বিল্ড লজিক আপনার প্রোজেক্ট ব্যবহার করে সামঞ্জস্যপূর্ণ হলে, অপ্ট আউট সরিয়ে দিন।
android.builtInKotlin org.jetbrains.kotlin.android প্লাগইন ছাড়াই সরাসরি Android Gradle প্লাগইনে Kotlin কোড কম্পাইল করার জন্য সমর্থন সক্ষম করা হয়েছে। falsetrue আপনি যদি পারেন org.jetbrains.kotlin.android প্লাগইন ব্যবহার সরিয়ে অন্তর্নির্মিত Kotlin গ্রহণ করুন। যদি না হয়, android.builtInKotlin=false সেট করে অপ্ট আউট করুন৷
android.uniquePackageNames প্রতিটি লাইব্রেরির একটি স্বতন্ত্র প্যাকেজ নাম আছে তা প্রয়োগ করে। falsetrue আপনার প্রকল্পের মধ্যে সমস্ত লাইব্রেরির জন্য অনন্য প্যাকেজ নাম নির্দিষ্ট করুন। যদি তা সম্ভব না হয়, আপনি মাইগ্রেট করার সময় এই পতাকাটি অক্ষম করতে পারেন৷
android.dependency.useConstraints কনফিগারেশনের মধ্যে নির্ভরতা সীমাবদ্ধতার ব্যবহার নিয়ন্ত্রণ করে।
AGP 9.0-এ ডিফল্ট false যা শুধুমাত্র অ্যাপ্লিকেশন ডিভাইস পরীক্ষায় সীমাবদ্ধতা ব্যবহার করে (AndroidTest)। এটি true সেট করা 8.13 আচরণে ফিরে যাবে।
truefalse আপনার প্রয়োজন না হলে সর্বত্র নির্ভরতা সীমাবদ্ধতা ব্যবহার করবেন না। এই পতাকার নতুন ডিফল্ট গ্রহণ করা প্রকল্পের আমদানি প্রক্রিয়ার অপ্টিমাইজেশানগুলিকেও সক্ষম করে যা অনেকগুলি অ্যান্ড্রয়েড লাইব্রেরি সাবপ্রজেক্টের সাথে বিল্ডের জন্য আমদানি সময়কে কমিয়ে দেয়৷
aandroid.enableAppCompileTimeRClass একটি নন-ফাইনাল R ক্লাসের বিরুদ্ধে অ্যাপ্লিকেশনগুলিতে কোড কম্পাইল করুন, লাইব্রেরি সংকলনের সাথে সঙ্গতিপূর্ণ অ্যাপ্লিকেশন সংকলন আনয়ন করুন।
এটি বৃদ্ধিশীলতা উন্নত করে এবং রিসোর্স প্রসেসিং প্রবাহে ভবিষ্যত কর্মক্ষমতা অপ্টিমাইজেশনের জন্য পথ প্রশস্ত করে।
falsetrue অনেক প্রকল্প কোনো উৎস পরিবর্তন ছাড়াই নতুন আচরণ গ্রহণ করতে পারে। যদি R শ্রেণীর ক্ষেত্রগুলি এমন কোথাও ব্যবহার করা হয় যেখানে একটি ধ্রুবক প্রয়োজন, যেমন সুইচ কেস, রিফ্যাক্টর ব্যবহার করার জন্য চেইনড ইফ স্টেটমেন্ট।
android.sdk.defaultTargetSdkToCompileSdkIfUnset অ্যাপ এবং পরীক্ষায় টার্গেট SDK সংস্করণের জন্য ডিফল্ট মান হিসাবে কম্পাইল SDK সংস্করণ ব্যবহার করে।
এই পরিবর্তনের আগে, টার্গেট SDK সংস্করণটি min SDK সংস্করণে ডিফল্ট হবে৷
falsetrue অ্যাপ্লিকেশান এবং পরীক্ষার জন্য স্পষ্টভাবে লক্ষ্য SDK সংস্করণ নির্দিষ্ট করুন৷
android.onlyEnableUnitTestForTheTestedBuildType শুধুমাত্র পরীক্ষিত বিল্ড টাইপের জন্য ইউনিট পরীক্ষার উপাদান তৈরি করে।
ডিফল্ট প্রকল্পে এটি ডিবাগের জন্য একটি একক ইউনিট পরীক্ষায় পরিণত হয়, যেখানে পূর্ববর্তী আচরণটি ছিল ডিবাগ বা প্রকাশের জন্য ইউনিট পরীক্ষা চালানো।
falsetrue আপনার প্রোজেক্টের ডিবাগ এবং রিলিজ উভয়ের জন্য চালানোর জন্য পরীক্ষার প্রয়োজন না হলে, কোন পরিবর্তনের প্রয়োজন নেই।
android.proguard.failOnMissingFiles এজিপি ডিএসএল-এ নির্দিষ্ট করা ফাইলগুলির কোনো একটি ডিস্কে বিদ্যমান না থাকলে ত্রুটি সহ বিল্ড ব্যর্থ হয়। এই পরিবর্তনের আগে ফাইলের নাম টাইপ করার ফলে ফাইলগুলি নীরবে উপেক্ষা করা হবে। falsetrue কোনো অবৈধ proguard ফাইল ঘোষণা সরান
android.r8.optimizedResourceShrinking ক্লাস এবং অ্যান্ড্রয়েড রিসোর্স একসাথে বিবেচনা করে R8 কম অ্যান্ড্রয়েড রিসোর্স রাখার অনুমতি দেয়। falsetrue আপনার প্রোজেক্টের রাখার নিয়ম ইতিমধ্যেই সম্পূর্ণ হলে, কোন পরিবর্তনের প্রয়োজন নেই।
android.r8.strictFullModeForKeepRules যখন একটি ক্লাস রাখা হয় তখন ডিফল্ট কনস্ট্রাক্টরকে অন্তর্নিহিতভাবে না রেখে R8-কে কম রাখার অনুমতি দেয়। অর্থাৎ, -keep class A আর বোঝায় না -keep class A { <init>(); }
falsetrue আপনার প্রোজেক্টের রাখার নিয়ম ইতিমধ্যেই সম্পূর্ণ হলে, কোন পরিবর্তনের প্রয়োজন নেই।

-keep class A পরিবর্তে -keep class A { <init>(); } আপনার প্রজেক্টের যেকোন ক্ষেত্রে নিয়ম রাখুন যেখানে আপনার ডিফল্ট কনস্ট্রাক্টর রাখা দরকার।
android.defaults.buildfeatures.resvalues সমস্ত সাবপ্রজেক্টে resValues ​​সক্ষম করে truefalse সেই প্রকল্পগুলির গ্র্যাডল বিল্ড ফাইলগুলিতে নিম্নলিখিতগুলি সেট করে কেবলমাত্র যে সাবপ্রকল্পগুলির জন্য এটি প্রয়োজন সেগুলিতে resValues ​​সক্ষম করুন:
android {
  buildFeatures {
    resValues = true
  }
}
android.defaults.buildfeatures.shaders সমস্ত সাবপ্রজেক্টে শেডার সংকলন সক্ষম করে truefalse শেডার কম্পাইলেশন সক্ষম করুন শুধুমাত্র সাবপ্রজেক্টগুলিতে যেগুলি শেডারগুলিকে কম্পাইল করার জন্য সেই প্রোজেক্টগুলির গ্রেডল বিল্ড ফাইলগুলিতে নিম্নলিখিতগুলি সেট করে:
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 এ অন্তর্ভুক্ত। falsetrue আপনি 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 falsetrue প্রকাশিত লাইব্রেরিগুলিকে অসঙ্গত নিয়মগুলি সরিয়ে দেওয়া উচিত৷ অভ্যন্তরীণ লাইব্রেরিগুলির পরিবর্তে একটি অ্যাপ মডিউলের একটি প্রোগার্ডফাইলে যে কোনও বেমানান তবে প্রয়োজনীয় নিয়মগুলি সরানো উচিত। android.r8.globalOptionsInConsumerRules.disallowed=false সেট করে অপ্ট আউট করুন। একবার আপনার সমস্ত ভোক্তার কিপ ফাইলগুলি সামঞ্জস্যপূর্ণ হয়ে গেলে, অপ্ট আউট সরিয়ে দিন।

অপসারিত বৈশিষ্ট্য

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 নিম্নলিখিত কার্যকারিতা সরিয়ে দেয়:

ডিএসএল পরিবর্তন করা হয়েছে

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 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 সরিয়ে দেয়:

সরানো APIs

অ্যান্ড্রয়েড গ্রেডল প্লাগইন 9.0 সরিয়ে দেয়:

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

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
extractNativeLibs এবং useEmbeddedDex ম্যানিফেস্ট থেকে আসা উচিত নয়
AGP 9.0.0-alpha09-এ R8 থেকে সতর্কতা
লিন্ট
অন্তর্নির্মিত Kotlin META-INF এ .kotlin_module যোগ করে না
লিন্ট ক্লাসপথে বিভিন্ন সংস্করণে ডুপ্লিকেট ক্লাস রয়েছে
প্রাইভেট রিসোর্স ওভাররাইডিং কাজ করছে না (টুল:ওভাররাইড = "ট্রু")

Android Gradle প্লাগইন 9.0.0-alpha09

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
`লেগেসি-ক্যাপ্ট` প্লাগইন `কটলিন-ক্যাপ্ট` এর বিপরীতে টীকা প্রক্রিয়াকরণ এড়িয়ে যায়
compileSdkSpec.minorApiLevel SettingsExtension এর সাথে কাজ করছে না
[ফিউজড লিব - পাবলিক] জেনারেটেড ফিউজড লাইব্রেরিতে সোর্স অন্তর্ভুক্ত নয়

Android Gradle প্লাগইন 9.0.0-alpha08

স্থায়ী সমস্যা
AGP 9.0.0-alpha08-এ কোনো পাবলিক সমস্যা স্থির হিসাবে চিহ্নিত করা হয়নি

Android Gradle প্লাগইন 9.0.0-alpha07

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
কোড তৈরির কাজ থাকলে একটি বিল্ড ব্যর্থ হয়
`android.builtInKotlin=false` এবং `android.newDsl=false` এবং `android.enableLegacyVariantApi=false` এর সাথে, `kotlin-android` প্লাগইন ব্যবহার করে ব্যর্থ হবে "API 'applicationVariants' অপ্রচলিত"
kotlin.stdlib.default.dependency=false যখন অন্তর্নির্মিত Kotlin unversioned kotlin-stdlib সমাধান করতে ব্যর্থ হয়
DexData ক্লিনআপ প্রতিরোধ না করেই একটি ফাইল খোলে
AndroidSourceDirectorySet এজিপি 9.0-এ প্যাটার্নফিল্টারেবল প্রসারিত করা বন্ধ করা উচিত
শুধুমাত্র পরীক্ষা মডিউলে টেস্ট ফিক্সচার ত্রুটি
পরীক্ষার ফিক্সচারে প্রসঙ্গ রিসিভার ব্যবহার করার সময় ভুল ত্রুটি
টেস্টফিক্সচারে কোটলিন কোডের জন্য ভুল IDE ত্রুটি

Android Gradle প্লাগইন 9.0.0-alpha06

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
নতুন অপ্টিমাইজেশন ডিএসএল ডিফল্টরূপে configuration.txt তৈরি করে না
AGP 8.13.0 একটি মডিউলে নেভি গ্রাফ যাচাই করতে ব্যর্থ হয়
AGP অবচয়িত Gradle API ব্যবহার করে: মাল্টি-স্ট্রিং নোটেশন
minSdkVersion >=21 সহ লিগ্যাসি মাল্টিডেক্স লাইব্রেরি ব্যবহার করার চেষ্টা করা ব্যবহারকারীদের সতর্ক করুন৷
লিন্ট
Lint ChecksSdkIntAtLeast চেক টীকা করা মান সঠিক কিনা তা পরীক্ষা করে না

Android Gradle প্লাগইন 9.0.0-alpha05

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
android.proguard.failOnMissingFiles consumerProguardFiles এর জন্য কাজ করছে না
Kotlin Gradle প্লাগইন নির্ভরতা 2.2.10-এ আপডেট করুন
KGP API ব্যবহার করে KotlinJvmAndroidCompilation তৈরি করুন
কোটলিন সুস্পষ্ট API মোড পরীক্ষার উত্সগুলিতে প্রয়োগ করা হয়েছে৷
লিন্ট
লিন্ট নিক্ষেপের সতর্কতা "K2 ক্যাশে পরিষ্কার করা যায়নি"

Android Gradle প্লাগইন 9.0.0-alpha04

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
এজিপি 9.0-তে জাভা 8 থেকে জাভা 11-এ ডিফল্ট উত্স/টার্গেট জাভা সংস্করণ পরিবর্তন করুন
android.useAndroidX ডিফল্ট সত্যে ফ্লিপ করুন
বিল্ট-ইন কোটলিনের সাথে ক্যাপ্ট প্লাগইন প্রয়োগ করার সময় ভাল ব্যতিক্রম।
লিন্ট
লিন্ট নিক্ষেপের সতর্কতা "K2 ক্যাশে পরিষ্কার করা যায়নি"

Android Gradle প্লাগইন 9.0.0-alpha03

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
যখন `isIncludeAndroidResources` সক্ষম করা থাকে, তখন `প্রসেস{ভেরিয়েন্ট}ইউনিটটেস্ট ম্যানিফেস্ট` টুলগুলিকে একত্রিত করতে ব্যর্থ হয়: AGP 8.12.0-এ ওভাররাইড লাইব্রেরি ব্যবহার
AGP জেভিএম পরীক্ষার কাজগুলির জন্য গ্রেডলে অবচয় সতর্কতা সৃষ্টি করছে
DependencyReportTask কনফিগারেশন ক্যাশের সাথে বেমানান
লিন্ট
বাগ: অব্যবহৃত সংস্থানগুলি অপসারণ করা তাদের অনুবাদগুলিকেও সরিয়ে দেয় না এবং এটি সম্পর্কে জিজ্ঞাসাও করে না

Android Gradle প্লাগইন 9.0.0-alpha02

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
প্রগার্ড ফাইল না থাকলে বিল্ড ব্যর্থ হয়
বিল্ড কনফিগার ডিফল্ট gradle.properties পতাকা সরান
minSdk-এর পরিবর্তে compileSdk-এর উপর ভিত্তি করে অ্যাপের targetSdk ডিফল্ট মান পরিবর্তন করুন

Android Gradle প্লাগইন 9.0.0-alpha01

স্থায়ী সমস্যা
অ্যান্ড্রয়েড গ্রেডল প্লাগইন
AGP 9.0-এ অবহেলিত AndroidSourceSet.jni সরান
AGP 9.0 এ Installation.installOptions() সরান
AGP 9.0 এ BuildType.isRenderscriptDebuggable সরান।
android.defaults.buildfeatures.renderscript সরান
Gradle পরিচালিত ডিভাইসের সাথে `com.android.kotlin.multiplatform.library` ক্র্যাশ
`android.defaults.buildfeatures.aidl` ডিফল্ট gradle.properties পতাকা সরান